Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F2903168
D9815.id33056.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D9815.id33056.diff
View Options
diff --git a/lib/hooks/disconnected-bar.js b/lib/hooks/disconnected-bar.js
--- a/lib/hooks/disconnected-bar.js
+++ b/lib/hooks/disconnected-bar.js
@@ -22,7 +22,7 @@
}
dispatch({
type: updateDisconnectedBarActionType,
- payload: { visible: newDisconnected },
+ payload: { visible: newDisconnected, keyserverID: ashoatKeyserverID },
});
},
[disconnected, dispatch],
diff --git a/lib/reducers/connection-reducer.js b/lib/reducers/connection-reducer.js
deleted file mode 100644
--- a/lib/reducers/connection-reducer.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// @flow
-
-import {
- logOutActionTypes,
- deleteAccountActionTypes,
-} from '../actions/user-actions.js';
-import { type BaseAction } from '../types/redux-types.js';
-import {
- type ConnectionInfo,
- setLateResponseActionType,
- updateDisconnectedBarActionType,
-} from '../types/socket-types.js';
-import { setNewSessionActionType } from '../utils/action-utils.js';
-
-export default function reduceConnectionInfo(
- state: ConnectionInfo,
- action: BaseAction,
-): ConnectionInfo {
- if (
- action.type === logOutActionTypes.success ||
- action.type === deleteAccountActionTypes.success ||
- (action.type === setNewSessionActionType &&
- action.payload.sessionChange.cookieInvalidated)
- ) {
- return {
- ...state,
- queuedActivityUpdates: [],
- };
- } else if (action.type === setLateResponseActionType) {
- const { messageID, isLate } = action.payload;
- const lateResponsesSet = new Set(state.lateResponses);
- if (isLate) {
- lateResponsesSet.add(messageID);
- } else {
- lateResponsesSet.delete(messageID);
- }
- return { ...state, lateResponses: [...lateResponsesSet] };
- } else if (action.type === updateDisconnectedBarActionType) {
- return { ...state, showDisconnectedBar: action.payload.visible };
- }
- return state;
-}
diff --git a/lib/reducers/keyserver-reducer.js b/lib/reducers/keyserver-reducer.js
--- a/lib/reducers/keyserver-reducer.js
+++ b/lib/reducers/keyserver-reducer.js
@@ -1,12 +1,13 @@
// @flow
-import reduceConnectionInfo from './connection-reducer.js';
import { reduceDeviceToken } from './device-token-reducer.js';
import { unsupervisedBackgroundActionType } from './lifecycle-state-reducer.js';
import { updateActivityActionTypes } from '../actions/activity-actions.js';
import { updateLastCommunicatedPlatformDetailsActionType } from '../actions/device-actions.js';
import { siweAuthActionTypes } from '../actions/siwe-actions.js';
import {
+ logOutActionTypes,
+ deleteAccountActionTypes,
logInActionTypes,
resetUserStateActionType,
} from '../actions/user-actions.js';
@@ -17,6 +18,8 @@
fullStateSyncActionType,
incrementalStateSyncActionType,
updateConnectionStatusActionType,
+ setLateResponseActionType,
+ updateDisconnectedBarActionType,
} from '../types/socket-types.js';
import { processUpdatesActionType } from '../types/update-types.js';
import { setNewSessionActionType } from '../utils/action-utils.js';
@@ -58,6 +61,21 @@
},
};
}
+ if (action.payload.sessionChange.cookieInvalidated) {
+ state = {
+ ...state,
+ keyserverInfos: {
+ ...state.keyserverInfos,
+ [keyserverID]: {
+ ...state.keyserverInfos[keyserverID],
+ connection: {
+ ...state.keyserverInfos[keyserverID].connection,
+ queuedActivityUpdates: [],
+ },
+ },
+ },
+ };
+ }
} else if (
action.type === logInActionTypes.success ||
action.type === siweAuthActionTypes.success
@@ -226,27 +244,77 @@
...state,
keyserverInfos,
};
+ } else if (
+ action.type === logOutActionTypes.success ||
+ action.type === deleteAccountActionTypes.success
+ ) {
+ let keyserverInfos = { ...state.keyserverInfos };
+ for (const keyserverID in keyserverInfos) {
+ const oldConnection = keyserverInfos[keyserverID].connection;
+
+ keyserverInfos = {
+ ...keyserverInfos,
+ [keyserverID]: {
+ ...keyserverInfos[keyserverID],
+ connection: { ...oldConnection, queuedActivityUpdates: [] },
+ },
+ };
+ }
+ state = {
+ ...state,
+ keyserverInfos,
+ };
+ } else if (action.type === setLateResponseActionType) {
+ const { messageID, isLate, keyserverID } = action.payload;
+ const lateResponsesSet = new Set(
+ state.keyserverInfos[keyserverID].connection.lateResponses,
+ );
+ if (isLate) {
+ lateResponsesSet.add(messageID);
+ } else {
+ lateResponsesSet.delete(messageID);
+ }
+ state = {
+ ...state,
+ keyserverInfos: {
+ ...state.keyserverInfos,
+ [keyserverID]: {
+ ...state.keyserverInfos[keyserverID],
+ connection: {
+ ...state.keyserverInfos[keyserverID].connection,
+ lateResponses: [...lateResponsesSet],
+ },
+ },
+ },
+ };
+ } else if (action.type === updateDisconnectedBarActionType) {
+ const { keyserverID } = action.payload;
+ state = {
+ ...state,
+ keyserverInfos: {
+ ...state.keyserverInfos,
+ [keyserverID]: {
+ ...state.keyserverInfos[keyserverID],
+ connection: {
+ ...state.keyserverInfos[keyserverID].connection,
+ showDisconnectedBar: action.payload.visible,
+ },
+ },
+ },
+ };
}
- const connection = reduceConnectionInfo(
- state.keyserverInfos[ashoatKeyserverID].connection,
- action,
- );
const deviceToken = reduceDeviceToken(
state.keyserverInfos[ashoatKeyserverID].deviceToken,
action,
);
- if (
- connection !== state.keyserverInfos[ashoatKeyserverID].connection ||
- deviceToken !== state.keyserverInfos[ashoatKeyserverID].deviceToken
- ) {
+ if (deviceToken !== state.keyserverInfos[ashoatKeyserverID].deviceToken) {
state = {
...state,
keyserverInfos: {
...state.keyserverInfos,
[ashoatKeyserverID]: {
...state.keyserverInfos[ashoatKeyserverID],
- connection,
deviceToken,
},
},
diff --git a/lib/socket/socket.react.js b/lib/socket/socket.react.js
--- a/lib/socket/socket.react.js
+++ b/lib/socket/socket.react.js
@@ -771,7 +771,7 @@
) => {
this.props.dispatch({
type: setLateResponseActionType,
- payload: { messageID, isLate },
+ payload: { messageID, isLate, keyserverID: ashoatKeyserverID },
});
};
diff --git a/lib/types/socket-types.js b/lib/types/socket-types.js
--- a/lib/types/socket-types.js
+++ b/lib/types/socket-types.js
@@ -517,10 +517,14 @@
export type SetLateResponsePayload = {
+messageID: number,
+isLate: boolean,
+ +keyserverID: string,
};
export const updateDisconnectedBarActionType = 'UPDATE_DISCONNECTED_BAR';
-export type UpdateDisconnectedBarPayload = { +visible: boolean };
+export type UpdateDisconnectedBarPayload = {
+ +visible: boolean,
+ +keyserverID: string,
+};
export type OneTimeKeyGenerator = (inc: number) => string;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Oct 6, 9:19 PM (21 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2250922
Default Alt Text
D9815.id33056.diff (6 KB)
Attached To
Mode
D9815: [lib] Inline reduceConnectionInfo pt.2
Attached
Detach File
Event Timeline
Log In to Comment