diff --git a/lib/reducers/community-reducer.js b/lib/reducers/community-reducer.js --- a/lib/reducers/community-reducer.js +++ b/lib/reducers/community-reducer.js @@ -1,5 +1,6 @@ // @flow +import { setClientDBStoreActionType } from '../actions/client-db-store-actions.js'; import { addCommunityActionType } from '../actions/community-actions.js'; import { communityStoreOpsHandlers, @@ -31,6 +32,25 @@ communityStore: processStoreOps(state, [replaceOperation]), communityStoreOperations: [replaceOperation], }; + } else if (action.type === setClientDBStoreActionType) { + const newCommunityInfo = action.payload.communityInfos; + + if (!newCommunityInfo) { + return { + communityStore: state, + communityStoreOperations: [], + }; + } + + const newCommunityStore: CommunityStore = { + ...state, + communityInfos: newCommunityInfo, + }; + + return { + communityStore: newCommunityStore, + communityStoreOperations: [], + }; } return { 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 @@ -292,6 +292,7 @@ reports: [], users: {}, keyserverInfos: {}, + communityInfos: {}, }, }, { diff --git a/lib/types/store-ops-types.js b/lib/types/store-ops-types.js --- a/lib/types/store-ops-types.js +++ b/lib/types/store-ops-types.js @@ -1,5 +1,6 @@ // @flow +import type { CommunityInfos } from './community-types.js'; import type { DraftStoreOperation, ClientDBDraftStoreOperation, @@ -80,4 +81,5 @@ +reports: ?$ReadOnlyArray, +users: ?UserInfos, +keyserverInfos: ?KeyserverInfos, + +communityInfos: ?CommunityInfos, }; diff --git a/native/data/sqlite-data-handler.js b/native/data/sqlite-data-handler.js --- a/native/data/sqlite-data-handler.js +++ b/native/data/sqlite-data-handler.js @@ -7,6 +7,7 @@ import { MediaCacheContext } from 'lib/components/media-cache-provider.react.js'; import { useStaffContext } from 'lib/components/staff-provider.react.js'; import { resolveKeyserverSessionInvalidation } from 'lib/keyserver-conn/recovery-utils.js'; +import { communityStoreOpsHandlers } from 'lib/ops/community-store-ops.js'; import { keyserverStoreOpsHandlers } from 'lib/ops/keyserver-store-ops.js'; import { reportStoreOpsHandlers } from 'lib/ops/report-store-ops.js'; import { threadStoreOpsHandlers } from 'lib/ops/thread-store-ops.js'; @@ -179,6 +180,7 @@ reports, users, keyservers, + communities, } = await commCoreModule.getClientDBStore(); const threadInfosFromDB = threadStoreOpsHandlers.translateClientDBData(threads); @@ -187,6 +189,8 @@ const usersFromDB = userStoreOpsHandlers.translateClientDBData(users); const keyserverInfosFromDB = keyserverStoreOpsHandlers.translateClientDBData(keyservers); + const communityInfosFromDB = + communityStoreOpsHandlers.translateClientDBData(communities); dispatch({ type: setClientDBStoreActionType, @@ -199,6 +203,7 @@ reports: reportsFromDB, users: usersFromDB, keyserverInfos: keyserverInfosFromDB, + communities: communityInfosFromDB, }, }); } catch (setStoreException) { diff --git a/web/database/utils/store.js b/web/database/utils/store.js --- a/web/database/utils/store.js +++ b/web/database/utils/store.js @@ -25,6 +25,7 @@ reports: null, users: null, keyserverInfos: defaultWebState.keyserverStore.keyserverInfos, + communityInfos: null, }; const data = await databaseModule.schedule({ type: workerRequestMessageTypes.GET_CLIENT_STORE, @@ -59,6 +60,14 @@ ), }; } + if (data?.store?.communities) { + result = { + ...result, + communityInfos: communityStoreOpsHandlers.translateClientDBData( + data.store.communities, + ), + }; + } return result; }