From 2e82d3c175bac3efcaac79d288263a47f7a2ab4c Mon Sep 17 00:00:00 2001 From: staszekscp Date: Mon, 9 Sep 2024 13:08:11 +0200 Subject: [PATCH 1/2] add shortcut support in hybridapp --- src/ROUTES.ts | 2 ++ .../Navigation/AppNavigator/index.native.tsx | 7 ++++--- src/libs/Navigation/AppNavigator/index.tsx | 18 +----------------- src/libs/Navigation/Navigation.ts | 6 +++++- 4 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index a28c2ef4fc57..580523184945 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -1425,6 +1425,8 @@ const ROUTES = { const HYBRID_APP_ROUTES = { MONEY_REQUEST_CREATE: '/request/new/scan', MONEY_REQUEST_SUBMIT_CREATE: '/submit/new/scan', + MONEY_REQUEST_CREATE_TAB_MANUAL: '/submit/new/manual', + MONEY_REQUEST_CREATE_TAB_DISTANCE: '/submit/new/distance', } as const; export {HYBRID_APP_ROUTES, getUrlWithBackToParam, PUBLIC_SCREENS_ROUTES}; diff --git a/src/libs/Navigation/AppNavigator/index.native.tsx b/src/libs/Navigation/AppNavigator/index.native.tsx index 984ed8a2e46f..159626a45df4 100644 --- a/src/libs/Navigation/AppNavigator/index.native.tsx +++ b/src/libs/Navigation/AppNavigator/index.native.tsx @@ -10,7 +10,7 @@ type AppNavigatorProps = { }; function AppNavigator({authenticated}: AppNavigatorProps) { - const {initialURL} = useContext(InitialURLContext); + const {initialURL, setInitialURL} = useContext(InitialURLContext); useEffect(() => { if (!NativeModules.HybridAppModule || !initialURL) { @@ -18,9 +18,10 @@ function AppNavigator({authenticated}: AppNavigatorProps) { } Navigation.isNavigationReady().then(() => { - Navigation.navigate(initialURL); + Navigation.navigate(Navigation.parseHybridAppUrl(initialURL)); + setInitialURL(undefined); }); - }, [initialURL]); + }, [initialURL, setInitialURL]); if (authenticated) { const AuthScreens = require('./AuthScreens').default; diff --git a/src/libs/Navigation/AppNavigator/index.tsx b/src/libs/Navigation/AppNavigator/index.tsx index 1901a51563e9..05961528ca11 100644 --- a/src/libs/Navigation/AppNavigator/index.tsx +++ b/src/libs/Navigation/AppNavigator/index.tsx @@ -1,8 +1,4 @@ -import React, {lazy, memo, Suspense, useContext, useEffect} from 'react'; -import {NativeModules} from 'react-native'; -import {InitialURLContext} from '@components/InitialURLContextProvider'; -import Navigation from '@libs/Navigation/Navigation'; -import ROUTES from '@src/ROUTES'; +import React, {lazy, memo, Suspense} from 'react'; import lazyRetry from '@src/utils/lazyRetry'; const AuthScreens = lazy(() => lazyRetry(() => import('./AuthScreens'))); @@ -14,18 +10,6 @@ type AppNavigatorProps = { }; function AppNavigator({authenticated}: AppNavigatorProps) { - const {initialURL} = useContext(InitialURLContext); - - useEffect(() => { - if (!NativeModules.HybridAppModule || !initialURL || !initialURL.includes(ROUTES.TRANSITION_BETWEEN_APPS)) { - return; - } - - Navigation.isNavigationReady().then(() => { - Navigation.navigate(initialURL); - }); - }, [initialURL]); - if (authenticated) { // These are the protected screens and only accessible when an authToken is present return ( diff --git a/src/libs/Navigation/Navigation.ts b/src/libs/Navigation/Navigation.ts index 4bd86503fd2b..ad9f8ff62fd3 100644 --- a/src/libs/Navigation/Navigation.ts +++ b/src/libs/Navigation/Navigation.ts @@ -102,9 +102,13 @@ function getActiveRouteIndex(stateOrRoute: StateOrRoute, index?: number): number */ function parseHybridAppUrl(url: HybridAppRoute | Route): Route { switch (url) { + case HYBRID_APP_ROUTES.MONEY_REQUEST_CREATE_TAB_MANUAL: + return ROUTES.MONEY_REQUEST_CREATE_TAB_MANUAL.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, CONST.IOU.OPTIMISTIC_TRANSACTION_ID, ReportUtils.generateReportID()); + case HYBRID_APP_ROUTES.MONEY_REQUEST_CREATE_TAB_DISTANCE: + return ROUTES.MONEY_REQUEST_CREATE_TAB_DISTANCE.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, CONST.IOU.OPTIMISTIC_TRANSACTION_ID, ReportUtils.generateReportID()); case HYBRID_APP_ROUTES.MONEY_REQUEST_CREATE: case HYBRID_APP_ROUTES.MONEY_REQUEST_SUBMIT_CREATE: - return ROUTES.MONEY_REQUEST_CREATE.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, CONST.IOU.OPTIMISTIC_TRANSACTION_ID, ReportUtils.generateReportID()); + return ROUTES.MONEY_REQUEST_CREATE_TAB_SCAN.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, CONST.IOU.OPTIMISTIC_TRANSACTION_ID, ReportUtils.generateReportID()); default: return url; } From 8ee9f53c4d49292b9ff102558ac8cf258297e0ae Mon Sep 17 00:00:00 2001 From: staszekscp Date: Tue, 10 Sep 2024 14:33:36 +0200 Subject: [PATCH 2/2] update route name --- src/ROUTES.ts | 2 +- src/libs/Navigation/Navigation.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 580523184945..d9a99fe11000 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -1424,7 +1424,7 @@ const ROUTES = { */ const HYBRID_APP_ROUTES = { MONEY_REQUEST_CREATE: '/request/new/scan', - MONEY_REQUEST_SUBMIT_CREATE: '/submit/new/scan', + MONEY_REQUEST_CREATE_TAB_SCAN: '/submit/new/scan', MONEY_REQUEST_CREATE_TAB_MANUAL: '/submit/new/manual', MONEY_REQUEST_CREATE_TAB_DISTANCE: '/submit/new/distance', } as const; diff --git a/src/libs/Navigation/Navigation.ts b/src/libs/Navigation/Navigation.ts index ad9f8ff62fd3..4c61b953f572 100644 --- a/src/libs/Navigation/Navigation.ts +++ b/src/libs/Navigation/Navigation.ts @@ -107,7 +107,7 @@ function parseHybridAppUrl(url: HybridAppRoute | Route): Route { case HYBRID_APP_ROUTES.MONEY_REQUEST_CREATE_TAB_DISTANCE: return ROUTES.MONEY_REQUEST_CREATE_TAB_DISTANCE.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, CONST.IOU.OPTIMISTIC_TRANSACTION_ID, ReportUtils.generateReportID()); case HYBRID_APP_ROUTES.MONEY_REQUEST_CREATE: - case HYBRID_APP_ROUTES.MONEY_REQUEST_SUBMIT_CREATE: + case HYBRID_APP_ROUTES.MONEY_REQUEST_CREATE_TAB_SCAN: return ROUTES.MONEY_REQUEST_CREATE_TAB_SCAN.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, CONST.IOU.OPTIMISTIC_TRANSACTION_ID, ReportUtils.generateReportID()); default: return url;