diff --git a/lib/utils/migration-utils.js b/lib/utils/migration-utils.js --- a/lib/utils/migration-utils.js +++ b/lib/utils/migration-utils.js @@ -22,25 +22,7 @@ function convertDraftKeyToNewIDSchema(key: string): string { const threadID = key.slice(0, -draftKeySuffix.length); - - const pendingIDContents = parsePendingThreadID(threadID); - - if (!pendingIDContents) { - return `${ashoatKeyserverID}|${key}`; - } - - const { threadType, sourceMessageID, memberIDs } = pendingIDContents; - - if (!sourceMessageID) { - return key; - } - - const convertedThreadID = getPendingThreadID( - threadType, - memberIDs, - `${ashoatKeyserverID}|${sourceMessageID}`, - ); - + const convertedThreadID = convertIDToNewSchema(threadID, ashoatKeyserverID); return `${convertedThreadID}${draftKeySuffix}`; } @@ -90,9 +72,32 @@ ); } -function convertNotificationThreadIDToNewIDSchema(threadID: string): string { +function convertIDToNewSchema(threadID: string, idPrefix: string): string { + const pendingIDContents = parsePendingThreadID(threadID); + + if (!pendingIDContents) { + return convertNonPendingIDToNewSchema(threadID, idPrefix); + } + + const { threadType, sourceMessageID, memberIDs } = pendingIDContents; + + if (!sourceMessageID) { + return threadID; + } + + return getPendingThreadID( + threadType, + memberIDs, + convertNonPendingIDToNewSchema(sourceMessageID, idPrefix), + ); +} + +function convertNonPendingIDToNewSchema( + threadID: string, + idPrefix: string, +): string { if (threadID.indexOf('|') === -1) { - return `${ashoatKeyserverID}|${threadID}`; + return `${idPrefix}|${threadID}`; } return threadID; } @@ -117,6 +122,7 @@ generateIDSchemaMigrationOpsForDrafts, convertMessageStoreThreadsToNewIDSchema, convertThreadStoreThreadInfosToNewIDSchema, - convertNotificationThreadIDToNewIDSchema, + convertNonPendingIDToNewSchema, + convertIDToNewSchema, convertNotificationMessageInfoToNewIDSchema, }; diff --git a/native/push/android.js b/native/push/android.js --- a/native/push/android.js +++ b/native/push/android.js @@ -5,9 +5,10 @@ import { mergePrefixIntoBody } from 'lib/shared/notif-utils.js'; import type { RawMessageInfo } from 'lib/types/message-types.js'; import { - convertNotificationThreadIDToNewIDSchema, + convertNonPendingIDToNewSchema, convertNotificationMessageInfoToNewIDSchema, } from 'lib/utils/migration-utils.js'; +import { ashoatKeyserverID } from 'lib/utils/validation-utils.js'; type CommAndroidNotificationsConstants = { +NOTIFICATIONS_IMPORTANCE_HIGH: number, @@ -50,7 +51,10 @@ function parseAndroidMessage(message: AndroidMessage): ParsedAndroidMessage { return { ...message, - threadID: convertNotificationThreadIDToNewIDSchema(message.threadID), + threadID: convertNonPendingIDToNewSchema( + message.threadID, + ashoatKeyserverID, + ), messageInfos: convertNotificationMessageInfoToNewIDSchema( message.messageInfos, ), diff --git a/native/push/comm-ios-notification.js b/native/push/comm-ios-notification.js --- a/native/push/comm-ios-notification.js +++ b/native/push/comm-ios-notification.js @@ -4,9 +4,10 @@ import type { RawMessageInfo } from 'lib/types/message-types.js'; import { - convertNotificationThreadIDToNewIDSchema, + convertNonPendingIDToNewSchema, convertNotificationMessageInfoToNewIDSchema, } from 'lib/utils/migration-utils.js'; +import { ashoatKeyserverID } from 'lib/utils/validation-utils.js'; const { CommIOSNotifications } = NativeModules; @@ -50,7 +51,10 @@ this.data = { ...notification, - threadID: convertNotificationThreadIDToNewIDSchema(notification.threadID), + threadID: convertNonPendingIDToNewSchema( + notification.threadID, + ashoatKeyserverID, + ), messageInfos: convertNotificationMessageInfoToNewIDSchema( notification.messageInfos, ), diff --git a/native/push/push-handler.react.js b/native/push/push-handler.react.js --- a/native/push/push-handler.react.js +++ b/native/push/push-handler.react.js @@ -33,7 +33,7 @@ } from 'lib/utils/action-utils.js'; import { convertNotificationMessageInfoToNewIDSchema, - convertNotificationThreadIDToNewIDSchema, + convertNonPendingIDToNewSchema, } from 'lib/utils/migration-utils.js'; import { type NotifPermissionAlertInfo, @@ -41,6 +41,7 @@ shouldSkipPushPermissionAlert, } from 'lib/utils/push-alerts.js'; import sleep from 'lib/utils/sleep.js'; +import { ashoatKeyserverID } from 'lib/utils/validation-utils.js'; import { parseAndroidMessage, @@ -594,8 +595,10 @@ } androidNotificationOpened = async (threadID: string) => { - const convertedThreadID = - convertNotificationThreadIDToNewIDSchema(threadID); + const convertedThreadID = convertNonPendingIDToNewSchema( + threadID, + ashoatKeyserverID, + ); this.onPushNotifBootsApp(); this.onPressNotificationForThread(convertedThreadID, true); }; diff --git a/web/push-notif/push-notifs-handler.js b/web/push-notif/push-notifs-handler.js --- a/web/push-notif/push-notifs-handler.js +++ b/web/push-notif/push-notifs-handler.js @@ -13,11 +13,12 @@ useDispatchActionPromise, useServerCall, } from 'lib/utils/action-utils.js'; -import { convertNotificationThreadIDToNewIDSchema } from 'lib/utils/migration-utils.js'; +import { convertNonPendingIDToNewSchema } from 'lib/utils/migration-utils.js'; import { shouldSkipPushPermissionAlert, recordNotifPermissionAlertActionType, } from 'lib/utils/push-alerts.js'; +import { ashoatKeyserverID } from 'lib/utils/validation-utils.js'; import electron from '../electron.js'; import PushNotifModal from '../modals/push-notif-modal.react.js'; @@ -44,8 +45,10 @@ React.useEffect( () => electron?.onNotificationClicked?.(({ threadID }) => { - const convertedThreadID = - convertNotificationThreadIDToNewIDSchema(threadID); + const convertedThreadID = convertNonPendingIDToNewSchema( + threadID, + ashoatKeyserverID, + ); const payload = { chatMode: 'view', diff --git a/web/push-notif/service-worker.js b/web/push-notif/service-worker.js --- a/web/push-notif/service-worker.js +++ b/web/push-notif/service-worker.js @@ -1,7 +1,8 @@ // @flow import type { WebNotification } from 'lib/types/notif-types.js'; -import { convertNotificationThreadIDToNewIDSchema } from 'lib/utils/migration-utils.js'; +import { convertNonPendingIDToNewSchema } from 'lib/utils/migration-utils.js'; +import { ashoatKeyserverID } from 'lib/utils/validation-utils.js'; declare class PushMessageData { json(): Object; @@ -55,8 +56,9 @@ const selectedClient = clientList.find(client => client.focused) ?? clientList[0]; - const threadID = convertNotificationThreadIDToNewIDSchema( + const threadID = convertNonPendingIDToNewSchema( event.notification.data.threadID, + ashoatKeyserverID, ); if (selectedClient) {