From 2c0c9bf803f995508e35d4dba954924c53beec87 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Thu, 17 Jul 2025 21:18:16 +0300 Subject: avoid handling notifs if deep link (#8657) --- src/Navigation.tsx | 42 ++++++++---------------------------------- 1 file changed, 8 insertions(+), 34 deletions(-) (limited to 'src/Navigation.tsx') diff --git a/src/Navigation.tsx b/src/Navigation.tsx index e71148a2c..a7e495f7c 100644 --- a/src/Navigation.tsx +++ b/src/Navigation.tsx @@ -1,4 +1,5 @@ import {useCallback, useRef} from 'react' +import {Linking} from 'react-native' import * as Notifications from 'expo-notifications' import {i18n, type MessageDescriptor} from '@lingui/core' import {msg} from '@lingui/macro' @@ -884,6 +885,13 @@ function RoutesContainer({children}: React.PropsWithChildren<{}>) { async function handlePushNotificationEntry() { if (!isNative) return + // deep links take precedence - on android, + // getLastNotificationResponseAsync returns a "notification" + // that is actually a deep link. avoid handling it twice -sfn + if (await Linking.getInitialURL()) { + return + } + /** * The notification that caused the app to open, if applicable */ @@ -1041,39 +1049,6 @@ function reset(): Promise { } } -function handleLink(url: string) { - let path - if (url.startsWith('/')) { - path = url - } else if (url.startsWith('http')) { - try { - path = new URL(url).pathname - } catch (e) { - console.error('Invalid url', url, e) - return - } - } else { - console.error('Invalid url', url) - return - } - - const [name, params] = router.matchPath(path) - if (isNative) { - if (name === 'Search') { - resetToTab('SearchTab') - } else if (name === 'Notifications') { - resetToTab('NotificationsTab') - } else { - resetToTab('HomeTab') - // @ts-ignore matchPath doesnt give us type-checked output -prf - navigate(name, params) - } - } else { - // @ts-ignore matchPath doesnt give us type-checked output -prf - navigate(name, params) - } -} - let didInit = false function logModuleInitTime() { if (didInit) { @@ -1114,7 +1089,6 @@ function logModuleInitTime() { export { FlatNavigator, - handleLink, navigate, reset, resetToTab, -- cgit 1.4.1