Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F32558585
D9815.1767266987.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
D9815.1767266987.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,6 +1,5 @@
// @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';
@@ -11,11 +10,11 @@
} from '../actions/keyserver-actions.js';
import { siweAuthActionTypes } from '../actions/siwe-actions.js';
import {
- logInActionTypes,
- resetUserStateActionType,
logOutActionTypes,
deleteAccountActionTypes,
registerActionTypes,
+ logInActionTypes,
+ resetUserStateActionType,
} from '../actions/user-actions.js';
import { queueActivityUpdatesActionType } from '../types/activity-types.js';
import type { KeyserverStore } from '../types/keyserver-types';
@@ -24,6 +23,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';
@@ -35,18 +36,7 @@
state: KeyserverStore,
action: BaseAction,
): KeyserverStore {
- if (
- action.type === logOutActionTypes.success ||
- action.type === deleteAccountActionTypes.success
- ) {
- state = {
- keyserverInfos: {
- [ashoatKeyserverID]: {
- ...state.keyserverInfos[ashoatKeyserverID],
- },
- },
- };
- } else if (action.type === addKeyserverActionType) {
+ if (action.type === addKeyserverActionType) {
return {
...state,
keyserverInfos: {
@@ -94,6 +84,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
@@ -273,27 +278,75 @@
...state,
keyserverInfos,
};
+ } else if (
+ action.type === logOutActionTypes.success ||
+ action.type === deleteAccountActionTypes.success
+ ) {
+ // We want to remove all keyservers but Ashoat's keyserver
+ const oldConnection = state.keyserverInfos[ashoatKeyserverID].connection;
+
+ const keyserverInfos = {
+ [ashoatKeyserverID]: {
+ ...state.keyserverInfos[ashoatKeyserverID],
+ connection: { ...oldConnection, queuedActivityUpdates: [] },
+ },
+ };
+
+ state = {
+ ...state,
+ keyserverInfos,
+ };
+ } else if (action.type === setLateResponseActionType) {
+ const { messageID, isLate, keyserverID } = action.payload;
+ const lateResponsesSet = new Set<number>(
+ 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
Thu, Jan 1, 11:29 AM (2 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5876100
Default Alt Text
D9815.1767266987.diff (7 KB)
Attached To
Mode
D9815: [lib] Inline reduceConnectionInfo pt.2
Attached
Detach File
Event Timeline
Log In to Comment