From 3da16bf670f5ec1ab304f0bb56d1f0091075ab36 Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Fri, 1 Nov 2024 19:40:18 +0500 Subject: [PATCH] Remove outdated push subscription (#7080) --- server-plugins/notification-resources/src/index.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/server-plugins/notification-resources/src/index.ts b/server-plugins/notification-resources/src/index.ts index 643070dfa6..9145bb9588 100644 --- a/server-plugins/notification-resources/src/index.ts +++ b/server-plugins/notification-resources/src/index.ts @@ -607,6 +607,8 @@ export async function createPushNotification ( } } +const errorMessages = ['expired', 'Unregistered', 'No such subscription'] + async function sendPushToSubscription ( control: TriggerControl, targetUser: Ref, @@ -617,9 +619,11 @@ async function sendPushToSubscription ( await webpush.sendNotification(subscription, JSON.stringify(data)) } catch (err) { control.ctx.info('Cannot send push notification to', { user: targetUser, err }) - if (err instanceof WebPushError && err.body.includes('expired')) { - const tx = control.txFactory.createTxRemoveDoc(subscription._class, subscription.space, subscription._id) - await control.apply(control.ctx, [tx]) + if (err instanceof WebPushError) { + if (errorMessages.some((p) => (err as WebPushError).body.includes(p))) { + const tx = control.txFactory.createTxRemoveDoc(subscription._class, subscription.space, subscription._id) + await control.apply(control.ctx, [tx]) + } } } }