import { updateInstanceInfo } from '../../_actions/instances' import { createStream } from '../../_actions/streaming' export function timelineObservers (store) { // stream to watch for local/federated/etc. updates. home and notification // updates are handled in timelineObservers.js let currentTimelineStream store.observe('currentTimeline', async (currentTimeline) => { if (!process.browser) { return } if (currentTimelineStream) { currentTimelineStream.close() currentTimelineStream = null if (process.env.NODE_ENV !== 'production') { window.currentTimelineStream = null } } if (!currentTimeline) { return } if (currentTimeline !== 'local' && currentTimeline !== 'federated' && !currentTimeline.startsWith('list/') && !currentTimeline.startsWith('tag/')) { return } let currentInstance = store.get('currentInstance') await updateInstanceInfo(currentInstance) let instanceInfo = store.get('currentInstanceInfo') if (!(instanceInfo && store.get('currentInstance') === currentInstance && store.get('currentTimeline') === currentTimeline)) { return } let accessToken = store.get('accessToken') currentTimelineStream = createStream(instanceInfo.urls.streaming_api, currentInstance, accessToken, currentTimeline) if (process.env.NODE_ENV !== 'production') { window.currentTimelineStream = currentTimelineStream } }) }