diff --git a/plugins/notification-resources/src/utils.ts b/plugins/notification-resources/src/utils.ts index fd777a88b2c..db9b2f71fb4 100644 --- a/plugins/notification-resources/src/utils.ts +++ b/plugins/notification-resources/src/utils.ts @@ -731,7 +731,7 @@ function addWorkerListener (): void { export function pushAvailable (): boolean { if (isDesktopClient()) return false - const publicKey = getMetadata(notification.metadata.PushPublicKey) + const publicKey = getPushPublicKey() return ( 'serviceWorker' in navigator && 'PushManager' in window && @@ -747,7 +747,7 @@ export async function subscribePush (): Promise { return false } const client = getClient() - const publicKey = getMetadata(notification.metadata.PushPublicKey) + const publicKey = getPushPublicKey() if ('serviceWorker' in navigator && 'PushManager' in window && publicKey !== undefined) { try { const loc = getCurrentLocation() @@ -802,6 +802,12 @@ export async function subscribePush (): Promise { return false } +function getPushPublicKey (): string | undefined { + const publicKey = getMetadata(notification.metadata.PushPublicKey) + if (publicKey === undefined) return undefined + return publicKey.trim() !== '' ? publicKey : undefined +} + async function cleanTag (_id: Ref): Promise { const client = getClient() const notifications = await client.findAll(notification.class.BrowserNotification, {