Remove outdated push subscription (#7080)

This commit is contained in:
Denis Bykhov 2024-11-01 19:40:18 +05:00 committed by GitHub
parent 4501a1cc04
commit 3da16bf670
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -607,6 +607,8 @@ export async function createPushNotification (
}
}
const errorMessages = ['expired', 'Unregistered', 'No such subscription']
async function sendPushToSubscription (
control: TriggerControl,
targetUser: Ref<Account>,
@ -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])
}
}
}
}