diff --git a/src/lib/notifications/notifications.ts b/src/lib/notifications/notifications.ts index e8de8e9de3..008b2ef73f 100644 --- a/src/lib/notifications/notifications.ts +++ b/src/lib/notifications/notifications.ts @@ -225,6 +225,14 @@ export function useNotificationsRegistration() { }, [currentAccount, getAndRegisterPushToken, registerPushToken, aa]) } +/** + * Tracks whether we have already shown the OS notification permission prompt + * during this app session. On Android `canAskAgain` stays true after a single + * in-app denial, so without this guard a later call site (e.g. Home after + * Login) would surface a second prompt. Resets on app restart. + */ +let hasRequestedPermissionsThisSession = false + export function useRequestNotificationsPermission() { const ax = useAnalytics() const {currentAccount} = useSession() @@ -249,6 +257,11 @@ export function useRequestNotificationsPermission() { return } + if (hasRequestedPermissionsThisSession) { + return + } + hasRequestedPermissionsThisSession = true + const res = await Notifications.requestPermissionsAsync({ ios: { /*