Page MenuHomePhabricator

D6935.id23417.diff
No OneTemporary

D6935.id23417.diff

diff --git a/keyserver/src/push/send.js b/keyserver/src/push/send.js
--- a/keyserver/src/push/send.js
+++ b/keyserver/src/push/send.js
@@ -25,14 +25,15 @@
import type { Platform, PlatformDetails } from 'lib/types/device-types.js';
import {
type RawMessageInfo,
- type MessageInfo,
type MessageData,
messageTypes,
} from 'lib/types/message-types.js';
-import type { WebNotification } from 'lib/types/notif-types.js';
-import type { ServerThreadInfo, ThreadInfo } from 'lib/types/thread-types.js';
+import type {
+ WebNotification,
+ ResolvedNotifTexts,
+} from 'lib/types/notif-types.js';
+import type { ServerThreadInfo } from 'lib/types/thread-types.js';
import { updateTypes } from 'lib/types/update-types.js';
-import type { UserInfo } from 'lib/types/user-types.js';
import { promiseAll } from 'lib/utils/promises.js';
import { getAPNsNotificationTopic } from './providers.js';
@@ -158,6 +159,14 @@
}
const badgeOnly = !displayBanner && !userWasMentioned;
+ const notifTargetUserInfo = { id: userID, username };
+ const notifTexts = await notifTextsForMessageInfo(
+ allMessageInfos,
+ threadInfo,
+ notifTargetUserInfo,
+ getENSNames,
+ );
+
const dbID = dbIDs.shift();
invariant(dbID, 'should have sufficient DB IDs');
const byPlatform = getDevicesByPlatform(pushInfo[userID].devices);
@@ -183,17 +192,13 @@
);
const deliveryPromise = (async () => {
const notification = await prepareAPNsNotification({
- allMessageInfos,
+ notifTexts,
newRawMessageInfos: shimmedNewRawMessageInfos,
- threadInfo,
+ threadID: threadInfo.id,
collapseKey: notifInfo.collapseKey,
badgeOnly,
unreadCount: unreadCounts[userID],
platformDetails,
- notifTargetUserInfo: {
- id: userID,
- username,
- },
});
return await sendAPNsNotification(
'ios',
@@ -219,17 +224,13 @@
);
const deliveryPromise = (async () => {
const notification = await prepareAndroidNotification({
- allMessageInfos,
+ notifTexts,
newRawMessageInfos: shimmedNewRawMessageInfos,
- threadInfo,
+ threadID: threadInfo.id,
collapseKey: notifInfo.collapseKey,
badgeOnly,
unreadCount: unreadCounts[userID],
platformDetails,
- notifTargetUserInfo: {
- id: userID,
- username,
- },
dbID,
});
return await sendAndroidNotification(
@@ -249,13 +250,9 @@
for (const [codeVersion, deviceTokens] of webVersionsToTokens) {
const deliveryPromise = (async () => {
const notification = await prepareWebNotification({
- allMessageInfos,
- threadInfo,
+ notifTexts,
+ threadID: threadInfo.id,
unreadCount: unreadCounts[userID],
- notifTargetUserInfo: {
- id: userID,
- username,
- },
});
return await sendWebNotification(notification, [...deviceTokens], {
...notificationInfo,
@@ -275,17 +272,13 @@
);
const deliveryPromise = (async () => {
const notification = await prepareAPNsNotification({
- allMessageInfos,
+ notifTexts,
newRawMessageInfos: shimmedNewRawMessageInfos,
- threadInfo,
+ threadID: threadInfo.id,
collapseKey: notifInfo.collapseKey,
badgeOnly,
unreadCount: unreadCounts[userID],
platformDetails,
- notifTargetUserInfo: {
- id: userID,
- username,
- },
});
return await sendAPNsNotification(
'macos',
@@ -586,39 +579,32 @@
}
type APNsNotifInputData = {
- +allMessageInfos: MessageInfo[],
+ +notifTexts: ResolvedNotifTexts,
+newRawMessageInfos: RawMessageInfo[],
- +threadInfo: ThreadInfo,
+ +threadID: string,
+collapseKey: ?string,
+badgeOnly: boolean,
+unreadCount: number,
+platformDetails: PlatformDetails,
- +notifTargetUserInfo: UserInfo,
};
async function prepareAPNsNotification(
inputData: APNsNotifInputData,
): Promise<apn.Notification> {
const {
- allMessageInfos,
+ notifTexts,
newRawMessageInfos,
- threadInfo,
+ threadID,
collapseKey,
badgeOnly,
unreadCount,
platformDetails,
- notifTargetUserInfo,
} = inputData;
const uniqueID = uuidv4();
const notification = new apn.Notification();
notification.topic = getAPNsNotificationTopic(platformDetails);
- const { merged, ...rest } = await notifTextsForMessageInfo(
- allMessageInfos,
- threadInfo,
- notifTargetUserInfo,
- getENSNames,
- );
+ const { merged, ...rest } = notifTexts;
// We don't include alert's body on macos because we
// handle displaying the notification ourselves and
// we don't want macOS to display it automatically.
@@ -632,11 +618,11 @@
};
notification.badge = unreadCount;
- notification.threadId = threadInfo.id;
+ notification.threadId = threadID;
notification.id = uniqueID;
notification.pushType = 'alert';
notification.payload.id = uniqueID;
- notification.payload.threadID = threadInfo.id;
+ notification.payload.threadID = threadID;
if (platformDetails.codeVersion && platformDetails.codeVersion > 1000) {
notification.mutableContent = true;
}
@@ -675,29 +661,23 @@
inputData: AndroidNotifInputData,
): Promise<Object> {
const {
- allMessageInfos,
+ notifTexts,
newRawMessageInfos,
- threadInfo,
+ threadID,
collapseKey,
badgeOnly,
unreadCount,
platformDetails: { codeVersion },
- notifTargetUserInfo,
dbID,
} = inputData;
const notifID = collapseKey ? collapseKey : dbID;
- const { merged, ...rest } = await notifTextsForMessageInfo(
- allMessageInfos,
- threadInfo,
- notifTargetUserInfo,
- getENSNames,
- );
+ const { merged, ...rest } = notifTexts;
const notification = {
data: {
badge: unreadCount.toString(),
...rest,
- threadID: threadInfo.id,
+ threadID,
},
};
@@ -740,28 +720,21 @@
}
type WebNotifInputData = {
- +allMessageInfos: MessageInfo[],
- +threadInfo: ThreadInfo,
+ +notifTexts: ResolvedNotifTexts,
+ +threadID: string,
+unreadCount: number,
- +notifTargetUserInfo: UserInfo,
};
async function prepareWebNotification(
inputData: WebNotifInputData,
): Promise<WebNotification> {
- const { allMessageInfos, threadInfo, unreadCount, notifTargetUserInfo } =
- inputData;
+ const { notifTexts, threadID, unreadCount } = inputData;
const id = uuidv4();
- const { merged, ...rest } = await notifTextsForMessageInfo(
- allMessageInfos,
- threadInfo,
- notifTargetUserInfo,
- getENSNames,
- );
+ const { merged, ...rest } = notifTexts;
const notification = {
...rest,
unreadCount,
id,
- threadID: threadInfo.id,
+ threadID,
};
return notification;
}

File Metadata

Mime Type
text/plain
Expires
Sat, Sep 28, 9:26 PM (2 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2198010
Default Alt Text
D6935.id23417.diff (7 KB)

Event Timeline