From 8b42b93c989e2ba767a0b04aec4df4c0432b480d Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Thu, 22 May 2025 10:41:27 -0500 Subject: [PATCH] Handle undefined notification payloads --- src/lib/hooks/useNotificationHandler.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lib/hooks/useNotificationHandler.ts b/src/lib/hooks/useNotificationHandler.ts index 9ddad7a16c..f7cb6bae6d 100644 --- a/src/lib/hooks/useNotificationHandler.ts +++ b/src/lib/hooks/useNotificationHandler.ts @@ -26,7 +26,13 @@ export type NotificationReason = | 'chat-message' | 'starterpack-joined' +/** + * Manually overridden type, but retains the possibility of + * `notification.request.trigger.payload` being `undefined`, as specified in + * the source types. + */ type NotificationPayload = + | undefined | { reason: Exclude uri: string @@ -47,7 +53,7 @@ const DEFAULT_HANDLER_OPTIONS = { } satisfies Notifications.NotificationBehavior // These need to stay outside the hook to persist between account switches -let storedPayload: NotificationPayload | undefined +let storedPayload: NotificationPayload let prevDate = 0 const logger = Logger.create(Logger.Context.Notifications) @@ -191,6 +197,11 @@ export function useNotificationsHandler() { logger.debug('Notifications: received', {e}) const payload = e.request.trigger.payload as NotificationPayload + + if (!payload) { + return DEFAULT_HANDLER_OPTIONS + } + if ( payload.reason === 'chat-message' && payload.recipientDid === currentAccount?.did @@ -231,6 +242,8 @@ export function useNotificationsHandler() { const payload = e.notification.request.trigger .payload as NotificationPayload + if (!payload) return + logger.debug( 'User pressed a notification, opening notifications tab', {},