92 lines
2.3 KiB
JavaScript
92 lines
2.3 KiB
JavaScript
import { connectStream } from '../stream'
|
|
import {
|
|
deleteFromTimelines,
|
|
connectTimeline,
|
|
disconnectTimeline,
|
|
updateTimelineQueue,
|
|
} from './timelines'
|
|
import { updateNotificationsQueue } from './notifications'
|
|
import { manageIncomingChatMessage } from './chat_messages'
|
|
import { fetchFilters } from './filters'
|
|
import { getLocale } from '../locales'
|
|
import { handleComposeSubmit } from './compose'
|
|
|
|
const { messages } = getLocale()
|
|
|
|
/**
|
|
*
|
|
*/
|
|
export const connectTimelineStream = (timelineId, path, pollingRefresh = null, accept = null) => {
|
|
|
|
return connectStream (path, pollingRefresh, (dispatch, getState) => {
|
|
const locale = getState().getIn(['meta', 'locale'])
|
|
|
|
return {
|
|
onConnect() {
|
|
dispatch(connectTimeline(timelineId))
|
|
},
|
|
onDisconnect() {
|
|
dispatch(disconnectTimeline(timelineId))
|
|
},
|
|
onReceive (data) {
|
|
switch(data.event) {
|
|
case 'update':
|
|
dispatch(updateTimelineQueue(timelineId, JSON.parse(data.payload), accept))
|
|
break
|
|
case 'delete':
|
|
dispatch(deleteFromTimelines(data.payload))
|
|
break
|
|
case 'notification':
|
|
dispatch(updateNotificationsQueue(JSON.parse(data.payload), messages, locale, window.location.pathname))
|
|
break
|
|
case 'filters_changed':
|
|
dispatch(fetchFilters())
|
|
break
|
|
}
|
|
},
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
export const connectStatusUpdateStream = () => {
|
|
|
|
return connectStream('statuscard', null, (dispatch, getState) => {
|
|
|
|
return {
|
|
onConnect() {},
|
|
onDisconnect() {},
|
|
onReceive (data) {
|
|
if (!data['event'] || !data['payload']) return
|
|
if (data.event === 'update') {
|
|
handleComposeSubmit(dispatch, getState, {data: JSON.parse(data.payload)}, null)
|
|
}
|
|
},
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
export const connectUserStream = () => connectTimelineStream('home', 'user')
|
|
|
|
/**
|
|
*
|
|
*/
|
|
export const connectChatMessagesStream = (accountId) => {
|
|
return connectStream(`chat_messages`, null, (dispatch, getState) => {
|
|
return {
|
|
onConnect() {},
|
|
onDisconnect() {},
|
|
onReceive (data) {
|
|
if (!data['event'] || !data['payload']) return
|
|
if (data.event === 'notification') {
|
|
dispatch(manageIncomingChatMessage(JSON.parse(data.payload)))
|
|
}
|
|
},
|
|
}
|
|
})
|
|
} |