Page MenuHomePhabricator

D5710.id18856.diff
No OneTemporary

D5710.id18856.diff

diff --git a/lib/reducers/draft-reducer.js b/lib/reducers/draft-reducer.js
--- a/lib/reducers/draft-reducer.js
+++ b/lib/reducers/draft-reducer.js
@@ -1,8 +1,8 @@
// @flow
+import { setClientDBStoreActionType } from '../actions/client-db-store-actions';
import {
moveDraftActionType,
- setDraftStoreDrafts,
updateDraftActionType,
} from '../actions/draft-actions';
import {
@@ -72,9 +72,9 @@
},
},
};
- } else if (action.type === setDraftStoreDrafts) {
+ } else if (action.type === setClientDBStoreActionType) {
const drafts = {};
- for (const dbDraftInfo of action.payload) {
+ for (const dbDraftInfo of action.payload.drafts) {
drafts[dbDraftInfo.key] = dbDraftInfo.text;
}
return {
diff --git a/lib/reducers/message-reducer.js b/lib/reducers/message-reducer.js
--- a/lib/reducers/message-reducer.js
+++ b/lib/reducers/message-reducer.js
@@ -14,6 +14,7 @@
import _pickBy from 'lodash/fp/pickBy';
import _uniq from 'lodash/fp/uniq';
+import { setClientDBStoreActionType } from '../actions/client-db-store-actions';
import {
createEntryActionTypes,
saveEntryActionTypes,
@@ -30,7 +31,6 @@
messageStorePruneActionType,
createLocalMessageActionType,
fetchSingleMostRecentMessagesFromThreadsActionTypes,
- setMessageStoreMessages,
} from '../actions/message-actions';
import { sendMessageReportActionTypes } from '../actions/message-report-actions';
import {
@@ -1287,7 +1287,7 @@
messages: processedMessageStore.messages,
},
};
- } else if (action.type === setMessageStoreMessages) {
+ } else if (action.type === setClientDBStoreActionType) {
const {
messageStoreOperations,
messageStore: updatedMessageStore,
@@ -1306,7 +1306,7 @@
}
const threadsNeedMsgIDsResorting = new Set();
const actionPayloadMessages = translateClientDBMessageInfosToRawMessageInfos(
- action.payload,
+ action.payload.messages,
);
// When starting the app on native, we filter out any local-only multimedia
diff --git a/lib/reducers/message-reducer.test.js b/lib/reducers/message-reducer.test.js
--- a/lib/reducers/message-reducer.test.js
+++ b/lib/reducers/message-reducer.test.js
@@ -288,8 +288,15 @@
currentAsOf: 1234567890123,
},
{
- type: 'SET_MESSAGE_STORE_MESSAGES',
- payload: clientDBMessages,
+ type: 'SET_CLIENT_DB_STORE',
+ payload: {
+ currentUserID: '',
+ drafts: [],
+ threadStore: {
+ threadInfos: {},
+ },
+ messages: clientDBMessages,
+ },
},
{
[88471]: createPendingThread({
diff --git a/lib/reducers/thread-reducer.js b/lib/reducers/thread-reducer.js
--- a/lib/reducers/thread-reducer.js
+++ b/lib/reducers/thread-reducer.js
@@ -6,6 +6,7 @@
setThreadUnreadStatusActionTypes,
updateActivityActionTypes,
} from '../actions/activity-actions';
+import { setClientDBStoreActionType } from '../actions/client-db-store-actions.js';
import { saveMessagesActionType } from '../actions/message-actions';
import {
changeThreadSettingsActionTypes,
@@ -15,7 +16,6 @@
changeThreadMemberRolesActionTypes,
joinThreadActionTypes,
leaveThreadActionTypes,
- setThreadStoreActionType,
} from '../actions/thread-actions';
import {
logOutActionTypes,
@@ -469,9 +469,9 @@
newThreadInconsistencies: [],
threadStoreOperations,
};
- } else if (action.type === setThreadStoreActionType) {
+ } else if (action.type === setClientDBStoreActionType) {
return {
- threadStore: action.payload,
+ threadStore: action.payload.threadStore,
newThreadInconsistencies: [],
threadStoreOperations: [],
};
diff --git a/native/redux/redux-setup.js b/native/redux/redux-setup.js
--- a/native/redux/redux-setup.js
+++ b/native/redux/redux-setup.js
@@ -7,6 +7,7 @@
import { persistStore, persistReducer } from 'redux-persist';
import thunk from 'redux-thunk';
+import { setClientDBStoreActionType } from 'lib/actions/client-db-store-actions';
import { setDeviceTokenActionTypes } from 'lib/actions/device-actions';
import {
logOutActionTypes,
@@ -352,6 +353,26 @@
storeLoaded: true,
};
}
+ if (action.type === setClientDBStoreActionType) {
+ state = {
+ ...state,
+ storeLoaded: true,
+ };
+ const currentLoggedInUserID = state.currentUserInfo?.anonymous
+ ? undefined
+ : state.currentUserInfo?.id;
+ const actionCurrentLoggedInUserID = action.payload.currentUserID;
+ if (
+ !currentLoggedInUserID ||
+ !actionCurrentLoggedInUserID ||
+ actionCurrentLoggedInUserID !== currentLoggedInUserID
+ ) {
+ // If user is logged out now, was logged out at the time action was
+ // dispatched or their ID changed between action dispatch and a
+ // call to reducer we ignore the SQLite data since it is not valid
+ return state;
+ }
+ }
const baseReducerResult = baseReducer(state, (action: BaseAction));
state = baseReducerResult.state;

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 25, 3:19 PM (20 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2579943
Default Alt Text
D5710.id18856.diff (4 KB)

Event Timeline