diff --git a/lib/reducers/thread-activity-reducer.js b/lib/reducers/thread-activity-reducer.js --- a/lib/reducers/thread-activity-reducer.js +++ b/lib/reducers/thread-activity-reducer.js @@ -1,5 +1,9 @@ // @flow +import { + deleteThreadActionTypes, + leaveThreadActionTypes, +} from '../actions/thread-actions.js'; import { logOutActionTypes, deleteAccountActionTypes, @@ -7,6 +11,8 @@ import type { BaseAction } from '../types/redux-types.js'; import type { ThreadActivityStore } from '../types/thread-activity-types.js'; import { updateThreadLastNavigatedActionType } from '../types/thread-activity-types.js'; +import { updateTypes } from '../types/update-types-enum.js'; +import type { ClientUpdateInfo } from '../types/update-types.js'; import { setNewSessionActionType } from '../utils/action-utils.js'; function reduceThreadActivity( @@ -23,6 +29,24 @@ }, }; return updatedThreadActivityStore; + } else if ( + action.type === leaveThreadActionTypes.success || + action.type === deleteThreadActionTypes.success + ) { + const { newUpdates } = action.payload.updatesResult; + if (newUpdates.length === 0) { + return state; + } + + let updatedState = { ...state }; + for (const update: ClientUpdateInfo of newUpdates) { + if (update.type === updateTypes.DELETE_THREAD) { + const { [update.threadID]: _, ...stateSansRemovedThread } = + updatedState; + updatedState = stateSansRemovedThread; + } + } + return updatedState; } else if ( action.type === logOutActionTypes.success || action.type === deleteAccountActionTypes.success ||