diff --git a/lib/actions/backup-actions.js b/lib/actions/backup-actions.js new file mode 100644 --- /dev/null +++ b/lib/actions/backup-actions.js @@ -0,0 +1,9 @@ +// @flow + +const createUserKeysBackupActionTypes = Object.freeze({ + started: 'CREATE_USER_KEYS_BACKUP_STARTED', + success: 'CREATE_USER_KEYS_BACKUP_SUCCESS', + failed: 'CREATE_USER_KEYS_BACKUP_FAILED', +}); + +export { createUserKeysBackupActionTypes }; diff --git a/lib/reducers/backup-reducer.js b/lib/reducers/backup-reducer.js new file mode 100644 --- /dev/null +++ b/lib/reducers/backup-reducer.js @@ -0,0 +1,20 @@ +// @flow + +import { createUserKeysBackupActionTypes } from '../actions/backup-actions.js'; +import type { BackupStore } from '../types/backup-types.js'; +import type { BaseAction } from '../types/redux-types.js'; + +function reduceBackupStore( + store: BackupStore, + action: BaseAction, +): BackupStore { + if (action.type === createUserKeysBackupActionTypes.success) { + const latestBackupInfo = action.payload; + return { + latestBackupInfo, + }; + } + return store; +} + +export { reduceBackupStore }; diff --git a/lib/types/backup-types.js b/lib/types/backup-types.js --- a/lib/types/backup-types.js +++ b/lib/types/backup-types.js @@ -50,7 +50,7 @@ }, ); -type LocalLatestBackupInfo = { +export type LocalLatestBackupInfo = { +backupID: string, +timestamp: number, }; diff --git a/lib/types/redux-types.js b/lib/types/redux-types.js --- a/lib/types/redux-types.js +++ b/lib/types/redux-types.js @@ -30,6 +30,7 @@ UpdateUserAvatarRequest, UpdateUserAvatarResponse, } from './avatar-types.js'; +import type { LocalLatestBackupInfo } from './backup-types.js'; import type { CommunityStore, AddCommunityPayload, @@ -1643,6 +1644,22 @@ | { +type: 'SET_MISSING_DEVICE_LISTS', +payload: SetMissingDeviceListsPayload, + } + | { + +type: 'CREATE_USER_KEYS_BACKUP_STARTED', + +loadingInfo?: LoadingInfo, + +payload?: void, + } + | { + +type: 'CREATE_USER_KEYS_BACKUP_SUCCESS', + +payload: LocalLatestBackupInfo, + +loadingInfo: LoadingInfo, + } + | { + +type: 'CREATE_USER_KEYS_BACKUP_FAILED', + +error: true, + +payload: Error, + +loadingInfo: LoadingInfo, }, }>; 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 @@ -17,6 +17,7 @@ import { setNewSessionActionType } from 'lib/keyserver-conn/keyserver-conn-types.js'; import type { ThreadStoreOperation } from 'lib/ops/thread-store-ops.js'; import { threadStoreOpsHandlers } from 'lib/ops/thread-store-ops.js'; +import { reduceBackupStore } from 'lib/reducers/backup-reducer.js'; import { queueDBOps } from 'lib/reducers/db-ops-reducer.js'; import { reduceLoadingStatuses } from 'lib/reducers/loading-reducer.js'; import baseReducer from 'lib/reducers/master-reducer.js'; @@ -327,6 +328,7 @@ ops, notificationsCreationData, ), + backupStore: reduceBackupStore(state.backupStore, action), }; return state;