From f6f14774f9dabd2336a5a0bd1ed9aa1d97bbe7ce Mon Sep 17 00:00:00 2001 From: Dmitriy Kudasov Date: Mon, 6 May 2024 11:34:27 +0300 Subject: [PATCH] News push notification screen --- src/components/popup/dismiss-popup-button.tsx | 4 +++- src/event-actions/on-push-notification.ts | 17 +++++++---------- src/helpers/get-news-detail-title.tsx | 5 ++++- src/route-types.ts | 7 +++++++ src/screens/HomeStack/index.tsx | 12 ++++++++++++ src/types.ts | 6 ++++++ 6 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/components/popup/dismiss-popup-button.tsx b/src/components/popup/dismiss-popup-button.tsx index 1900085d1..fd5df10b6 100644 --- a/src/components/popup/dismiss-popup-button.tsx +++ b/src/components/popup/dismiss-popup-button.tsx @@ -16,7 +16,9 @@ export const DismissPopupButton = () => { style={page.container} testID="dismissPopupButton" onPress={() => { - if (navigation.canGoBack()) { + try { + navigation.pop(); + } catch (e) { navigation.goBack(); } }}> diff --git a/src/event-actions/on-push-notification.ts b/src/event-actions/on-push-notification.ts index 7f82852fe..4dc9cad97 100644 --- a/src/event-actions/on-push-notification.ts +++ b/src/event-actions/on-push-notification.ts @@ -4,7 +4,7 @@ import {News} from '@app/models/news'; import {VariablesBool} from '@app/models/variables-bool'; import {Wallet} from '@app/models/wallet'; import {navigator} from '@app/navigator'; -import {NewsStackRoutes} from '@app/route-types'; +import {HomeStackRoutes} from '@app/route-types'; import {Backend} from '@app/services/backend'; import {MarketingEvents, RaffleStatus, RemoteMessage} from '@app/types'; import {WEI} from '@app/variables/common'; @@ -51,15 +51,12 @@ export async function onPushNotification(message: RemoteMessage) { VariablesBool.set('isNewNews', true); } - navigator.navigate('homeNews', { - // @ts-ignore - screen: NewsStackRoutes.NewsDetail, - params: { - id: id, - openEvent: MarketingEvents.newsOpenPushItem, - linkEvent: MarketingEvents.newsOpenPushLink, - scrollEvent: MarketingEvents.newsScrolledPushItem, - }, + + navigator.navigate(HomeStackRoutes.NewsDetailPushNotification, { + id: id, + openEvent: MarketingEvents.newsOpenPushItem, + linkEvent: MarketingEvents.newsOpenPushLink, + scrollEvent: MarketingEvents.newsScrolledPushItem, }); break; case PushNotificationTypes.raffle: diff --git a/src/helpers/get-news-detail-title.tsx b/src/helpers/get-news-detail-title.tsx index 430c6f86d..ff9e4d565 100644 --- a/src/helpers/get-news-detail-title.tsx +++ b/src/helpers/get-news-detail-title.tsx @@ -25,7 +25,10 @@ export function getNewsDetailTitle(props: { } export function getNewsDetailAppTitle(props: { - route: RouteProp; + route: RouteProp< + RootStackParamList, + 'newsDetail' | 'newsDetailsPushNotification' + >; navigation: any; }): NativeStackNavigationOptions { const news = News.getById(props.route.params.id); diff --git a/src/route-types.ts b/src/route-types.ts index c73351bcc..9c09d2467 100644 --- a/src/route-types.ts +++ b/src/route-types.ts @@ -363,6 +363,7 @@ export enum HomeStackRoutes { ValueSelector = 'valueSelector', BrowserPrivacyPopupStack = 'browserPrivacyPopupStack', Device = '_device', + NewsDetailPushNotification = 'newsDetailsPushNotification', } export type HomeStackParamList = { @@ -453,6 +454,12 @@ export type HomeStackParamList = { screen: 'browserPrivacyDetails' | 'browserPrivacy'; params?: RootStackParamList[RootStackParamList['browserPrivacyPopupStack']['screen']]; }; + [HomeStackRoutes.NewsDetailPushNotification]: { + id: string; + openEvent: MarketingEvents; + linkEvent: MarketingEvents; + scrollEvent: MarketingEvents; + }; }; export enum NftStackRoutes { diff --git a/src/screens/HomeStack/index.tsx b/src/screens/HomeStack/index.tsx index 82d487027..b8279b4c2 100644 --- a/src/screens/HomeStack/index.tsx +++ b/src/screens/HomeStack/index.tsx @@ -11,6 +11,7 @@ import {Color} from '@app/colors'; import {DismissPopupButton} from '@app/components/popup/dismiss-popup-button'; import {Spacer} from '@app/components/ui'; import {popupScreenOptionsWithMargin} from '@app/helpers'; +import {getNewsDetailAppTitle} from '@app/helpers/get-news-detail-title'; import {getWalletTitle} from '@app/helpers/get-wallet-title'; import {themeUpdaterHOC} from '@app/helpers/theme-updater-hoc'; import {I18N, getText} from '@app/i18n'; @@ -43,6 +44,8 @@ import {WalletSelectorScreen} from '@app/screens/wallet-selector-screen'; import {Web3BrowserPopup as Web3BrowserPopupScreen} from '@app/screens/web3-browser-popup'; import {SignInStack} from '@app/screens/WelcomeStack/SignInStack'; +import {NewsDetailScreen} from './HomeNewsStack/news-detail'; + const navigatorOptions: NativeStackNavigationOptions = { gestureEnabled: false, freezeOnBlur: true, @@ -247,6 +250,15 @@ const HomeStack = memo(() => { component={themeUpdaterHOC(InAppBrowserScreen)} options={inAppBrowserOptions} /> + + ({ + ...getNewsDetailAppTitle(props), + disableMargin: false, + })} + /> ); }); diff --git a/src/types.ts b/src/types.ts index 9311e5fc0..a434fb2df 100644 --- a/src/types.ts +++ b/src/types.ts @@ -601,6 +601,12 @@ export type RootStackParamList = { nftItemDetails: { item: NftItem; }; + newsDetailsPushNotification: { + id: string; + openEvent: MarketingEvents; + linkEvent: MarketingEvents; + scrollEvent: MarketingEvents; + }; }; export type StackPresentationTypes =