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/moFlow.js
CHANGED
|
@@ -1,2 +1,323 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { __awaiter, __generator, __read, __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 { h as handleWaterfallRedirect } from './handleWaterfallRedirect-h5K2zX3N.js';
|
|
5
|
+
import { n as normaliseErrorCode, r as redirectErrorTypes } from './normaliseErrorCode-CBLYxW-a.js';
|
|
6
|
+
import { searchToObject } from './searchToObject.js';
|
|
7
|
+
import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
|
|
8
|
+
import { t as tracker } from './tracker-B_zsMRN2.js';
|
|
9
|
+
import { c as cleanSearchParams } from './cleanSearchParams-B2jK3H1j.js';
|
|
10
|
+
import { i as identifyStrategy } from './strategySlice-DEsw1xc-.js';
|
|
11
|
+
import 'pacman-client';
|
|
12
|
+
import 'uuid';
|
|
13
|
+
import './getConfig.js';
|
|
14
|
+
import './formatNumberToE164-oPCiETQk.js';
|
|
15
|
+
import './api-oPdBWsMC.js';
|
|
16
|
+
|
|
17
|
+
var useMoFlowState = function (useSelector) {
|
|
18
|
+
var currentState = useSelector(function (state) { return state.moFlow.currentState; });
|
|
19
|
+
return currentState;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
function moFlowMatch(_a) {
|
|
23
|
+
var msisdnEntry = _a.msisdnEntry;
|
|
24
|
+
return function (state) {
|
|
25
|
+
switch (state.type) {
|
|
26
|
+
case 'MSISDNEntry':
|
|
27
|
+
return msisdnEntry(state.result);
|
|
28
|
+
default:
|
|
29
|
+
// TODO - this should be an error or something
|
|
30
|
+
return msisdnEntry(state.result);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var triggerMessage = function (_a) {
|
|
36
|
+
var window = _a.window, slug = _a.slug, country = _a.country, msisdn = _a.msisdn, device = _a.device, offer = _a.offer, rockmanId = _a.rockmanId, extraParamsQs = _a.extraParamsQs, search = _a.search;
|
|
37
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
38
|
+
var partnerAjaxResopnse, _b, params, queryString, host, url;
|
|
39
|
+
var _c;
|
|
40
|
+
return __generator(this, function (_d) {
|
|
41
|
+
switch (_d.label) {
|
|
42
|
+
case 0:
|
|
43
|
+
if (!window.api_ajax_url) return [3 /*break*/, 2];
|
|
44
|
+
return [4 /*yield*/, fetch(window.api_ajax_url).then(function (x) { return x.json(); })];
|
|
45
|
+
case 1:
|
|
46
|
+
_b = _d.sent();
|
|
47
|
+
return [3 /*break*/, 3];
|
|
48
|
+
case 2:
|
|
49
|
+
_b = null;
|
|
50
|
+
_d.label = 3;
|
|
51
|
+
case 3:
|
|
52
|
+
partnerAjaxResopnse = _b;
|
|
53
|
+
// Remove conflicting params from url
|
|
54
|
+
search = cleanSearchParams(search);
|
|
55
|
+
params = {
|
|
56
|
+
action: 'trigger-message',
|
|
57
|
+
slug: slug,
|
|
58
|
+
country: country,
|
|
59
|
+
msisdn: msisdn,
|
|
60
|
+
device: device,
|
|
61
|
+
offerId: offer,
|
|
62
|
+
rockman_id: rockmanId,
|
|
63
|
+
page: encodeURIComponent((_c = window === null || window === void 0 ? void 0 : window.location) === null || _c === void 0 ? void 0 : _c.href),
|
|
64
|
+
sam_g_token: window.reCaptchaToken || '',
|
|
65
|
+
language_code: window.languageCode || '',
|
|
66
|
+
partner_form_action: (partnerAjaxResopnse === null || partnerAjaxResopnse === void 0 ? void 0 : partnerAjaxResopnse.form_action) ? encodeURIComponent(partnerAjaxResopnse === null || partnerAjaxResopnse === void 0 ? void 0 : partnerAjaxResopnse.form_action) : '',
|
|
67
|
+
antifraud_id: window.antifraud_id || '',
|
|
68
|
+
// More specific antifraud IDs will eventuallly replace antifraud_id
|
|
69
|
+
// https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25
|
|
70
|
+
antifraud_id_js_code: window.antifraud_id_js_code || '',
|
|
71
|
+
antifraud_id_js_link: window.antifraud_id_js_link || ''
|
|
72
|
+
};
|
|
73
|
+
queryString = Object.entries(params)
|
|
74
|
+
.filter(function (_a) {
|
|
75
|
+
var _b = __read(_a, 2); _b[0]; var value = _b[1];
|
|
76
|
+
return value;
|
|
77
|
+
})
|
|
78
|
+
.map(function (_a) {
|
|
79
|
+
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
80
|
+
return "".concat(key, "=").concat(value);
|
|
81
|
+
})
|
|
82
|
+
.join('&');
|
|
83
|
+
host = window.DEV_BASE_URL || '';
|
|
84
|
+
url = "".concat(host, "/tallyman/v1/?").concat(queryString).concat(search ? "&".concat(search) : '', "&").concat(extraParamsQs);
|
|
85
|
+
if (window.MOCK_TRIGGER_MESSAGE_RESPONSE) {
|
|
86
|
+
return [2 /*return*/, window.MOCK_TRIGGER_MESSAGE_RESPONSE];
|
|
87
|
+
}
|
|
88
|
+
return [2 /*return*/, fetch(url).then(function (x) { return x.json(); })];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
function submitMSISDN(window, maybeConfig, internationalMSISDN, extraParams) {
|
|
95
|
+
var _a, _b;
|
|
96
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
97
|
+
var config;
|
|
98
|
+
return __generator(this, function (_c) {
|
|
99
|
+
config = __assign(__assign({}, (maybeConfig || {})), { offer: (_b = (_a = window.pac_analytics) === null || _a === void 0 ? void 0 : _a.visitor) === null || _b === void 0 ? void 0 : _b.offer });
|
|
100
|
+
return [2 /*return*/, submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams)];
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams) {
|
|
105
|
+
var _a, _b;
|
|
106
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
107
|
+
var slug, country, device, offer, search, extraParamsQs, msisdn, rockmanId, result, defaultType, type, error;
|
|
108
|
+
return __generator(this, function (_c) {
|
|
109
|
+
switch (_c.label) {
|
|
110
|
+
case 0:
|
|
111
|
+
slug = config.slug, country = config.country, device = config.device, offer = config.offer;
|
|
112
|
+
search = window.location.search.substr(1) || '';
|
|
113
|
+
extraParamsQs = !extraParams
|
|
114
|
+
? ''
|
|
115
|
+
: "&".concat(Object.keys(extraParams)
|
|
116
|
+
.map(function (k) { return "".concat(k, "=").concat(extraParams[k]); })
|
|
117
|
+
.join('&'));
|
|
118
|
+
msisdn = ((_a = internationalMSISDN.match(/\d+/gi)) === null || _a === void 0 ? void 0 : _a.join('')) || '';
|
|
119
|
+
rockmanId = window.pac_analytics.visitor.rockmanId;
|
|
120
|
+
return [4 /*yield*/, triggerMessage({
|
|
121
|
+
window: window,
|
|
122
|
+
slug: slug,
|
|
123
|
+
country: country,
|
|
124
|
+
msisdn: msisdn,
|
|
125
|
+
device: device,
|
|
126
|
+
offer: offer,
|
|
127
|
+
rockmanId: rockmanId,
|
|
128
|
+
search: search,
|
|
129
|
+
extraParamsQs: extraParamsQs
|
|
130
|
+
})];
|
|
131
|
+
case 1:
|
|
132
|
+
result = _c.sent();
|
|
133
|
+
if (result.success === false) {
|
|
134
|
+
defaultType = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMsisdn';
|
|
135
|
+
type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;
|
|
136
|
+
error = new Error("".concat(type, ":\n").concat(result.message));
|
|
137
|
+
Object.assign(error, {
|
|
138
|
+
type: type,
|
|
139
|
+
productUrl: (_b = result.product_url) !== null && _b !== void 0 ? _b : ''
|
|
140
|
+
});
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
return [2 /*return*/, __assign(__assign({}, result), { keyword: result.displayKeyword })]; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>
|
|
151
|
+
// !!window.pac_analytics.visitor['x-requested-with'] &&
|
|
152
|
+
// window.pac_analytics.visitor['x-requested-with'] !== null &&
|
|
153
|
+
// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1
|
|
154
|
+
// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`
|
|
155
|
+
// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))
|
|
156
|
+
// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`
|
|
157
|
+
// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;
|
|
158
|
+
|
|
159
|
+
var mockedMSISDNEntrySuccess = {
|
|
160
|
+
currentState: {
|
|
161
|
+
type: 'MSISDNEntry',
|
|
162
|
+
result: Success({
|
|
163
|
+
keyword: 'TEST OK',
|
|
164
|
+
shortcode: '777'
|
|
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
|
+
case 'check-subscription-success-state':
|
|
192
|
+
return mockedMSISDNEntrySuccess;
|
|
193
|
+
default:
|
|
194
|
+
console.error('Mock Flow not supported');
|
|
195
|
+
return defaultInitialState;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
return defaultInitialState;
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
var initialState = setInitialState(window);
|
|
203
|
+
/**
|
|
204
|
+
* submitMSISDNAction
|
|
205
|
+
* @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}
|
|
206
|
+
|
|
207
|
+
* Calls trigger-message api that returns a short code and key word
|
|
208
|
+
* Sets completed stated
|
|
209
|
+
*/
|
|
210
|
+
var submitMSISDNAction = createAsyncThunk('moFlow/submitMSISDNAction', function (_a, _b) {
|
|
211
|
+
var window = _a.window, msisdn = _a.msisdn, extraParams = _a.extraParams;
|
|
212
|
+
var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
|
|
213
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
214
|
+
var state, config, keywordAndShortcode, ex_1, errorType;
|
|
215
|
+
var _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
216
|
+
return __generator(this, function (_m) {
|
|
217
|
+
switch (_m.label) {
|
|
218
|
+
case 0:
|
|
219
|
+
state = getState();
|
|
220
|
+
if (!((_e = (_d = (_c = state === null || state === void 0 ? void 0 : state.strategy) === null || _c === void 0 ? void 0 : _c.currentState) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.config)) {
|
|
221
|
+
return [2 /*return*/, rejectWithValue({
|
|
222
|
+
errorType: 'UnexpectedState'
|
|
223
|
+
})];
|
|
224
|
+
}
|
|
225
|
+
config = state.strategy.currentState.data.config;
|
|
226
|
+
_m.label = 1;
|
|
227
|
+
case 1:
|
|
228
|
+
_m.trys.push([1, 5, , 6]);
|
|
229
|
+
// Start Trigger Message
|
|
230
|
+
tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn: msisdn });
|
|
231
|
+
return [4 /*yield*/, submitMSISDN(window, config, msisdn, extraParams)];
|
|
232
|
+
case 2:
|
|
233
|
+
keywordAndShortcode = _m.sent();
|
|
234
|
+
tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn: msisdn });
|
|
235
|
+
if (!(extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true')) return [3 /*break*/, 4];
|
|
236
|
+
return [4 /*yield*/, storeMsisdn(msisdn)
|
|
237
|
+
.then(function (data) {
|
|
238
|
+
if (data && data.data && data.data.success) {
|
|
239
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');
|
|
243
|
+
}
|
|
244
|
+
})
|
|
245
|
+
.catch(function (error) {
|
|
246
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);
|
|
247
|
+
})];
|
|
248
|
+
case 3:
|
|
249
|
+
_m.sent();
|
|
250
|
+
_m.label = 4;
|
|
251
|
+
case 4:
|
|
252
|
+
// End Store Msisdn
|
|
253
|
+
return [2 /*return*/, {
|
|
254
|
+
type: 'MSISDNEntry',
|
|
255
|
+
result: Success(__assign({}, keywordAndShortcode))
|
|
256
|
+
}];
|
|
257
|
+
case 5:
|
|
258
|
+
ex_1 = _m.sent();
|
|
259
|
+
console.warn(ex_1);
|
|
260
|
+
errorType = ex_1.type;
|
|
261
|
+
tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {
|
|
262
|
+
msisdn: msisdn,
|
|
263
|
+
errorType: errorType
|
|
264
|
+
});
|
|
265
|
+
if (redirectErrorTypes.includes(errorType) && ((_g = (_f = window === null || window === void 0 ? void 0 : window.pac_analytics) === null || _f === void 0 ? void 0 : _f.visitor) === null || _g === void 0 ? void 0 : _g.waterfallRedirectUrl)) {
|
|
266
|
+
tracker.customEvent('Flow', 'redirect', 'waterfall-redirect', {
|
|
267
|
+
redirect_url: (_j = (_h = window === null || window === void 0 ? void 0 : window.pac_analytics) === null || _h === void 0 ? void 0 : _h.visitor) === null || _j === void 0 ? void 0 : _j.waterfallRedirectUrl,
|
|
268
|
+
errorType: errorType
|
|
269
|
+
});
|
|
270
|
+
handleWaterfallRedirect((_l = (_k = window === null || window === void 0 ? void 0 : window.pac_analytics) === null || _k === void 0 ? void 0 : _k.visitor) === null || _l === void 0 ? void 0 : _l.waterfallRedirectUrl);
|
|
271
|
+
}
|
|
272
|
+
return [2 /*return*/, rejectWithValue({
|
|
273
|
+
errorType: errorType,
|
|
274
|
+
productUrl: ex_1.productUrl
|
|
275
|
+
})];
|
|
276
|
+
case 6: return [2 /*return*/];
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
var backToStartAction = createAsyncThunk('moFlow/backToStartAction', function (_, _a) {
|
|
282
|
+
var dispatch = _a.dispatch, rejectWithValue = _a.rejectWithValue;
|
|
283
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
284
|
+
return __generator(this, function (_b) {
|
|
285
|
+
try {
|
|
286
|
+
tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');
|
|
287
|
+
dispatch(identifyStrategy());
|
|
288
|
+
}
|
|
289
|
+
catch (ex) {
|
|
290
|
+
console.warn(ex);
|
|
291
|
+
return [2 /*return*/, rejectWithValue({
|
|
292
|
+
errorType: 'UnexpectedState'
|
|
293
|
+
})];
|
|
294
|
+
}
|
|
295
|
+
return [2 /*return*/];
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
var moFlowSlice = createSlice({
|
|
300
|
+
name: 'moFlow',
|
|
301
|
+
initialState: initialState,
|
|
302
|
+
reducers: {},
|
|
303
|
+
extraReducers: function (builder) {
|
|
304
|
+
builder
|
|
305
|
+
.addCase(submitMSISDNAction.pending, function (state) {
|
|
306
|
+
state.currentState = { type: 'MSISDNEntry', result: Loading() };
|
|
307
|
+
})
|
|
308
|
+
.addCase(submitMSISDNAction.fulfilled, function (state, action) {
|
|
309
|
+
state.currentState = action.payload;
|
|
310
|
+
})
|
|
311
|
+
.addCase(submitMSISDNAction.rejected, function (state, action) {
|
|
312
|
+
state.currentState = {
|
|
313
|
+
type: 'MSISDNEntry',
|
|
314
|
+
result: Failure(action.payload)
|
|
315
|
+
};
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
// Export reducers and actions
|
|
320
|
+
var moFlowReducer = moFlowSlice.reducer; moFlowSlice.actions;
|
|
321
|
+
|
|
322
|
+
export { backToStartAction, moFlowMatch, moFlowReducer, submitMSISDNAction, useMoFlowState };
|
|
2
323
|
//# sourceMappingURL=moFlow.js.map
|
package/dist/moFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => 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 { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs,\n search\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : '',\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 };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${search ? `&${search}` : ''}&${extraParamsQs}`;\n\n if (window.MOCK_TRIGGER_MESSAGE_RESPONSE) {\n return window.MOCK_TRIGGER_MESSAGE_RESPONSE;\n }\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { normaliseErrorCode } from '../../utilities/normaliseErrorCode';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n // pick a default based on message, then override with error_code if available\n const defaultType = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMsisdn';\n\n const type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;\n\n // build, augment, log and throw\n const error = new Error(`${type}:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n\n Object.assign(error, {\n type,\n productUrl: result.product_url ?? ''\n });\n\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = decodeURIComponent(checkResult.product_url);\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { handleWaterfallRedirect } from '../../utilities/handleWaterfallRedirect';\nimport { redirectErrorTypes } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\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 case 'check-subscription-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 trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\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>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n\n const errorType = ex.type as MSISDNEntryErrorTypes;\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType\n });\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.waterfallRedirectUrl) {\n tracker.customEvent('tallyman.v1-mo', 'redirect', 'waterfall-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.waterfallRedirectUrl,\n errorType\n });\n handleWaterfallRedirect(window?.pac_analytics?.visitor?.waterfallRedirectUrl);\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>('moFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-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 moFlowSlice = createSlice({\n name: 'moFlow',\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: moFlowReducer, actions: moFlowActions } = moFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","search","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","cleanSearchParams","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","language_code","languageCode","partner_form_action","form_action","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","MOCK_TRIGGER_MESSAGE_RESPONSE","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","substr","keys","k","match","sent","success","defaultType","message","error_code","normaliseErrorCode","error","Error","assign","productUrl","product_url","__assign","keyword","displayKeyword","mockedMSISDNEntrySuccess","RDS.Success","shortcode","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","console","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_e","strategy","data","tracker","advancedInFlow","keywordAndShortcode","_m","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","redirectErrorTypes","includes","_f","_g","waterfallRedirectUrl","redirect_url","_j","_h","handleWaterfallRedirect","_l","_k","backToStartAction","_","dispatch","identifyStrategy","ex","moFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"moFlow.js","sources":["../../src/flows/moFlow/hooks/useMoFlowState.ts","../../src/flows/moFlow/match.ts","../../src/flows/moFlow/api.ts","../../src/flows/moFlow/main.ts","../../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => 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 { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs,\n search\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : '',\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 };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${search ? `&${search}` : ''}&${extraParamsQs}`;\n\n if (window.MOCK_TRIGGER_MESSAGE_RESPONSE) {\n return window.MOCK_TRIGGER_MESSAGE_RESPONSE;\n }\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { normaliseErrorCode } from '../../utilities/normaliseErrorCode';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n // pick a default based on message, then override with error_code if available\n const defaultType = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMsisdn';\n\n const type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;\n\n // build, augment, log and throw\n const error = new Error(`${type}:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n\n Object.assign(error, {\n type,\n productUrl: result.product_url ?? ''\n });\n\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = decodeURIComponent(checkResult.product_url);\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { handleWaterfallRedirect } from '../../utilities/handleWaterfallRedirect';\nimport { redirectErrorTypes } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\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 case 'check-subscription-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 trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\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>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n\n const errorType = ex.type as MSISDNEntryErrorTypes;\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType\n });\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.waterfallRedirectUrl) {\n tracker.customEvent('Flow', 'redirect', 'waterfall-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.waterfallRedirectUrl,\n errorType\n });\n handleWaterfallRedirect(window?.pac_analytics?.visitor?.waterfallRedirectUrl);\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>('moFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-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 moFlowSlice = createSlice({\n name: 'moFlow',\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: moFlowReducer, actions: moFlowActions } = moFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["RDS.Success","RDS.Failure","RDS.NothingYet","RDS.Loading"],"mappings":"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"}
|