From 854c7be87d9ca41bc0a5ced9eec8d2cc88271c01 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Mon, 9 Oct 2023 12:11:29 +0200 Subject: [PATCH] Fix: don't show push notifications banner if wallet not conencted (#2605) * Fix: don't show push notifications banner if wallet not conencted; don't track banner dismissal on enable all/customize * Tests --- .../PushNotificationsBanner.test.tsx | 10 ++++++++++ .../PushNotificationsBanner/index.tsx | 12 +++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/components/settings/PushNotifications/PushNotificationsBanner/PushNotificationsBanner.test.tsx b/src/components/settings/PushNotifications/PushNotificationsBanner/PushNotificationsBanner.test.tsx index 26f9c6a95e..6ea40fb386 100644 --- a/src/components/settings/PushNotifications/PushNotificationsBanner/PushNotificationsBanner.test.tsx +++ b/src/components/settings/PushNotifications/PushNotificationsBanner/PushNotificationsBanner.test.tsx @@ -10,6 +10,8 @@ import { createPushNotificationPrefsIndexedDb } from '@/services/push-notificati import { render } from '@/tests/test-utils' import type { AddedSafesOnChain } from '@/store/addedSafesSlice' import type { PushNotificationPreferences } from '@/services/push-notifications/preferences' +import * as useWallet from '@/hooks/wallets/useWallet' +import type { EIP1193Provider } from '@web3-onboard/core' Object.defineProperty(globalThis, 'crypto', { value: { @@ -17,6 +19,14 @@ Object.defineProperty(globalThis, 'crypto', { }, }) +jest.spyOn(useWallet, 'default').mockImplementation(() => ({ + ens: '', + address: '0x1230000000000000000000000000000000000000', + provider: jest.fn() as unknown as EIP1193Provider, + label: 'Metamask', + chainId: '4', +})) + describe('PushNotificationsBanner', () => { describe('getSafesToRegister', () => { it('should return all added safes if no preferences exist', () => { diff --git a/src/components/settings/PushNotifications/PushNotificationsBanner/index.tsx b/src/components/settings/PushNotifications/PushNotificationsBanner/index.tsx index baa7df4ad5..0b1b64106c 100644 --- a/src/components/settings/PushNotifications/PushNotificationsBanner/index.tsx +++ b/src/components/settings/PushNotifications/PushNotificationsBanner/index.tsx @@ -25,6 +25,7 @@ import { FEATURES } from '@/utils/chains' import type { AddedSafesOnChain } from '@/store/addedSafesSlice' import type { PushNotificationPreferences } from '@/services/push-notifications/preferences' import type { NotifiableSafes } from '../logic' +import useWallet from '@/hooks/wallets/useWallet' import css from './styles.module.css' @@ -109,6 +110,7 @@ export const PushNotificationsBanner = ({ children }: { children: ReactElement } const addedSafesOnChain = useAppSelector((state) => selectAddedSafes(state, safe.chainId)) const { query } = useRouter() const onboard = useOnboard() + const wallet = useWallet() const { getPreferences, getAllPreferences } = useNotificationPreferences() const { dismissPushNotificationBanner, isPushNotificationBannerDismissed } = useDismissPushNotificationsBanner() @@ -116,15 +118,19 @@ export const PushNotificationsBanner = ({ children }: { children: ReactElement } const isSafeAdded = !!addedSafesOnChain?.[safeAddress] const isSafeRegistered = getPreferences(safe.chainId, safeAddress) const shouldShowBanner = - isNotificationFeatureEnabled && !isPushNotificationBannerDismissed && isSafeAdded && !isSafeRegistered + isNotificationFeatureEnabled && !isPushNotificationBannerDismissed && isSafeAdded && !isSafeRegistered && !!wallet const { registerNotifications } = useNotificationRegistrations() const dismissBanner = useCallback(() => { - trackEvent(PUSH_NOTIFICATION_EVENTS.DISMISS_BANNER) dismissPushNotificationBanner(safe.chainId) }, [dismissPushNotificationBanner, safe.chainId]) + const onDismiss = () => { + trackEvent(PUSH_NOTIFICATION_EVENTS.DISMISS_BANNER) + dismissBanner() + } + const onEnableAll = async () => { if (!onboard || !addedSafesOnChain) { return @@ -171,7 +177,7 @@ export const PushNotificationsBanner = ({ children }: { children: ReactElement } Enable push notifications - +