From 4b26ce643bbb0d4be35f813c68010fb545e3d70b Mon Sep 17 00:00:00 2001 From: Prajjaval Verma Date: Wed, 9 Oct 2024 14:04:57 +0530 Subject: [PATCH] TP-83691 | Adverse Changes (#12899) --- .../compare-plan-screen/ComparePlanScreen.tsx | 6 +-- .../MarketBenefitCompareScreen.tsx | 6 +-- .../quote-offer-screen/QuoteOfferScreen.tsx | 19 ++++--- .../WaitingPeriodScreen.tsx | 6 +-- App/common/constants/StringConstant.ts | 2 + App/common/interface/index.ts | 1 + App/common/navigator/NavigationRouter.ts | 50 ++----------------- App/common/utilities/CtaParamsUtils.ts | 41 ++++++++++++++- App/common/utilities/NavigationUtil.ts | 10 ++++ 9 files changed, 77 insertions(+), 64 deletions(-) create mode 100644 App/common/utilities/NavigationUtil.ts diff --git a/App/Container/Navi-Insurance/screen/compare-plan-screen/ComparePlanScreen.tsx b/App/Container/Navi-Insurance/screen/compare-plan-screen/ComparePlanScreen.tsx index f6e75e827c..1a5001df45 100644 --- a/App/Container/Navi-Insurance/screen/compare-plan-screen/ComparePlanScreen.tsx +++ b/App/Container/Navi-Insurance/screen/compare-plan-screen/ComparePlanScreen.tsx @@ -12,12 +12,10 @@ import { CtaData, CtaType } from "../../../../common/interface"; import { Widget } from "../../../../common/interface/widgets/Widget"; import { ScreenData } from "../../../../common/interface/widgets/screenData/ScreenData"; import { NativeDeeplinkNavigatorModule } from "../../../../common/native-module/NativeModules"; -import { - CtaNavigator, - extractCtaParameters, -} from "../../../../common/navigator/NavigationRouter"; +import { CtaNavigator } from "../../../../common/navigator/NavigationRouter"; import { ScreenState } from "../../../../common/screen/BaseScreen"; import { ScreenActionTypes } from "../../../../common/screen/ScreenActionTypes"; +import { extractCtaParameters } from "../../../../common/utilities/CtaParamsUtils"; import QuoteOfferErrorScreen from "../quote-offer-screen/error-screen/QuoteOfferErrorScreen"; import ComparePlanShimmerScreen from "./shimmer-screen/ComparePlanShimmerScreen"; diff --git a/App/Container/Navi-Insurance/screen/market-benefit-compare-screen/MarketBenefitCompareScreen.tsx b/App/Container/Navi-Insurance/screen/market-benefit-compare-screen/MarketBenefitCompareScreen.tsx index 99d8c9f50c..fef8d2216e 100644 --- a/App/Container/Navi-Insurance/screen/market-benefit-compare-screen/MarketBenefitCompareScreen.tsx +++ b/App/Container/Navi-Insurance/screen/market-benefit-compare-screen/MarketBenefitCompareScreen.tsx @@ -26,12 +26,10 @@ import { AnalyticsEvent, CtaData, CtaType } from "../../../../common/interface"; import { Widget } from "../../../../common/interface/widgets/Widget"; import { ScreenData } from "../../../../common/interface/widgets/screenData/ScreenData"; import { NativeDeeplinkNavigatorModule } from "../../../../common/native-module/NativeModules"; -import { - CtaNavigator, - extractCtaParameters, -} from "../../../../common/navigator/NavigationRouter"; +import { CtaNavigator } from "../../../../common/navigator/NavigationRouter"; import { ScreenState } from "../../../../common/screen/BaseScreen"; import { ScreenActionTypes } from "../../../../common/screen/ScreenActionTypes"; +import { extractCtaParameters } from "../../../../common/utilities/CtaParamsUtils"; import GenericShimmerScreen from "../generic-shimmer-screen/GenericShimmerScreen"; import QuoteOfferErrorScreen from "../quote-offer-screen/error-screen/QuoteOfferErrorScreen"; import styles from "./MarketBenefitCompareScreenStyles"; diff --git a/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx b/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx index 3e699a87d8..42c9cef79b 100644 --- a/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx +++ b/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx @@ -12,7 +12,6 @@ import Animated, { useAnimatedStyle, useDerivedValue, useSharedValue, - withDelay, withTiming, } from "react-native-reanimated"; import Colors from "../../../../../assets/colors/colors"; @@ -23,7 +22,9 @@ import { GenericActionPayload, } from "../../../../common/actions/GenericAction"; import { + ADVERSE, ConstantCta, + HOME, QUOTE_OFFER_SCREEN, ScreenProperties, } from "../../../../common/constants"; @@ -40,12 +41,11 @@ import { Widget } from "../../../../common/interface/widgets/Widget"; import { ScreenData } from "../../../../common/interface/widgets/screenData/ScreenData"; import { FabWidgetData } from "../../../../common/interface/widgets/widgetData/FabWidgetData"; import { NativeDeeplinkNavigatorModule } from "../../../../common/native-module/NativeModules"; -import { - CtaNavigator, - extractCtaParameters, -} from "../../../../common/navigator/NavigationRouter"; +import { CtaNavigator } from "../../../../common/navigator/NavigationRouter"; import { ScreenState } from "../../../../common/screen/BaseScreen"; import { ScreenActionTypes } from "../../../../common/screen/ScreenActionTypes"; +import { extractCtaParameters } from "../../../../common/utilities/CtaParamsUtils"; +import { handleGoBackOrExitApp } from "../../../../common/utilities/NavigationUtil"; import styles from "./QuoteOfferScreenStyle"; import QuoteOfferErrorScreen from "./error-screen/QuoteOfferErrorScreen"; import QuoteOfferShimmerScreen from "./shimmer-screen/QuoteOfferShimmerScreen"; @@ -113,7 +113,7 @@ const QuoteOfferScreen = ({ }; }); - const { applicationId, preQuoteId, quoteId, navigatorType } = + const { applicationId, preQuoteId, quoteId, source } = extractCtaParameters(ctaData); const nativeEventListener = new NativeEventEmitter(); @@ -126,6 +126,10 @@ const QuoteOfferScreen = ({ ); return; } + if ((cta.url = HOME) && source == ADVERSE) { + cta.type = CtaType.GO_BACK; + } + const { navigatorType } = extractCtaParameters(cta); try { switch (cta.type) { @@ -138,6 +142,9 @@ const QuoteOfferScreen = ({ case CtaType.RN_NAVIGATOR: CtaNavigator.performNavigation(navigation, navigatorType, cta); break; + case CtaType.GO_BACK: + handleGoBackOrExitApp(navigation); + break; default: NativeDeeplinkNavigatorModule.navigateToNaviDeeplinkNavigator( JSON.stringify(cta), diff --git a/App/Container/Navi-Insurance/screen/waiting-period-screen/WaitingPeriodScreen.tsx b/App/Container/Navi-Insurance/screen/waiting-period-screen/WaitingPeriodScreen.tsx index 22e0c889a6..11c8fccc30 100644 --- a/App/Container/Navi-Insurance/screen/waiting-period-screen/WaitingPeriodScreen.tsx +++ b/App/Container/Navi-Insurance/screen/waiting-period-screen/WaitingPeriodScreen.tsx @@ -28,12 +28,10 @@ import { AnalyticsEvent, CtaData, CtaType } from "../../../../common/interface"; import { Widget } from "../../../../common/interface/widgets/Widget"; import { ScreenData } from "../../../../common/interface/widgets/screenData/ScreenData"; import { NativeDeeplinkNavigatorModule } from "../../../../common/native-module/NativeModules"; -import { - CtaNavigator, - extractCtaParameters, -} from "../../../../common/navigator/NavigationRouter"; +import { CtaNavigator } from "../../../../common/navigator/NavigationRouter"; import { ScreenState } from "../../../../common/screen/BaseScreen"; import { ScreenActionTypes } from "../../../../common/screen/ScreenActionTypes"; +import { extractCtaParameters } from "../../../../common/utilities/CtaParamsUtils"; import GenericShimmerScreen from "../generic-shimmer-screen/GenericShimmerScreen"; import QuoteOfferErrorScreen from "../quote-offer-screen/error-screen/QuoteOfferErrorScreen"; import styles from "./WaitingPeriodScreenStyles"; diff --git a/App/common/constants/StringConstant.ts b/App/common/constants/StringConstant.ts index d6b4dcea32..8467d94502 100644 --- a/App/common/constants/StringConstant.ts +++ b/App/common/constants/StringConstant.ts @@ -47,6 +47,8 @@ export const BUILD_CONFIG_DETAILS = "BUILD_CONFIG_DETAILS"; export const SPACE_UNICODE = "\u00A0"; export const REACT_NATIVE = "rn"; export const NAVIGATION_ERROR = "Navigation Error"; +export const HOME = "home"; +export const ADVERSE = "adverse"; export enum SeparatorType { DASHED = "dashed", diff --git a/App/common/interface/index.ts b/App/common/interface/index.ts index c752e34e0d..50aebc4fa5 100644 --- a/App/common/interface/index.ts +++ b/App/common/interface/index.ts @@ -52,6 +52,7 @@ export enum ParameterType { QUOTE_ID = "quoteId", NAVIGATOR_TYPE = "RnNavigatorType", APPLICATION_ID = "applicationId", + SOURCE = "source", } export enum CtaType { diff --git a/App/common/navigator/NavigationRouter.ts b/App/common/navigator/NavigationRouter.ts index 2ac3179e5e..2efde78fd0 100644 --- a/App/common/navigator/NavigationRouter.ts +++ b/App/common/navigator/NavigationRouter.ts @@ -1,18 +1,13 @@ import { - BaseNavigator, - NavigationType, - CtaParameter, - ParameterType, -} from "../interface"; -import { BASE_SCREEN } from "../constants/ScreenNameConstants"; -import { + ActionMetaData, BaseActionTypes, GenericActionPayload, - ActionMetaData, } from "../actions/GenericAction"; -import WidgetActionHandler from "../widgets/widget-actions/WidgetActionHandler"; -import { ScreenActionHandler } from "../screen/ScreenActionHandler"; +import { BASE_SCREEN } from "../constants/ScreenNameConstants"; import { logToSentry } from "../hooks/useSentryLogging"; +import { BaseNavigator, NavigationType } from "../interface"; +import { ScreenActionHandler } from "../screen/ScreenActionHandler"; +import WidgetActionHandler from "../widgets/widget-actions/WidgetActionHandler"; export const CtaNavigator: BaseNavigator = { navigate: (navigationRef, ctaData) => { @@ -43,41 +38,6 @@ export const CtaNavigator: BaseNavigator = { }, }; -export const extractCtaParameters = ( - ctaData: any, -): { - preQuoteId?: string | undefined | null; - quoteId?: string | undefined | null; - navigatorType?: string | undefined | null; - applicationId?: string | undefined | null; -} => { - let preQuoteId: string | undefined | null = undefined; - let quoteId: string | undefined | null = undefined; - let navigatorType: string | undefined | null = undefined; - let applicationId: string | undefined | null = undefined; - - ctaData?.parameters?.forEach((item: CtaParameter) => { - switch (item.key) { - case ParameterType.PRE_QUOTE_ID: - preQuoteId = item.value; - break; - case ParameterType.QUOTE_ID: - quoteId = item.value; - break; - case ParameterType.NAVIGATOR_TYPE: - navigatorType = item.value; - break; - case ParameterType.APPLICATION_ID: - applicationId = item.value; - break; - default: - break; - } - }); - - return { preQuoteId, quoteId, navigatorType, applicationId }; -}; - export const Router = { handleAction(actionPayload: GenericActionPayload, navigation?: any): void { switch (actionPayload.baseActionType) { diff --git a/App/common/utilities/CtaParamsUtils.ts b/App/common/utilities/CtaParamsUtils.ts index 1ea979a7b6..1f8ba1ad36 100644 --- a/App/common/utilities/CtaParamsUtils.ts +++ b/App/common/utilities/CtaParamsUtils.ts @@ -1,7 +1,46 @@ import { APPLICATION_ID, QUOTE_ID } from "../constants"; -import { CtaData } from "../interface"; +import { CtaData, CtaParameter, ParameterType } from "../interface"; import { ScreenMetaData } from "../interface/widgets/screenData/ScreenMetaData"; +export const extractCtaParameters = ( + ctaData: any, +): { + preQuoteId?: string | undefined | null; + quoteId?: string | undefined | null; + navigatorType?: string | undefined | null; + applicationId?: string | undefined | null; + source?: string | undefined | null; +} => { + let preQuoteId: string | undefined | null = undefined; + let quoteId: string | undefined | null = undefined; + let navigatorType: string | undefined | null = undefined; + let applicationId: string | undefined | null = undefined; + let source: string | undefined | null = undefined; + + ctaData?.parameters?.forEach((item: CtaParameter) => { + switch (item.key) { + case ParameterType.PRE_QUOTE_ID: + preQuoteId = item.value; + break; + case ParameterType.QUOTE_ID: + quoteId = item.value; + break; + case ParameterType.NAVIGATOR_TYPE: + navigatorType = item.value; + break; + case ParameterType.APPLICATION_ID: + applicationId = item.value; + break; + case ParameterType.SOURCE: + source = item.value; + break; + default: + break; + } + }); + return { preQuoteId, quoteId, navigatorType, applicationId, source }; +}; + export const getQuoteIdFromCta = (ctaData?: CtaData) => { const quoteObj = ctaData?.parameters?.find(item => item.key === QUOTE_ID); return quoteObj?.value; diff --git a/App/common/utilities/NavigationUtil.ts b/App/common/utilities/NavigationUtil.ts new file mode 100644 index 0000000000..05a401ae4c --- /dev/null +++ b/App/common/utilities/NavigationUtil.ts @@ -0,0 +1,10 @@ +import { NavigationProp } from "@react-navigation/native"; +import { BackHandler } from "react-native"; + +export const handleGoBackOrExitApp = (navigation: NavigationProp) => { + if (navigation.canGoBack()) { + navigation.goBack(); + } else { + BackHandler.exitApp(); + } +};