diff --git a/keyserver/src/utils/validation-utils.js b/keyserver/src/utils/validation-utils.js --- a/keyserver/src/utils/validation-utils.js +++ b/keyserver/src/utils/validation-utils.js @@ -5,8 +5,8 @@ import type { PolicyType } from 'lib/facts/policies.js'; import { hasMinCodeVersion, - FUTURE_CODE_VERSION, NEXT_WEB_CODE_VERSION, + NEXT_NATIVE_CODE_VERSION, } from 'lib/shared/version-utils.js'; import { type PlatformDetails } from 'lib/types/device-types.js'; import { ServerError } from 'lib/utils/errors.js'; @@ -39,7 +39,7 @@ if ( hasMinCodeVersion(viewer.platformDetails, { - native: FUTURE_CODE_VERSION, + native: NEXT_NATIVE_CODE_VERSION, web: NEXT_WEB_CODE_VERSION, }) && convertToNewIDSchema @@ -74,7 +74,7 @@ if ( (hasMinCodeVersion(platformDetails, { - native: FUTURE_CODE_VERSION, + native: NEXT_NATIVE_CODE_VERSION, web: NEXT_WEB_CODE_VERSION, }) && convertToNewIDSchema) || diff --git a/native/redux/persist.js b/native/redux/persist.js --- a/native/redux/persist.js +++ b/native/redux/persist.js @@ -7,6 +7,15 @@ import { createTransform } from 'redux-persist'; import type { Transform } from 'redux-persist/es/types.js'; +import { + convertEntryStoreToNewIDSchema, + convertInviteLinksStoreToNewIDSchema, + convertMessageStoreToNewIDSchema, + convertRawMessageInfoToNewIDSchema, + convertRawThreadInfoToNewIDSchema, + convertCalendarFilterToNewIDSchema, + convertConnectionInfoToNewIDSchema, +} from 'lib/_generated/migration-utils.js'; import { type ReportStoreOperation, type ClientDBReportStoreOperation, @@ -46,6 +55,8 @@ translateClientDBMessageInfoToRawMessageInfo, translateRawMessageInfoToClientDBMessageInfo, } from 'lib/utils/message-ops-utils.js'; +import { generateIDSchemaMigrationOpsForDrafts } from 'lib/utils/migration-utils.js'; +import { entries } from 'lib/utils/objects.js'; import { defaultNotifPermissionAlertInfo } from 'lib/utils/push-alerts.js'; import { convertClientDBThreadInfoToRawThreadInfo, @@ -54,7 +65,11 @@ } from 'lib/utils/thread-ops-utils.js'; import { getUUID } from 'lib/utils/uuid.js'; -import { updateClientDBThreadStoreThreadInfos } from './client-db-utils.js'; +import { + updateClientDBMessageStoreMessages, + updateClientDBMessageStoreThreads, + updateClientDBThreadStoreThreadInfos, +} from './client-db-utils.js'; import { migrateThreadStoreForEditThreadPermissions } from './edit-thread-permission-migration.js'; import { persistMigrationForManagePinsThreadPermission } from './manage-pins-permission-migration.js'; import type { AppState } from './state-types.js'; @@ -577,6 +592,65 @@ } return state; }, + [43]: async (state: AppState) => { + state = await updateClientDBMessageStoreThreads( + state, + translatedThreadMessageInfos => + Object.fromEntries( + entries(translatedThreadMessageInfos).map( + ([id, translatedThreadMessageInfo]) => [ + '256|' + id, + translatedThreadMessageInfo, + ], + ), + ), + ); + if (state.cookie === null) { + return state; + } + state = updateClientDBThreadStoreThreadInfos( + state, + threadStoreThreadInfos => + Object.fromEntries( + entries(threadStoreThreadInfos).map(([id, threadInfo]) => [ + '256|' + id, + convertRawThreadInfoToNewIDSchema(threadInfo), + ]), + ), + ); + if (state.cookie === null) { + return state; + } + state = updateClientDBMessageStoreMessages(state, messageInfos => + messageInfos.map(convertRawMessageInfoToNewIDSchema), + ); + if (state.cookie === null) { + return state; + } + + const { drafts } = await commCoreModule.getClientDBStore(); + const draftOperations = generateIDSchemaMigrationOpsForDrafts(drafts); + try { + commCoreModule.processDraftStoreOperations(draftOperations); + } catch (exception) { + console.log(exception); + return { ...state, cookie: null }; + } + + return { + ...state, + entryStore: convertEntryStoreToNewIDSchema(state.entryStore), + messageStore: convertMessageStoreToNewIDSchema(state.messageStore), + calendarFilters: state.calendarFilters.map( + convertCalendarFilterToNewIDSchema, + ), + connection: convertConnectionInfoToNewIDSchema(state.connection), + watchedThreadIDs: state.watchedThreadIDs.map(id => '256|' + id), + inviteLinksStore: convertInviteLinksStoreToNewIDSchema( + state.inviteLinksStore, + ), + }; + }, }; // After migration 31, we'll no longer want to persist `messageStore.messages` @@ -671,7 +745,7 @@ 'storeLoaded', ], debug: __DEV__, - version: 42, + version: 43, transforms: [messageStoreMessagesBlocklistTransform, reportStoreTransform], migrate: (createAsyncMigrate(migrations, { debug: __DEV__ }): any), timeout: ((__DEV__ ? 0 : undefined): number | void),