diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2019-03-07 22:17:52 +0100 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2019-03-08 01:00:14 +0100 |
commit | 6fe48dd050a84841c09bb1290a3e3cf99a795824 (patch) | |
tree | 6d7e860b5909d8c78c14b129766f88a7a9df9300 /app/javascript/flavours/glitch/actions | |
parent | 5528719bc9fd4e8dca0e5e51de183a6dd27b4d55 (diff) |
[Glitch] Fix public timelines being broken by new toots when they are not mounted
Port be1c634b2b4372a525d304d2ff830392f04c5cc5 to glitch-soc
Diffstat (limited to 'app/javascript/flavours/glitch/actions')
-rw-r--r-- | app/javascript/flavours/glitch/actions/compose.js | 4 | ||||
-rw-r--r-- | app/javascript/flavours/glitch/actions/streaming.js | 6 | ||||
-rw-r--r-- | app/javascript/flavours/glitch/actions/timelines.js | 8 |
3 files changed, 17 insertions, 1 deletions
diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index 7fa35351f..ac09adceb 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -175,7 +175,9 @@ export function submitCompose(routerHistory) { // To make the app more responsive, immediately get the status into the columns const insertIfOnline = (timelineId) => { - if (getState().getIn(['timelines', timelineId, 'items', 0]) !== null) { + const timeline = getState().getIn(['timelines', timelineId]); + + if (timeline && timeline.get('items').size > 0 && timeline.getIn(['items', 0]) !== null && timeline.get('online')) { dispatch(updateTimeline(timelineId, { ...response.data })); } }; diff --git a/app/javascript/flavours/glitch/actions/streaming.js b/app/javascript/flavours/glitch/actions/streaming.js index 8c1bd1f08..b5dd70989 100644 --- a/app/javascript/flavours/glitch/actions/streaming.js +++ b/app/javascript/flavours/glitch/actions/streaming.js @@ -3,6 +3,7 @@ import { updateTimeline, deleteFromTimelines, expandHomeTimeline, + connectTimeline, disconnectTimeline, } from './timelines'; import { updateNotifications, expandNotifications } from './notifications'; @@ -15,7 +16,12 @@ export function connectTimelineStream (timelineId, path, pollingRefresh = null, return connectStream (path, pollingRefresh, (dispatch, getState) => { const locale = getState().getIn(['meta', 'locale']); + return { + onConnect() { + dispatch(connectTimeline(timelineId)); + }, + onDisconnect() { dispatch(disconnectTimeline(timelineId)); }, diff --git a/app/javascript/flavours/glitch/actions/timelines.js b/app/javascript/flavours/glitch/actions/timelines.js index c6866f81f..f218ee06b 100644 --- a/app/javascript/flavours/glitch/actions/timelines.js +++ b/app/javascript/flavours/glitch/actions/timelines.js @@ -12,6 +12,7 @@ export const TIMELINE_EXPAND_FAIL = 'TIMELINE_EXPAND_FAIL'; export const TIMELINE_SCROLL_TOP = 'TIMELINE_SCROLL_TOP'; +export const TIMELINE_CONNECT = 'TIMELINE_CONNECT'; export const TIMELINE_DISCONNECT = 'TIMELINE_DISCONNECT'; export function updateTimeline(timeline, status, accept) { @@ -145,6 +146,13 @@ export function scrollTopTimeline(timeline, top) { }; }; +export function connectTimeline(timeline) { + return { + type: TIMELINE_CONNECT, + timeline, + }; +}; + export function disconnectTimeline(timeline) { return { type: TIMELINE_DISCONNECT, |