ouisys-engine 5.1.15 → 5.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/RemoteDataState-CwHLI23e.js +75 -0
- package/dist/RemoteDataState-CwHLI23e.js.map +1 -0
- package/dist/api-oPdBWsMC.js +65 -0
- package/dist/api-oPdBWsMC.js.map +1 -0
- package/dist/checkSubscriptionHander.js +140 -1
- package/dist/checkSubscriptionHander.js.map +1 -1
- package/dist/cleanSearchParams-B2jK3H1j.js +16 -0
- package/dist/cleanSearchParams-B2jK3H1j.js.map +1 -0
- package/dist/click2smsFlow.js +252 -1
- package/dist/click2smsFlow.js.map +1 -1
- package/dist/creditCardFlow.js +331 -1
- package/dist/creditCardFlow.js.map +1 -1
- package/dist/formatNumberToE164-oPCiETQk.js +476 -0
- package/dist/formatNumberToE164-oPCiETQk.js.map +1 -0
- package/dist/getConfig.js +13 -1
- package/dist/getConfig.js.map +1 -1
- package/dist/handleSubmitNumber.js +50 -1
- package/dist/handleSubmitNumber.js.map +1 -1
- package/dist/handleWaterfallRedirect-h5K2zX3N.js +21 -0
- package/dist/handleWaterfallRedirect-h5K2zX3N.js.map +1 -0
- package/dist/helpers-BIBpnXln.js +29 -0
- package/dist/helpers-BIBpnXln.js.map +1 -0
- package/dist/initTPay.js +98 -1
- package/dist/initTPay.js.map +1 -1
- package/dist/loadScriptInnerHtml-CstJVRED.js +30 -0
- package/dist/loadScriptInnerHtml-CstJVRED.js.map +1 -0
- package/dist/main-8gjJCdrT.js +448 -0
- package/dist/main-8gjJCdrT.js.map +1 -0
- package/dist/moFlow.js +322 -1
- package/dist/moFlow.js.map +1 -1
- package/dist/moRedirFlow.js +329 -1
- package/dist/moRedirFlow.js.map +1 -1
- package/dist/normaliseErrorCode-CBLYxW-a.js +44 -0
- package/dist/normaliseErrorCode-CBLYxW-a.js.map +1 -0
- package/dist/oneClickFlow.js +710 -1
- package/dist/oneClickFlow.js.map +1 -1
- package/dist/pinFlow.js +542 -1
- package/dist/pinFlow.js.map +1 -1
- package/dist/searchToObject.js +9 -1
- package/dist/searchToObject.js.map +1 -1
- package/dist/src/common-types/Either.d.ts +9 -0
- package/dist/src/common-types/Either.d.ts.map +1 -0
- package/dist/src/common-types/ICheckSubscriptionResult.d.ts +12 -0
- package/dist/src/common-types/ICheckSubscriptionResult.d.ts.map +1 -0
- package/dist/src/common-types/IError.d.ts +5 -0
- package/dist/src/common-types/IError.d.ts.map +1 -0
- package/dist/src/common-types/IHash.d.ts +4 -0
- package/dist/src/common-types/IHash.d.ts.map +1 -0
- package/dist/src/common-types/IOptInFlowName.d.ts +2 -0
- package/dist/src/common-types/IOptInFlowName.d.ts.map +1 -0
- package/dist/src/common-types/ITracker.d.ts +10 -0
- package/dist/src/common-types/ITracker.d.ts.map +1 -0
- package/dist/src/common-types/IVisitor.d.ts +51 -0
- package/dist/src/common-types/IVisitor.d.ts.map +1 -0
- package/dist/src/common-types/RemoteDataState.d.ts +39 -0
- package/dist/src/common-types/RemoteDataState.d.ts.map +1 -0
- package/dist/src/common-types/Strategy.d.ts +49 -0
- package/dist/src/common-types/Strategy.d.ts.map +1 -0
- package/dist/src/flows/click2smsFlow/api.d.ts +13 -0
- package/dist/src/flows/click2smsFlow/api.d.ts.map +1 -0
- package/dist/src/flows/click2smsFlow/click2smsFlowSlice.d.ts +18 -0
- package/dist/src/flows/click2smsFlow/click2smsFlowSlice.d.ts.map +1 -0
- package/dist/src/flows/click2smsFlow/hooks/useClick2smsFlowState.d.ts +3 -0
- package/dist/src/flows/click2smsFlow/hooks/useClick2smsFlowState.d.ts.map +1 -0
- package/dist/src/flows/click2smsFlow/hooks/useKeyWordShortCode.d.ts +4 -0
- package/dist/src/flows/click2smsFlow/hooks/useKeyWordShortCode.d.ts.map +1 -0
- package/dist/src/flows/click2smsFlow/index.d.ts +6 -0
- package/dist/src/flows/click2smsFlow/index.d.ts.map +1 -0
- package/dist/src/flows/click2smsFlow/main.d.ts +4 -0
- package/dist/src/flows/click2smsFlow/main.d.ts.map +1 -0
- package/dist/src/flows/click2smsFlow/match.d.ts +7 -0
- package/dist/src/flows/click2smsFlow/match.d.ts.map +1 -0
- package/dist/src/flows/creditCardFlow/api.d.ts +26 -0
- package/dist/src/flows/creditCardFlow/api.d.ts.map +1 -0
- package/dist/src/flows/creditCardFlow/creditCardFlowSlice.d.ts +26 -0
- package/dist/src/flows/creditCardFlow/creditCardFlowSlice.d.ts.map +1 -0
- package/dist/src/flows/creditCardFlow/hooks/useCreditCardFlowState.d.ts +3 -0
- package/dist/src/flows/creditCardFlow/hooks/useCreditCardFlowState.d.ts.map +1 -0
- package/dist/src/flows/creditCardFlow/index.d.ts +5 -0
- package/dist/src/flows/creditCardFlow/index.d.ts.map +1 -0
- package/dist/src/flows/creditCardFlow/main.d.ts +8 -0
- package/dist/src/flows/creditCardFlow/main.d.ts.map +1 -0
- package/dist/src/flows/creditCardFlow/match.d.ts +7 -0
- package/dist/src/flows/creditCardFlow/match.d.ts.map +1 -0
- package/dist/src/flows/moFlow/api.d.ts +15 -0
- package/dist/src/flows/moFlow/api.d.ts.map +1 -0
- package/dist/src/flows/moFlow/hooks/useMoFlowState.d.ts +3 -0
- package/dist/src/flows/moFlow/hooks/useMoFlowState.d.ts.map +1 -0
- package/dist/src/flows/moFlow/index.d.ts +5 -0
- package/dist/src/flows/moFlow/index.d.ts.map +1 -0
- package/dist/src/flows/moFlow/main.d.ts +13 -0
- package/dist/src/flows/moFlow/main.d.ts.map +1 -0
- package/dist/src/flows/moFlow/match.d.ts +7 -0
- package/dist/src/flows/moFlow/match.d.ts.map +1 -0
- package/dist/src/flows/moFlow/moFlowSlice.d.ts +47 -0
- package/dist/src/flows/moFlow/moFlowSlice.d.ts.map +1 -0
- package/dist/src/flows/moRedirFlow/api.d.ts +18 -0
- package/dist/src/flows/moRedirFlow/api.d.ts.map +1 -0
- package/dist/src/flows/moRedirFlow/hooks/useMoRedirFlowState.d.ts +3 -0
- package/dist/src/flows/moRedirFlow/hooks/useMoRedirFlowState.d.ts.map +1 -0
- package/dist/src/flows/moRedirFlow/index.d.ts +5 -0
- package/dist/src/flows/moRedirFlow/index.d.ts.map +1 -0
- package/dist/src/flows/moRedirFlow/main.d.ts +8 -0
- package/dist/src/flows/moRedirFlow/main.d.ts.map +1 -0
- package/dist/src/flows/moRedirFlow/match.d.ts +7 -0
- package/dist/src/flows/moRedirFlow/match.d.ts.map +1 -0
- package/dist/src/flows/moRedirFlow/moRedirFlowSlice.d.ts +38 -0
- package/dist/src/flows/moRedirFlow/moRedirFlowSlice.d.ts.map +1 -0
- package/dist/src/flows/oneClickFlow/api.d.ts +22 -0
- package/dist/src/flows/oneClickFlow/api.d.ts.map +1 -0
- package/dist/src/flows/oneClickFlow/hooks/useOneClickFlowState.d.ts +3 -0
- package/dist/src/flows/oneClickFlow/hooks/useOneClickFlowState.d.ts.map +1 -0
- package/dist/src/flows/oneClickFlow/index.d.ts +5 -0
- package/dist/src/flows/oneClickFlow/index.d.ts.map +1 -0
- package/dist/src/flows/oneClickFlow/main.d.ts +15 -0
- package/dist/src/flows/oneClickFlow/main.d.ts.map +1 -0
- package/dist/src/flows/oneClickFlow/match.d.ts +8 -0
- package/dist/src/flows/oneClickFlow/match.d.ts.map +1 -0
- package/dist/src/flows/oneClickFlow/oneClickFlowSlice.d.ts +45 -0
- package/dist/src/flows/oneClickFlow/oneClickFlowSlice.d.ts.map +1 -0
- package/dist/src/flows/pinFlow/IPinConstants.d.ts +3 -0
- package/dist/src/flows/pinFlow/IPinConstants.d.ts.map +1 -0
- package/dist/src/flows/pinFlow/api.d.ts +39 -0
- package/dist/src/flows/pinFlow/api.d.ts.map +1 -0
- package/dist/src/flows/pinFlow/hooks/usePinFlowState.d.ts +3 -0
- package/dist/src/flows/pinFlow/hooks/usePinFlowState.d.ts.map +1 -0
- package/dist/src/flows/pinFlow/index.d.ts +5 -0
- package/dist/src/flows/pinFlow/index.d.ts.map +1 -0
- package/dist/src/flows/pinFlow/main.d.ts +10 -0
- package/dist/src/flows/pinFlow/main.d.ts.map +1 -0
- package/dist/src/flows/pinFlow/match.d.ts +8 -0
- package/dist/src/flows/pinFlow/match.d.ts.map +1 -0
- package/dist/src/flows/pinFlow/pinFlowSlice.d.ts +60 -0
- package/dist/src/flows/pinFlow/pinFlowSlice.d.ts.map +1 -0
- package/dist/src/flows/strategy/api.d.ts +40 -0
- package/dist/src/flows/strategy/api.d.ts.map +1 -0
- package/dist/src/flows/strategy/hooks/useStrategyState.d.ts +3 -0
- package/dist/src/flows/strategy/hooks/useStrategyState.d.ts.map +1 -0
- package/dist/src/flows/strategy/index.d.ts +8 -0
- package/dist/src/flows/strategy/index.d.ts.map +1 -0
- package/dist/src/flows/strategy/main.d.ts +29 -0
- package/dist/src/flows/strategy/main.d.ts.map +1 -0
- package/dist/src/flows/strategy/match.d.ts +16 -0
- package/dist/src/flows/strategy/match.d.ts.map +1 -0
- package/dist/src/flows/strategy/mocks/index.d.ts +7 -0
- package/dist/src/flows/strategy/mocks/index.d.ts.map +1 -0
- package/dist/src/flows/strategy/strategies/askMobileNumber.d.ts +25 -0
- package/dist/src/flows/strategy/strategies/askMobileNumber.d.ts.map +1 -0
- package/dist/src/flows/strategy/strategies/askOperator.d.ts +14 -0
- package/dist/src/flows/strategy/strategies/askOperator.d.ts.map +1 -0
- package/dist/src/flows/strategy/strategies/callRedirectApi.d.ts +28 -0
- package/dist/src/flows/strategy/strategies/callRedirectApi.d.ts.map +1 -0
- package/dist/src/flows/strategy/strategies/detectOperatorByIp.d.ts +15 -0
- package/dist/src/flows/strategy/strategies/detectOperatorByIp.d.ts.map +1 -0
- package/dist/src/flows/strategy/strategies/headerEnrichment.d.ts +52 -0
- package/dist/src/flows/strategy/strategies/headerEnrichment.d.ts.map +1 -0
- package/dist/src/flows/strategy/strategies/injectHeaderEnrichmentScript.d.ts +11 -0
- package/dist/src/flows/strategy/strategies/injectHeaderEnrichmentScript.d.ts.map +1 -0
- package/dist/src/flows/strategy/strategySlice.d.ts +26 -0
- package/dist/src/flows/strategy/strategySlice.d.ts.map +1 -0
- package/dist/src/flows/ussdFlow/api.d.ts +4 -0
- package/dist/src/flows/ussdFlow/api.d.ts.map +1 -0
- package/dist/src/flows/ussdFlow/hooks/useUssdFlowState.d.ts +3 -0
- package/dist/src/flows/ussdFlow/hooks/useUssdFlowState.d.ts.map +1 -0
- package/dist/src/flows/ussdFlow/index.d.ts +5 -0
- package/dist/src/flows/ussdFlow/index.d.ts.map +1 -0
- package/dist/src/flows/ussdFlow/main.d.ts +10 -0
- package/dist/src/flows/ussdFlow/main.d.ts.map +1 -0
- package/dist/src/flows/ussdFlow/match.d.ts +7 -0
- package/dist/src/flows/ussdFlow/match.d.ts.map +1 -0
- package/dist/src/flows/ussdFlow/ussdFlowSlice.d.ts +38 -0
- package/dist/src/flows/ussdFlow/ussdFlowSlice.d.ts.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/ips/tryGetIPRangeName.d.ts +3 -0
- package/dist/src/ips/tryGetIPRangeName.d.ts.map +1 -0
- package/dist/src/pacman/index.d.ts +7 -0
- package/dist/src/pacman/index.d.ts.map +1 -0
- package/dist/src/pacman/queryString.d.ts +4 -0
- package/dist/src/pacman/queryString.d.ts.map +1 -0
- package/dist/src/sharedApi/checkSubscription.d.ts +13 -0
- package/dist/src/sharedApi/checkSubscription.d.ts.map +1 -0
- package/dist/src/sharedApi/checkSubscriptionByRockmanIdOnly.d.ts +7 -0
- package/dist/src/sharedApi/checkSubscriptionByRockmanIdOnly.d.ts.map +1 -0
- package/dist/src/sharedApi/unblockUser.d.ts +13 -0
- package/dist/src/sharedApi/unblockUser.d.ts.map +1 -0
- package/dist/src/sharedFlowTypes/Click2smsTypes.d.ts +79 -0
- package/dist/src/sharedFlowTypes/Click2smsTypes.d.ts.map +1 -0
- package/dist/src/sharedFlowTypes/CreditCardTypes.d.ts +74 -0
- package/dist/src/sharedFlowTypes/CreditCardTypes.d.ts.map +1 -0
- package/dist/src/sharedFlowTypes/MoRedirTypes.d.ts +29 -0
- package/dist/src/sharedFlowTypes/MoRedirTypes.d.ts.map +1 -0
- package/dist/src/sharedFlowTypes/MoTypes.d.ts +45 -0
- package/dist/src/sharedFlowTypes/MoTypes.d.ts.map +1 -0
- package/dist/src/sharedFlowTypes/OneClickTypes.d.ts +78 -0
- package/dist/src/sharedFlowTypes/OneClickTypes.d.ts.map +1 -0
- package/dist/src/sharedFlowTypes/PinTypes.d.ts +135 -0
- package/dist/src/sharedFlowTypes/PinTypes.d.ts.map +1 -0
- package/dist/src/sharedFlowTypes/StrategyTypes.d.ts +285 -0
- package/dist/src/sharedFlowTypes/StrategyTypes.d.ts.map +1 -0
- package/dist/src/sharedFlowTypes/UssdTypes.d.ts +32 -0
- package/dist/src/sharedFlowTypes/UssdTypes.d.ts.map +1 -0
- package/dist/src/utilities/addEmpelloToken.d.ts +5 -0
- package/dist/src/utilities/addEmpelloToken.d.ts.map +1 -0
- package/dist/src/utilities/addUrlParamAndReload.d.ts +4 -0
- package/dist/src/utilities/addUrlParamAndReload.d.ts.map +1 -0
- package/dist/src/utilities/bupperizeCountry.d.ts +3 -0
- package/dist/src/utilities/bupperizeCountry.d.ts.map +1 -0
- package/dist/src/utilities/checkSubscriptionHander.d.ts +10 -0
- package/dist/src/utilities/checkSubscriptionHander.d.ts.map +1 -0
- package/dist/src/utilities/cleanSearchParams.d.ts +2 -0
- package/dist/src/utilities/cleanSearchParams.d.ts.map +1 -0
- package/dist/src/utilities/countryToPhoneCode.d.ts +2 -0
- package/dist/src/utilities/countryToPhoneCode.d.ts.map +1 -0
- package/dist/src/utilities/formatNumberToE164.d.ts +9 -0
- package/dist/src/utilities/formatNumberToE164.d.ts.map +1 -0
- package/dist/src/utilities/getConfig.d.ts +4 -0
- package/dist/src/utilities/getConfig.d.ts.map +1 -0
- package/dist/src/utilities/handleSubmitNumber.d.ts +24 -0
- package/dist/src/utilities/handleSubmitNumber.d.ts.map +1 -0
- package/dist/src/utilities/handleWaterfallRedirect.d.ts +2 -0
- package/dist/src/utilities/handleWaterfallRedirect.d.ts.map +1 -0
- package/dist/src/utilities/hasNumber.d.ts +2 -0
- package/dist/src/utilities/hasNumber.d.ts.map +1 -0
- package/dist/src/utilities/helpers.d.ts +6 -0
- package/dist/src/utilities/helpers.d.ts.map +1 -0
- package/dist/src/utilities/initTpay.d.ts +2 -0
- package/dist/src/utilities/initTpay.d.ts.map +1 -0
- package/dist/src/utilities/isCookieExists.d.ts +2 -0
- package/dist/src/utilities/isCookieExists.d.ts.map +1 -0
- package/dist/src/utilities/loadScriptInnerHtml.d.ts +3 -0
- package/dist/src/utilities/loadScriptInnerHtml.d.ts.map +1 -0
- package/dist/src/utilities/loadScriptSrc.d.ts +20 -0
- package/dist/src/utilities/loadScriptSrc.d.ts.map +1 -0
- package/dist/src/utilities/normaliseErrorCode.d.ts +8 -0
- package/dist/src/utilities/normaliseErrorCode.d.ts.map +1 -0
- package/dist/src/utilities/normalizePhoneNumber.d.ts +12 -0
- package/dist/src/utilities/normalizePhoneNumber.d.ts.map +1 -0
- package/dist/src/utilities/replaceUrlParam.d.ts +2 -0
- package/dist/src/utilities/replaceUrlParam.d.ts.map +1 -0
- package/dist/src/utilities/searchToObject.d.ts +3 -0
- package/dist/src/utilities/searchToObject.d.ts.map +1 -0
- package/dist/src/utilities/storeMsisdn.d.ts +4 -0
- package/dist/src/utilities/storeMsisdn.d.ts.map +1 -0
- package/dist/src/utilities/tracker.d.ts +2 -0
- package/dist/src/utilities/tracker.d.ts.map +1 -0
- package/dist/src/utilities/unblockUser.d.ts +7 -0
- package/dist/src/utilities/unblockUser.d.ts.map +1 -0
- package/dist/src/utilities/updateUrlWithParams.d.ts +2 -0
- package/dist/src/utilities/updateUrlWithParams.d.ts.map +1 -0
- package/dist/src/utilities/verifyAntifraudOnClick2Sms.d.ts +6 -0
- package/dist/src/utilities/verifyAntifraudOnClick2Sms.d.ts.map +1 -0
- package/dist/storeMsisdn-ChiBh8mI.js +58 -0
- package/dist/storeMsisdn-ChiBh8mI.js.map +1 -0
- package/dist/strategy.js +49 -1
- package/dist/strategy.js.map +1 -1
- package/dist/strategySlice-DEsw1xc-.js +1159 -0
- package/dist/strategySlice-DEsw1xc-.js.map +1 -0
- package/dist/tracker-B_zsMRN2.js +79 -0
- package/dist/tracker-B_zsMRN2.js.map +1 -0
- package/dist/tracker.js +4 -1
- package/dist/tracker.js.map +1 -1
- package/dist/types/{StrategyTypes-BlqY9peI.d.ts → StrategyTypes-LKeXDiPK.d.ts} +78 -2
- package/dist/types/click2smsFlow.d.ts +2 -2
- package/dist/types/oneClickFlow.d.ts +10 -2
- package/dist/types/searchToObject.d.ts +2 -2
- package/dist/types/strategy.d.ts +3 -3
- package/dist/unblockUser.js +107 -1
- package/dist/unblockUser.js.map +1 -1
- package/dist/updateUrlWithParams-ZaZt1BCf.js +15 -0
- package/dist/updateUrlWithParams-ZaZt1BCf.js.map +1 -0
- package/dist/ussdFlow.js +261 -1
- package/dist/ussdFlow.js.map +1 -1
- package/dist/verifyAntifraudOnClick2Sms.js +50 -1
- package/dist/verifyAntifraudOnClick2Sms.js.map +1 -1
- package/package.json +1 -1
- package/dist/RemoteDataState-lcf8PfJd.js +0 -2
- package/dist/RemoteDataState-lcf8PfJd.js.map +0 -1
- package/dist/api-geirVksI.js +0 -2
- package/dist/api-geirVksI.js.map +0 -1
- package/dist/cleanSearchParams-Dl7ZDlew.js +0 -2
- package/dist/cleanSearchParams-Dl7ZDlew.js.map +0 -1
- package/dist/formatNumberToE164-DaAFvpKD.js +0 -2
- package/dist/formatNumberToE164-DaAFvpKD.js.map +0 -1
- package/dist/handleWaterfallRedirect-DztqrthA.js +0 -2
- package/dist/handleWaterfallRedirect-DztqrthA.js.map +0 -1
- package/dist/helpers-CBmogWIZ.js +0 -2
- package/dist/helpers-CBmogWIZ.js.map +0 -1
- package/dist/loadScriptInnerHtml-B6v2-IGn.js +0 -2
- package/dist/loadScriptInnerHtml-B6v2-IGn.js.map +0 -1
- package/dist/main-CDmeQMF-.js +0 -2
- package/dist/main-CDmeQMF-.js.map +0 -1
- package/dist/normaliseErrorCode-CVpyJZ6_.js +0 -2
- package/dist/normaliseErrorCode-CVpyJZ6_.js.map +0 -1
- package/dist/storeMsisdn-Cjq8_qYH.js +0 -2
- package/dist/storeMsisdn-Cjq8_qYH.js.map +0 -1
- package/dist/strategySlice-BMNt18ck.js +0 -2
- package/dist/strategySlice-BMNt18ck.js.map +0 -1
- package/dist/tracker-DaaILhEr.js +0 -2
- package/dist/tracker-DaaILhEr.js.map +0 -1
- package/dist/types/OneClickTypes-BNg9Ru0u.d.ts +0 -71
- package/dist/updateUrlWithParams-C6-BX4TY.js +0 -2
- package/dist/updateUrlWithParams-C6-BX4TY.js.map +0 -1
package/dist/moRedirFlow.js
CHANGED
|
@@ -1,2 +1,330 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { __awaiter, __generator, __assign } from 'tslib';
|
|
2
|
+
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
3
|
+
import { S as Success, L as Loading, F as Failure, N as NothingYet } from './RemoteDataState-CwHLI23e.js';
|
|
4
|
+
import { c as countryToPhoneCode } from './formatNumberToE164-oPCiETQk.js';
|
|
5
|
+
import { searchToObject } from './searchToObject.js';
|
|
6
|
+
import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
|
|
7
|
+
import { t as tracker } from './tracker-B_zsMRN2.js';
|
|
8
|
+
import { u as updateUrlWithParams } from './updateUrlWithParams-ZaZt1BCf.js';
|
|
9
|
+
import { t as tryGetIPRangeName, i as identifyStrategy } from './strategySlice-DEsw1xc-.js';
|
|
10
|
+
import { c as cleanSearchParams } from './cleanSearchParams-B2jK3H1j.js';
|
|
11
|
+
import 'pacman-client';
|
|
12
|
+
import 'uuid';
|
|
13
|
+
import './getConfig.js';
|
|
14
|
+
import './api-oPdBWsMC.js';
|
|
15
|
+
|
|
16
|
+
var useMoRedirFlowState = function (useSelector) {
|
|
17
|
+
var currentState = useSelector(function (state) { return state.moRedirFlow.currentState; });
|
|
18
|
+
return currentState;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function moRedirFlowMatch(_a) {
|
|
22
|
+
var msisdnEntry = _a.msisdnEntry;
|
|
23
|
+
return function (state) {
|
|
24
|
+
switch (state.type) {
|
|
25
|
+
case 'MSISDNEntry':
|
|
26
|
+
return msisdnEntry(state.result);
|
|
27
|
+
default:
|
|
28
|
+
// TODO - this should be an error or something
|
|
29
|
+
return msisdnEntry(state.result);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Normalizes a phone number by:
|
|
36
|
+
* 1. Stripping non-digits.
|
|
37
|
+
* 2. Removing the known country code if provided (and present).
|
|
38
|
+
* 3. Ensuring the result has a leading '0'.
|
|
39
|
+
*
|
|
40
|
+
* @param phoneNumber The user-input phone number (e.g. "+971501234567").
|
|
41
|
+
* @param isoCountry (optional) ISO country code (e.g. "AE", "PK").
|
|
42
|
+
* @returns The normalized phone number with a leading '0'.
|
|
43
|
+
*/
|
|
44
|
+
var normalizePhoneNumber = function (phoneNumber, isoCountry) {
|
|
45
|
+
// 1. Remove non-digit characters
|
|
46
|
+
var cleanedNumber = phoneNumber.replace(/\D/g, '');
|
|
47
|
+
// 2. If a specific country is given, try removing *that* country code
|
|
48
|
+
if (isoCountry && countryToPhoneCode[isoCountry]) {
|
|
49
|
+
var countryCode = countryToPhoneCode[isoCountry];
|
|
50
|
+
if (cleanedNumber.startsWith(countryCode)) {
|
|
51
|
+
cleanedNumber = cleanedNumber.substring(countryCode.length);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// 3. Add leading zero if it’s not already present
|
|
55
|
+
if (!cleanedNumber.startsWith('0') && cleanedNumber.length > 0) {
|
|
56
|
+
cleanedNumber = "0".concat(cleanedNumber);
|
|
57
|
+
}
|
|
58
|
+
return cleanedNumber;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
var redirect = function (_a) {
|
|
62
|
+
var window = _a.window, slug = _a.slug, country = _a.country, msisdn = _a.msisdn, device = _a.device, offer = _a.offer, rockmanId = _a.rockmanId, ip_range_name = _a.ip_range_name, search = _a.search, extraParams = _a.extraParams, email = _a.email, password = _a.password;
|
|
63
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
64
|
+
var extraParamsQs, params, host, url;
|
|
65
|
+
var _b, _c, _d;
|
|
66
|
+
return __generator(this, function (_e) {
|
|
67
|
+
// Remove conflicting params from url
|
|
68
|
+
search = cleanSearchParams(search);
|
|
69
|
+
extraParamsQs = "&".concat(Object.keys(extraParams)
|
|
70
|
+
.map(function (k) { return (extraParams[k] ? "".concat(k, "=").concat(extraParams[k]) : ''); })
|
|
71
|
+
.filter(Boolean)
|
|
72
|
+
.join('&'));
|
|
73
|
+
params = new URLSearchParams(__assign(__assign(__assign(__assign({ action: 'redirect', slug: slug, country: country, device: device, offerId: offer.toString(), rockman_id: rockmanId, page: encodeURIComponent(window.location.href), antifraud_id: window.antifraud_id || '',
|
|
74
|
+
// More specific antifraud IDs will eventuallly replace antifraud_id
|
|
75
|
+
// https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25
|
|
76
|
+
antifraud_id_js_code: window.antifraud_id_js_code || '', antifraud_id_js_link: window.antifraud_id_js_link || '', network_type: ip_range_name ? '' : 'wifi', ip_address: window.pac_analytics.visitor.ip || '', ip_range_operator: window.pac_analytics.visitor.ipRangeOperator || '' }, (((_d = (_c = (_b = window.pac_analytics) === null || _b === void 0 ? void 0 : _b.visitor) === null || _c === void 0 ? void 0 : _c.page) === null || _d === void 0 ? void 0 : _d.includes('agency')) && { evinaTi: rockmanId })), (window.securityProcessId && { securityProcessId: window.securityProcessId })), (window.languageCode && { language_code: window.languageCode })), (email && password ? { email: email, password: password } : { msisdn: msisdn }))).toString();
|
|
77
|
+
host = window.DEV_BASE_URL || '';
|
|
78
|
+
url = "".concat(host, "/tallyman/v1/?").concat(params).concat(extraParamsQs).concat(search ? "&".concat(search) : '');
|
|
79
|
+
if (slug.includes('za-mtn-beyondvr-r7')) {
|
|
80
|
+
return [2 /*return*/, {
|
|
81
|
+
success: true,
|
|
82
|
+
rockman_id: rockmanId,
|
|
83
|
+
redirect_url: url
|
|
84
|
+
}];
|
|
85
|
+
}
|
|
86
|
+
return [2 /*return*/, fetch(url).then(function (x) { return x.json(); })];
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
function submitMSISDN(window, maybeConfig, internationalMSISDN, extraParams) {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
93
|
+
var config;
|
|
94
|
+
return __generator(this, function (_a) {
|
|
95
|
+
config = __assign({ offer: window.pac_analytics.visitor.offer }, (maybeConfig || {}));
|
|
96
|
+
return [2 /*return*/, submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams)];
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams) {
|
|
101
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
102
|
+
var slug, country, device, offer, search, newExtraParams, isSkipValidation, searchObj, msisdn, visitor, rockmanId, ip_range_name, _a, result, type, error;
|
|
103
|
+
return __generator(this, function (_b) {
|
|
104
|
+
switch (_b.label) {
|
|
105
|
+
case 0:
|
|
106
|
+
slug = config.slug, country = config.country, device = config.device, offer = config.offer;
|
|
107
|
+
search = window.location.search.substr(1) || '';
|
|
108
|
+
newExtraParams = extraParams || {};
|
|
109
|
+
isSkipValidation = false;
|
|
110
|
+
searchObj = searchToObject(window);
|
|
111
|
+
if (((searchObj === null || searchObj === void 0 ? void 0 : searchObj.success) === 'true' && searchObj['msisdn-alias'] === '1') || window.is_encrypted_msisdn === true) {
|
|
112
|
+
// Search param is set to 1 for header enrichment when the msisdn is masked
|
|
113
|
+
newExtraParams.encrypted_msisdn = '1';
|
|
114
|
+
}
|
|
115
|
+
if (newExtraParams.encrypted_msisdn === '1') {
|
|
116
|
+
isSkipValidation = true;
|
|
117
|
+
}
|
|
118
|
+
msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\d+/gi).join('');
|
|
119
|
+
visitor = window.pac_analytics.visitor;
|
|
120
|
+
rockmanId = visitor.rockmanId;
|
|
121
|
+
if (!(country === 'ci')) return [3 /*break*/, 2];
|
|
122
|
+
return [4 /*yield*/, tryGetIPRangeName(visitor)];
|
|
123
|
+
case 1:
|
|
124
|
+
_a = _b.sent();
|
|
125
|
+
return [3 /*break*/, 3];
|
|
126
|
+
case 2:
|
|
127
|
+
_a = null;
|
|
128
|
+
_b.label = 3;
|
|
129
|
+
case 3:
|
|
130
|
+
ip_range_name = _a;
|
|
131
|
+
return [4 /*yield*/, redirect({
|
|
132
|
+
window: window,
|
|
133
|
+
slug: slug,
|
|
134
|
+
country: country,
|
|
135
|
+
msisdn: msisdn,
|
|
136
|
+
device: device,
|
|
137
|
+
offer: offer,
|
|
138
|
+
rockmanId: rockmanId,
|
|
139
|
+
ip_range_name: ip_range_name,
|
|
140
|
+
search: search,
|
|
141
|
+
extraParams: newExtraParams
|
|
142
|
+
})];
|
|
143
|
+
case 4:
|
|
144
|
+
result = _b.sent();
|
|
145
|
+
if (result.success === false) {
|
|
146
|
+
type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';
|
|
147
|
+
error = new Error("".concat(type, ":\n").concat(result.message));
|
|
148
|
+
error.type = type;
|
|
149
|
+
console.error(error);
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
return [2 /*return*/, result.redirect_url];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
var mockedMSISDNEntrySuccess = {
|
|
161
|
+
currentState: {
|
|
162
|
+
type: 'MSISDNEntry',
|
|
163
|
+
result: Success({
|
|
164
|
+
href: '/product'
|
|
165
|
+
})
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
var mockedMSISDNEntryFailure = {
|
|
169
|
+
currentState: {
|
|
170
|
+
type: 'MSISDNEntry',
|
|
171
|
+
result: Failure({
|
|
172
|
+
errorType: 'InvalidMSISDN',
|
|
173
|
+
error: 'Invalid Mobile Number'
|
|
174
|
+
})
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
var defaultInitialState = {
|
|
178
|
+
currentState: {
|
|
179
|
+
type: 'MSISDNEntry',
|
|
180
|
+
result: NothingYet()
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
var setInitialState = function (window) {
|
|
184
|
+
var search = searchToObject(window);
|
|
185
|
+
if (search['mock-flow']) {
|
|
186
|
+
switch (search['current-state']) {
|
|
187
|
+
case 'msisdn-entry-failure-state':
|
|
188
|
+
return mockedMSISDNEntryFailure;
|
|
189
|
+
case 'msisdn-entry-success-state':
|
|
190
|
+
return mockedMSISDNEntrySuccess;
|
|
191
|
+
default:
|
|
192
|
+
console.error('Mock Flow not supported');
|
|
193
|
+
return defaultInitialState;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
return defaultInitialState;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
var initialState = setInitialState(window);
|
|
201
|
+
/**
|
|
202
|
+
* submitMSISDNAction
|
|
203
|
+
* @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}
|
|
204
|
+
|
|
205
|
+
* Calls redirec api that returns a redirect url
|
|
206
|
+
* Sets completed stated
|
|
207
|
+
*/
|
|
208
|
+
var submitMSISDNAction = createAsyncThunk('moRedirFlow/submitMSISDNAction', function (_a, _b) {
|
|
209
|
+
var window = _a.window, msisdn = _a.msisdn, extraParams = _a.extraParams;
|
|
210
|
+
var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
|
|
211
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
212
|
+
var state, _c, config, skipRedirectCall, redirect_url, href, _d, ex_1, errorType;
|
|
213
|
+
var _e, _f, _g, _h;
|
|
214
|
+
return __generator(this, function (_j) {
|
|
215
|
+
switch (_j.label) {
|
|
216
|
+
case 0:
|
|
217
|
+
state = getState();
|
|
218
|
+
if (!((_g = (_f = (_e = state === null || state === void 0 ? void 0 : state.strategy) === null || _e === void 0 ? void 0 : _e.currentState) === null || _f === void 0 ? void 0 : _f.data) === null || _g === void 0 ? void 0 : _g.config)) {
|
|
219
|
+
return [2 /*return*/, rejectWithValue({
|
|
220
|
+
errorType: 'UnexpectedState'
|
|
221
|
+
})];
|
|
222
|
+
}
|
|
223
|
+
_c = state.strategy.currentState.data, config = _c.config, skipRedirectCall = _c.skipRedirectCall, redirect_url = _c.redirect_url;
|
|
224
|
+
_j.label = 1;
|
|
225
|
+
case 1:
|
|
226
|
+
_j.trys.push([1, 7, , 8]);
|
|
227
|
+
// Start Redirect Api Call
|
|
228
|
+
tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn: msisdn });
|
|
229
|
+
if (!(skipRedirectCall && redirect_url)) return [3 /*break*/, 2];
|
|
230
|
+
_d = updateUrlWithParams(redirect_url, { msisdn: normalizePhoneNumber(msisdn, (_h = config === null || config === void 0 ? void 0 : config.country) === null || _h === void 0 ? void 0 : _h.toUpperCase()) });
|
|
231
|
+
return [3 /*break*/, 4];
|
|
232
|
+
case 2: return [4 /*yield*/, submitMSISDN(window, config, msisdn, extraParams)];
|
|
233
|
+
case 3:
|
|
234
|
+
_d = _j.sent();
|
|
235
|
+
_j.label = 4;
|
|
236
|
+
case 4:
|
|
237
|
+
href = _d;
|
|
238
|
+
tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn: msisdn });
|
|
239
|
+
if (!(extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true')) return [3 /*break*/, 6];
|
|
240
|
+
return [4 /*yield*/, storeMsisdn(msisdn)
|
|
241
|
+
.then(function (data) {
|
|
242
|
+
if (data && data.data && data.data.success) {
|
|
243
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');
|
|
247
|
+
}
|
|
248
|
+
})
|
|
249
|
+
.catch(function (error) {
|
|
250
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);
|
|
251
|
+
})];
|
|
252
|
+
case 5:
|
|
253
|
+
_j.sent();
|
|
254
|
+
_j.label = 6;
|
|
255
|
+
case 6:
|
|
256
|
+
// End Store Msisdn
|
|
257
|
+
return [2 /*return*/, {
|
|
258
|
+
type: 'MSISDNEntry',
|
|
259
|
+
result: Success({ href: href })
|
|
260
|
+
}];
|
|
261
|
+
case 7:
|
|
262
|
+
ex_1 = _j.sent();
|
|
263
|
+
console.warn(ex_1);
|
|
264
|
+
errorType = void 0;
|
|
265
|
+
switch (ex_1.type) {
|
|
266
|
+
case 'AlreadySubscribed':
|
|
267
|
+
errorType = 'AlreadySubscribed';
|
|
268
|
+
break;
|
|
269
|
+
case 'InvalidMSISDN':
|
|
270
|
+
errorType = 'InvalidMSISDN';
|
|
271
|
+
break;
|
|
272
|
+
default:
|
|
273
|
+
errorType = 'UnknownError';
|
|
274
|
+
}
|
|
275
|
+
tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {
|
|
276
|
+
msisdn: msisdn,
|
|
277
|
+
errorType: 'UnknownError'
|
|
278
|
+
});
|
|
279
|
+
return [2 /*return*/, rejectWithValue({
|
|
280
|
+
errorType: errorType,
|
|
281
|
+
productUrl: ex_1.productUrl
|
|
282
|
+
})];
|
|
283
|
+
case 8: return [2 /*return*/];
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
var backToStartAction = createAsyncThunk('moRedirFlow/backToStartAction', function (_, _a) {
|
|
289
|
+
var dispatch = _a.dispatch, rejectWithValue = _a.rejectWithValue;
|
|
290
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
291
|
+
return __generator(this, function (_b) {
|
|
292
|
+
try {
|
|
293
|
+
tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');
|
|
294
|
+
dispatch(identifyStrategy());
|
|
295
|
+
}
|
|
296
|
+
catch (ex) {
|
|
297
|
+
console.warn(ex);
|
|
298
|
+
return [2 /*return*/, rejectWithValue({
|
|
299
|
+
errorType: 'UnexpectedState'
|
|
300
|
+
})];
|
|
301
|
+
}
|
|
302
|
+
return [2 /*return*/];
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
var moRedirFlowSlice = createSlice({
|
|
307
|
+
name: 'moRedirFlow',
|
|
308
|
+
initialState: initialState,
|
|
309
|
+
reducers: {},
|
|
310
|
+
extraReducers: function (builder) {
|
|
311
|
+
builder
|
|
312
|
+
.addCase(submitMSISDNAction.pending, function (state) {
|
|
313
|
+
state.currentState = { type: 'MSISDNEntry', result: Loading() };
|
|
314
|
+
})
|
|
315
|
+
.addCase(submitMSISDNAction.fulfilled, function (state, action) {
|
|
316
|
+
state.currentState = action.payload;
|
|
317
|
+
})
|
|
318
|
+
.addCase(submitMSISDNAction.rejected, function (state, action) {
|
|
319
|
+
state.currentState = {
|
|
320
|
+
type: 'MSISDNEntry',
|
|
321
|
+
result: Failure(action.payload)
|
|
322
|
+
};
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
// Export reducers and actions
|
|
327
|
+
var moRedirFlowReducer = moRedirFlowSlice.reducer; moRedirFlowSlice.actions;
|
|
328
|
+
|
|
329
|
+
export { backToStartAction, moRedirFlowMatch, moRedirFlowReducer, submitMSISDNAction, useMoRedirFlowState };
|
|
2
330
|
//# sourceMappingURL=moRedirFlow.js.map
|
package/dist/moRedirFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moRedirFlow.js","sources":["../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../src/flows/moRedirFlow/match.ts","../src/utilities/normalizePhoneNumber.ts","../src/flows/moRedirFlow/api.ts","../src/flows/moRedirFlow/main.ts","../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { countryToPhoneCode } from './countryToPhoneCode';\n\n/**\n * Normalizes a phone number by:\n * 1. Stripping non-digits.\n * 2. Removing the known country code if provided (and present).\n * 3. Ensuring the result has a leading '0'.\n *\n * @param phoneNumber The user-input phone number (e.g. \"+971501234567\").\n * @param isoCountry (optional) ISO country code (e.g. \"AE\", \"PK\").\n * @returns The normalized phone number with a leading '0'.\n */\nexport const normalizePhoneNumber = (phoneNumber: string, isoCountry?: string): string => {\n // 1. Remove non-digit characters\n let cleanedNumber = phoneNumber.replace(/\\D/g, '');\n\n // 2. If a specific country is given, try removing *that* country code\n if (isoCountry && countryToPhoneCode[isoCountry]) {\n const countryCode = countryToPhoneCode[isoCountry];\n if (cleanedNumber.startsWith(countryCode)) {\n cleanedNumber = cleanedNumber.substring(countryCode.length);\n }\n } else {\n // (Optional) Fallback behavior if no valid isoCountry is passed:\n // e.g., check all known codes OR just do nothing special\n // For demonstration, we do nothing special:\n }\n\n // 3. Add leading zero if it’s not already present\n if (!cleanedNumber.startsWith('0') && cleanedNumber.length > 0) {\n cleanedNumber = `0${cleanedNumber}`;\n }\n\n return cleanedNumber;\n};\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IHash } from '../../sharedFlowTypes/StrategyTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParams,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParams: IHash;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n network_type: ip_range_name ? '' : 'wifi',\n ip_address: window.pac_analytics.visitor.ip || '',\n ip_range_operator: window.pac_analytics.visitor.ipRangeOperator || '',\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.is_encrypted_msisdn === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams.encrypted_msisdn = '1';\n }\n\n if (newExtraParams.encrypted_msisdn === '1') {\n isSkipValidation = true;\n }\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParams: newExtraParams\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { normalizePhoneNumber } from '../../utilities/normalizePhoneNumber';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { updateUrlWithParams } from '../../utilities/updateUrlWithParams';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nconst mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nconst mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\nconst defaultInitialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, skipRedirectCall, redirect_url } = state.strategy.currentState.data;\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href =\n skipRedirectCall && redirect_url\n ? updateUrlWithParams(redirect_url, { msisdn: normalizePhoneNumber(msisdn, config?.country?.toUpperCase()) })\n : await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('moRedirFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["useMoRedirFlowState","useSelector","state","moRedirFlow","currentState","moRedirFlowMatch","_a","msisdnEntry","type","result","normalizePhoneNumber","phoneNumber","isoCountry","cleanedNumber","replace","countryToPhoneCode","countryCode","startsWith","substring","length","concat","redirect","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParams","email","password","cleanSearchParams","extraParamsQs","Object","keys","map","k","filter","Boolean","join","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","network_type","ip_address","pac_analytics","visitor","ip","ip_range_operator","ipRangeOperator","_d","_c","_b","includes","evinaTi","securityProcessId","languageCode","language_code","host","DEV_BASE_URL","url","success","redirect_url","fetch","then","x","json","submitMSISDN","maybeConfig","internationalMSISDN","config","submitMSISDNWithConfig","substr","newExtraParams","isSkipValidation","searchObj","searchToObject","is_encrypted_msisdn","encrypted_msisdn","match","tryGetIPRangeName","sent","message","error","Error","console","mockedMSISDNEntrySuccess","RDS.Success","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_g","_e","strategy","_f","data","skipRedirectCall","tracker","advancedInFlow","updateUrlWithParams","_h","toUpperCase","_j","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","productUrl","backToStartAction","_","dispatch","identifyStrategy","ex","moRedirFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moRedirFlowReducer","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"moRedirFlow.js","sources":["../../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../../src/flows/moRedirFlow/match.ts","../../src/utilities/normalizePhoneNumber.ts","../../src/flows/moRedirFlow/api.ts","../../src/flows/moRedirFlow/main.ts","../../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { countryToPhoneCode } from './countryToPhoneCode';\n\n/**\n * Normalizes a phone number by:\n * 1. Stripping non-digits.\n * 2. Removing the known country code if provided (and present).\n * 3. Ensuring the result has a leading '0'.\n *\n * @param phoneNumber The user-input phone number (e.g. \"+971501234567\").\n * @param isoCountry (optional) ISO country code (e.g. \"AE\", \"PK\").\n * @returns The normalized phone number with a leading '0'.\n */\nexport const normalizePhoneNumber = (phoneNumber: string, isoCountry?: string): string => {\n // 1. Remove non-digit characters\n let cleanedNumber = phoneNumber.replace(/\\D/g, '');\n\n // 2. If a specific country is given, try removing *that* country code\n if (isoCountry && countryToPhoneCode[isoCountry]) {\n const countryCode = countryToPhoneCode[isoCountry];\n if (cleanedNumber.startsWith(countryCode)) {\n cleanedNumber = cleanedNumber.substring(countryCode.length);\n }\n } else {\n // (Optional) Fallback behavior if no valid isoCountry is passed:\n // e.g., check all known codes OR just do nothing special\n // For demonstration, we do nothing special:\n }\n\n // 3. Add leading zero if it’s not already present\n if (!cleanedNumber.startsWith('0') && cleanedNumber.length > 0) {\n cleanedNumber = `0${cleanedNumber}`;\n }\n\n return cleanedNumber;\n};\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IHash } from '../../sharedFlowTypes/StrategyTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParams,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParams: IHash;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n network_type: ip_range_name ? '' : 'wifi',\n ip_address: window.pac_analytics.visitor.ip || '',\n ip_range_operator: window.pac_analytics.visitor.ipRangeOperator || '',\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.is_encrypted_msisdn === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams.encrypted_msisdn = '1';\n }\n\n if (newExtraParams.encrypted_msisdn === '1') {\n isSkipValidation = true;\n }\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParams: newExtraParams\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { normalizePhoneNumber } from '../../utilities/normalizePhoneNumber';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { updateUrlWithParams } from '../../utilities/updateUrlWithParams';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nconst mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nconst mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\nconst defaultInitialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, skipRedirectCall, redirect_url } = state.strategy.currentState.data;\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href =\n skipRedirectCall && redirect_url\n ? updateUrlWithParams(redirect_url, { msisdn: normalizePhoneNumber(msisdn, config?.country?.toUpperCase()) })\n : await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('moRedirFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["RDS.Success","RDS.Failure","RDS.NothingYet","RDS.Loading"],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Map of code → type
|
|
2
|
+
var ERROR_CODE_MAP = {
|
|
3
|
+
'1': 'Success',
|
|
4
|
+
'2': 'Pending',
|
|
5
|
+
'10': 'AlreadySubscribed',
|
|
6
|
+
'11': 'BlacklistedMsisdn',
|
|
7
|
+
'12': 'DuplicatedRequest',
|
|
8
|
+
'21': 'ExpiredPin',
|
|
9
|
+
'22': 'InvalidPin',
|
|
10
|
+
'23': 'PinLimitExceeded',
|
|
11
|
+
'24': 'PinGenerationError',
|
|
12
|
+
'25': 'PinAlreadyUsed',
|
|
13
|
+
'31': 'InactiveOperator',
|
|
14
|
+
'32': 'InvalidMSISDN',
|
|
15
|
+
'33': 'InvalidSubscriptionId',
|
|
16
|
+
'34': 'NotEligibleMsisdn',
|
|
17
|
+
'35': 'ValidationIssue',
|
|
18
|
+
'36': 'InsufficientBalance',
|
|
19
|
+
'37': 'AntiFraudError',
|
|
20
|
+
'38': 'VasBlocked',
|
|
21
|
+
'39': 'AccountSuspended',
|
|
22
|
+
'40': 'SalesCapReached',
|
|
23
|
+
'50': 'SubscriptionApiFailure',
|
|
24
|
+
'75': 'ReSubscriptionBlocked',
|
|
25
|
+
'76': 'ReLeadBlocked',
|
|
26
|
+
'99': 'UnspecifiedError'
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Normalise a raw error code string into its semantic ErrorType.
|
|
30
|
+
* Falls back to 'Unknown' if the code isn’t in the map.
|
|
31
|
+
*/
|
|
32
|
+
var normaliseErrorCode = function (errorCode) { var _a; return (_a = ERROR_CODE_MAP[errorCode]) !== null && _a !== void 0 ? _a : 'UnknownError'; };
|
|
33
|
+
var redirectErrorTypes = [
|
|
34
|
+
'AlreadySubscribed',
|
|
35
|
+
'SalesCapReached',
|
|
36
|
+
'AntiFraudError',
|
|
37
|
+
'BlacklistedMsisdn',
|
|
38
|
+
'VasBlocked',
|
|
39
|
+
'NotEligibleMsisdn',
|
|
40
|
+
'UnspecifiedError'
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
export { normaliseErrorCode as n, redirectErrorTypes as r };
|
|
44
|
+
//# sourceMappingURL=normaliseErrorCode-CBLYxW-a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normaliseErrorCode-CBLYxW-a.js","sources":["../../src/utilities/normaliseErrorCode.ts"],"sourcesContent":["// Define the allowed return values as a union (optional, but gives you autocomplete/validation)\nexport type ErrorType =\n | 'Success'\n | 'Pending'\n | 'AlreadySubscribed'\n | 'BlacklistedMsisdn'\n | 'DuplicatedRequest'\n | 'ExpiredPin'\n | 'InvalidPin'\n | 'PinLimitExceeded'\n | 'PinGenerationError'\n | 'PinAlreadyUsed'\n | 'InactiveOperator'\n | 'InvalidMSISDN'\n | 'InvalidSubscriptionId'\n | 'NotEligibleMsisdn'\n | 'ValidationIssue'\n | 'InsufficientBalance'\n | 'AntiFraudError'\n | 'VasBlocked'\n | 'AccountSuspended'\n | 'SalesCapReached'\n | 'SubscriptionApiFailure'\n | 'ReSubscriptionBlocked'\n | 'ReLeadBlocked'\n | 'UnspecifiedError'\n | 'UnexpectedState'\n | 'SomethingWentWrong'\n | 'TPayConfirmError'\n | 'UnknownError'\n | string;\n// Map of code → type\nconst ERROR_CODE_MAP: Record<string, ErrorType> = {\n '1': 'Success',\n '2': 'Pending',\n '10': 'AlreadySubscribed',\n '11': 'BlacklistedMsisdn',\n '12': 'DuplicatedRequest',\n '21': 'ExpiredPin',\n '22': 'InvalidPin',\n '23': 'PinLimitExceeded',\n '24': 'PinGenerationError',\n '25': 'PinAlreadyUsed',\n '31': 'InactiveOperator',\n '32': 'InvalidMSISDN',\n '33': 'InvalidSubscriptionId',\n '34': 'NotEligibleMsisdn',\n '35': 'ValidationIssue',\n '36': 'InsufficientBalance',\n '37': 'AntiFraudError',\n '38': 'VasBlocked',\n '39': 'AccountSuspended',\n '40': 'SalesCapReached',\n '50': 'SubscriptionApiFailure',\n '75': 'ReSubscriptionBlocked',\n '76': 'ReLeadBlocked',\n '99': 'UnspecifiedError'\n};\n\n/**\n * Normalise a raw error code string into its semantic ErrorType.\n * Falls back to 'Unknown' if the code isn’t in the map.\n */\nexport const normaliseErrorCode = (errorCode: string): ErrorType => ERROR_CODE_MAP[errorCode] ?? 'UnknownError';\n\nexport const redirectErrorTypes: ErrorType[] = [\n 'AlreadySubscribed',\n 'SalesCapReached',\n 'AntiFraudError',\n 'BlacklistedMsisdn',\n 'VasBlocked',\n 'NotEligibleMsisdn',\n 'UnspecifiedError'\n];\n"],"names":[],"mappings":"AA+BA;AACA,IAAM,cAAc,GAA8B;AAChD,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,oBAAoB;AAC1B,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,uBAAuB;AAC7B,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,IAAI,EAAE,uBAAuB;AAC7B,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,kBAAkB;CACzB,CAAC;AAEF;;;AAGG;AACU,IAAA,kBAAkB,GAAG,UAAC,SAAiB,EAAgB,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,cAAc,CAAC,SAAS,CAAC,mCAAI,cAAc,CAAA,GAAC;AAEnG,IAAA,kBAAkB,GAAgB;IAC7C,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,YAAY;IACZ,mBAAmB;IACnB,kBAAkB;;;;;"}
|