ouisys-engine 5.0.142 → 5.0.143
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/click2smsFlow.js +1 -1
- package/dist/click2smsFlow.js.map +1 -1
- package/dist/pinFlow.js +1 -1
- package/dist/pinFlow.js.map +1 -1
- package/package.json +1 -1
package/dist/click2smsFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as t,__generator as r,__assign as o}from"tslib";import{createAsyncThunk as e,createSlice as n}from"@reduxjs/toolkit";import{S as i,L as a,F as u,N as c}from"./RemoteDataState-lcf8PfJd.js";import{t as s}from"./tracker-DaaILhEr.js";import{c as l}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";var d=function(e){var n=e.window,i=e.country,a=e.slug,u=e.offer,c=e.rockmanId,s=e.keyword,d=e.operator,v=e.search;return t(void 0,void 0,void 0,(function(){var t,e,f,p,y,m,h;return r(this,(function(r){return v=l(v),t=new URLSearchParams(o(o({action:"oc2sms",country:i,slug:a,offerId:u.toString(),page:encodeURIComponent(n.location.href),device:"smart",rockman_id:c,ip_address:null===(y=null===(p=null==n?void 0:n.pac_analytics)||void 0===p?void 0:p.visitor)||void 0===y?void 0:y.ip,ip_range_operator:null===(h=null===(m=null==n?void 0:n.pac_analytics)||void 0===m?void 0:m.visitor)||void 0===h?void 0:h.ipRangeOperator},s&&{keyword:s}),d&&{operator:d})).toString(),e=n.DEV_BASE_URL||"",f="".concat(e,"/tallyman/v1/?").concat(t).concat(v?"&".concat(v):""),[2,fetch(f).then((function(t){return t.json()}))]}))}))};function v(e,n,i,a,u){return t(this,void 0,void 0,(function(){var t,u,c,s,l,v,f,p,y;return r(this,(function(r){switch(r.label){case 0:return n&&"keywordAndShortCode"===n.tag?(t=n.keyword,u=n.shortcode,[2,o({type:"SingleSubmissionResult"},{keyword:t,shortcode:u})]):(c=e.pac_analytics.visitor.offer,s=o({offer:e.pac_analytics.visitor.offer},n),l=s.country,v=s.slug,f=e.pac_analytics.visitor.rockmanId,p=e.location.search.substr(1)||"",[4,d({window:e,country:l,slug:v,offer:c,rockmanId:f,keyword:a,operator:i,search:p})]);case 1:if((y=r.sent()).success)return[2,o({type:"SingleSubmissionResult"},{keyword:"".concat(a||y.displayKeyword).concat(y.uid?" ".concat(y.uid):""),shortcode:y.shortcode})];throw y.message}}))}))}function f(e,n,i,a,u){return t(this,void 0,void 0,(function(){var u,c,s,l=this;return r(this,(function(d){switch(d.label){case 0:return u=Promise.all(i.map((function(i){return t(l,void 0,void 0,(function(){var t,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,v(e,n,i,a)];case 1:return t=r.sent(),[2,(s=o(o({},t),{operator:i}),{type:"right",value:s})];case 2:return u=r.sent(),[2,(c=u,{type:"left",value:c})];case 3:return[2]}var c,s}))}))}))),[4,Promise.resolve(u)];case 1:if((c=d.sent()).every((function(t){return"left"===t.type})))throw c[0].value;return s=[],c.map((function(t){if("right"===t.type){var r=t.value;s.push({keyword:null==r?void 0:r.keyword,shortcode:null==r?void 0:r.shortcode,operator:null==r?void 0:r.operator})}return t})),[2,{type:"MultiOperatorSubmissionResult",data:s}]}}))}))}var p=function(e,n,i,a){return t(void 0,void 0,void 0,(function(){return r(this,(function(t){return n&&"keywordAndShortCode"===n.tag?[2,o({type:"SingleSubmissionResult"},{keyword:n.keyword,shortcode:n.shortcode})]:n&&"keyword"===n.tag?[2,y(e,n,i)]:[2,y(e,n,null)]}))}))};function y(e,n,i,a){return t(this,void 0,void 0,(function(){var t,a;return r(this,(function(r){return!0===(t=o({offer:e.pac_analytics.visitor.offer},n)).automaticallySubmitAllOperators&&t.operators&&t.operators.length>0?[2,f(e,n,t.operators,i)]:(a=n.operators&&n.operators.length>0?n.operators[0]:null,[2,v(e,n,a,i)])}))}))}var m={currentState:{type:"LOAD_OC2SMS",result:c()}},h=e("click2Flow/loadOc2smsAction",(function(e,n){var a=e.window,u=n.getState,c=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,n,l,d,v,f,y,m;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(f=null===(v=null===(d=null==t?void 0:t.strategy)||void 0===d?void 0:d.currentState)||void 0===v?void 0:v.data)||void 0===f?void 0:f.config))return[2,c("UnexpectedState")];e=null===(m=null===(y=t.strategy.currentState)||void 0===y?void 0:y.data)||void 0===m?void 0:m.config,r.label=1;case 1:return r.trys.push([1,3,,4]),"keywordAndShortCode"===e.tag?[2,{type:"LOAD_OC2SMS",result:i(o({type:"SingleSubmissionResult"},e))}]:(s.customEvent("Flow","advance-auto","load-click2sms"),[4,p(a,e)]);case 2:return n=r.sent(),s.customEvent("Flow","advance-auto","loaded-click2sms",n),[2,{type:"LOAD_OC2SMS",result:i(n)}];case 3:return l=r.sent(),console.warn(l),s.customEvent("Flow","advance-auto","load-click2sms-failure",l.toString()),[2,c(l.toString())];case 4:return[2]}}))}))})),S=n({name:"click2smsFlow",initialState:m,reducers:{},extraReducers:function(t){t.addCase(h.pending,(function(t){t.currentState={type:"LOAD_OC2SMS",result:a()}})).addCase(h.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(h.rejected,(function(t,r){t.currentState={type:"LOAD_OC2SMS",result:u(r.payload)}}))}}),w=S.reducer;S.actions;var g=function(t){return t((function(t){return t.click2smsFlow.currentState}))},k=function(t){var r,o=t((function(t){return t.click2smsFlow.currentState}));return null===(r=null==o?void 0:o.result)||void 0===r?void 0:r.data};function _(t){var r=t.load;return function(t){return t.type,r(t.result)}}export{_ as click2smsFlowMatch,w as click2smsFlowReducer,h as loadOc2smsAction,g as useClick2smsFlowState,k as useKeyWordShortCode};
|
|
1
|
+
import{__awaiter as t,__generator as r,__assign as o}from"tslib";import{createAsyncThunk as e,createSlice as n}from"@reduxjs/toolkit";import{S as i,L as a,F as u,N as c}from"./RemoteDataState-lcf8PfJd.js";import{t as s}from"./tracker-DaaILhEr.js";import{c as l}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";var d=function(e){var n=e.window,i=e.country,a=e.slug,u=e.offer,c=e.rockmanId,s=e.keyword,d=e.operator,v=e.search;return t(void 0,void 0,void 0,(function(){var t,e,f,p,y,m,h;return r(this,(function(r){return v=l(v),t=new URLSearchParams(o(o({action:"oc2sms",country:i,slug:a,offerId:u.toString(),page:encodeURIComponent(n.location.href),device:"smart",rockman_id:c,ip_address:(null===(y=null===(p=null==n?void 0:n.pac_analytics)||void 0===p?void 0:p.visitor)||void 0===y?void 0:y.ip)||"",ip_range_operator:(null===(h=null===(m=null==n?void 0:n.pac_analytics)||void 0===m?void 0:m.visitor)||void 0===h?void 0:h.ipRangeOperator)||""},s&&{keyword:s}),d&&{operator:d})).toString(),e=n.DEV_BASE_URL||"",f="".concat(e,"/tallyman/v1/?").concat(t).concat(v?"&".concat(v):""),[2,fetch(f).then((function(t){return t.json()}))]}))}))};function v(e,n,i,a,u){return t(this,void 0,void 0,(function(){var t,u,c,s,l,v,f,p,y;return r(this,(function(r){switch(r.label){case 0:return n&&"keywordAndShortCode"===n.tag?(t=n.keyword,u=n.shortcode,[2,o({type:"SingleSubmissionResult"},{keyword:t,shortcode:u})]):(c=e.pac_analytics.visitor.offer,s=o({offer:e.pac_analytics.visitor.offer},n),l=s.country,v=s.slug,f=e.pac_analytics.visitor.rockmanId,p=e.location.search.substr(1)||"",[4,d({window:e,country:l,slug:v,offer:c,rockmanId:f,keyword:a,operator:i,search:p})]);case 1:if((y=r.sent()).success)return[2,o({type:"SingleSubmissionResult"},{keyword:"".concat(a||y.displayKeyword).concat(y.uid?" ".concat(y.uid):""),shortcode:y.shortcode})];throw y.message}}))}))}function f(e,n,i,a,u){return t(this,void 0,void 0,(function(){var u,c,s,l=this;return r(this,(function(d){switch(d.label){case 0:return u=Promise.all(i.map((function(i){return t(l,void 0,void 0,(function(){var t,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,v(e,n,i,a)];case 1:return t=r.sent(),[2,(s=o(o({},t),{operator:i}),{type:"right",value:s})];case 2:return u=r.sent(),[2,(c=u,{type:"left",value:c})];case 3:return[2]}var c,s}))}))}))),[4,Promise.resolve(u)];case 1:if((c=d.sent()).every((function(t){return"left"===t.type})))throw c[0].value;return s=[],c.map((function(t){if("right"===t.type){var r=t.value;s.push({keyword:null==r?void 0:r.keyword,shortcode:null==r?void 0:r.shortcode,operator:null==r?void 0:r.operator})}return t})),[2,{type:"MultiOperatorSubmissionResult",data:s}]}}))}))}var p=function(e,n,i,a){return t(void 0,void 0,void 0,(function(){return r(this,(function(t){return n&&"keywordAndShortCode"===n.tag?[2,o({type:"SingleSubmissionResult"},{keyword:n.keyword,shortcode:n.shortcode})]:n&&"keyword"===n.tag?[2,y(e,n,i)]:[2,y(e,n,null)]}))}))};function y(e,n,i,a){return t(this,void 0,void 0,(function(){var t,a;return r(this,(function(r){return!0===(t=o({offer:e.pac_analytics.visitor.offer},n)).automaticallySubmitAllOperators&&t.operators&&t.operators.length>0?[2,f(e,n,t.operators,i)]:(a=n.operators&&n.operators.length>0?n.operators[0]:null,[2,v(e,n,a,i)])}))}))}var m={currentState:{type:"LOAD_OC2SMS",result:c()}},h=e("click2Flow/loadOc2smsAction",(function(e,n){var a=e.window,u=n.getState,c=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,n,l,d,v,f,y,m;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(f=null===(v=null===(d=null==t?void 0:t.strategy)||void 0===d?void 0:d.currentState)||void 0===v?void 0:v.data)||void 0===f?void 0:f.config))return[2,c("UnexpectedState")];e=null===(m=null===(y=t.strategy.currentState)||void 0===y?void 0:y.data)||void 0===m?void 0:m.config,r.label=1;case 1:return r.trys.push([1,3,,4]),"keywordAndShortCode"===e.tag?[2,{type:"LOAD_OC2SMS",result:i(o({type:"SingleSubmissionResult"},e))}]:(s.customEvent("Flow","advance-auto","load-click2sms"),[4,p(a,e)]);case 2:return n=r.sent(),s.customEvent("Flow","advance-auto","loaded-click2sms",n),[2,{type:"LOAD_OC2SMS",result:i(n)}];case 3:return l=r.sent(),console.warn(l),s.customEvent("Flow","advance-auto","load-click2sms-failure",l.toString()),[2,c(l.toString())];case 4:return[2]}}))}))})),S=n({name:"click2smsFlow",initialState:m,reducers:{},extraReducers:function(t){t.addCase(h.pending,(function(t){t.currentState={type:"LOAD_OC2SMS",result:a()}})).addCase(h.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(h.rejected,(function(t,r){t.currentState={type:"LOAD_OC2SMS",result:u(r.payload)}}))}}),w=S.reducer;S.actions;var g=function(t){return t((function(t){return t.click2smsFlow.currentState}))},k=function(t){var r,o=t((function(t){return t.click2smsFlow.currentState}));return null===(r=null==o?void 0:o.result)||void 0===r?void 0:r.data};function _(t){var r=t.load;return function(t){return t.type,r(t.result)}}export{_ as click2smsFlowMatch,w as click2smsFlowReducer,h as loadOc2smsAction,g as useClick2smsFlowState,k as useKeyWordShortCode};
|
|
2
2
|
//# sourceMappingURL=click2smsFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click2smsFlow.js","sources":["../src/flows/click2smsFlow/api.ts","../src/flows/click2smsFlow/main.ts","../src/flows/click2smsFlow/click2smsFlowSlice.ts","../src/flows/click2smsFlow/hooks/useClick2smsFlowState.ts","../src/flows/click2smsFlow/hooks/useKeyWordShortCode.ts","../src/flows/click2smsFlow/match.ts"],"sourcesContent":["import { IFetchResult } from '../../sharedFlowTypes/Click2smsTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst oc2sms = async ({\n window,\n country,\n slug,\n offer,\n rockmanId,\n keyword,\n operator,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n offer: string;\n rockmanId: string;\n keyword: string;\n operator: string;\n search: string;\n}): Promise<IFetchResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = new URLSearchParams({\n action: 'oc2sms',\n country,\n slug,\n offerId: offer.toString(),\n page: encodeURIComponent(window.location.href),\n device: 'smart',\n rockman_id: rockmanId,\n ip_address: window?.pac_analytics?.visitor?.ip,\n ip_range_operator: window?.pac_analytics?.visitor?.ipRangeOperator,\n ...(keyword && { keyword }),\n ...(operator && { operator })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${search ? `&${search}` : ''}`;\n return fetch(url).then((x) => x.json());\n};\n\nexport { oc2sms };\n","import {\n IClick2smsConfig,\n IFetchResult,\n IKeywordShortcode,\n MultiOperatorSubmissionResult,\n SingleSubmissionResult\n} from '../../sharedFlowTypes/Click2smsTypes';\nimport { oc2sms } from './api';\n\nasync function loadOnce(\n window: Window,\n maybeConfig: IClick2smsConfig,\n operator?: string,\n keyword?: string,\n _shortcode?: string\n): Promise<SingleSubmissionResult> {\n if (!!maybeConfig && maybeConfig.tag === 'keywordAndShortCode') {\n const { keyword: keywordFromConfig, shortcode: shortcodeFromConfig } = maybeConfig;\n return {\n type: 'SingleSubmissionResult',\n ...({ keyword: keywordFromConfig, shortcode: shortcodeFromConfig } as IKeywordShortcode)\n };\n }\n const { offer } = window.pac_analytics.visitor;\n const config = { offer: window.pac_analytics.visitor.offer, ...maybeConfig };\n\n const { country, slug } = config;\n const { rockmanId } = window.pac_analytics.visitor;\n const search = window.location.search.substr(1) || '';\n\n const result: IFetchResult = await oc2sms({\n window,\n country,\n slug,\n offer,\n rockmanId,\n keyword,\n operator,\n search\n });\n if (!result.success) {\n throw result.message;\n } else {\n return {\n type: 'SingleSubmissionResult',\n ...{\n keyword: `${keyword || result.displayKeyword}${result.uid ? ` ${result.uid}` : ''}`,\n shortcode: result.shortcode\n }\n };\n }\n}\ntype Either<L, R> = { type: 'left'; value: L } | { type: 'right'; value: R };\nfunction right<L, R>(r: R) {\n return { type: 'right', value: r } as Either<L, R>;\n}\nfunction left<L, R>(l: L) {\n return { type: 'left', value: l } as Either<L, R>;\n}\n\nasync function loadForMultipleOperators(\n window: Window,\n maybeConfig: IClick2smsConfig,\n operators: string[],\n keyword?: string,\n shortcode?: string\n): Promise<MultiOperatorSubmissionResult> {\n const results = Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await loadOnce(window, maybeConfig, o, keyword, shortcode);\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const finalResults = await Promise.resolve(results);\n if (finalResults.every((r) => r.type === 'left')) {\n // no submission worked\n throw finalResults[0].value;\n } else {\n const arrResult: Array<IKeywordShortcode> = [];\n finalResults.map((obj) => {\n if (obj.type === 'right') {\n const r = obj.value as IKeywordShortcode;\n arrResult.push({ keyword: r?.keyword, shortcode: r?.shortcode, operator: r?.operator });\n }\n return obj;\n });\n\n return {\n type: 'MultiOperatorSubmissionResult',\n data: arrResult\n };\n }\n}\n\nexport const load = async (\n window: Window,\n maybeConfig: IClick2smsConfig,\n keyword?: string,\n shortcode?: string\n): Promise<SingleSubmissionResult | MultiOperatorSubmissionResult> => {\n if (!!maybeConfig && maybeConfig.tag === 'keywordAndShortCode') {\n return {\n type: 'SingleSubmissionResult',\n ...({ keyword: maybeConfig.keyword, shortcode: maybeConfig.shortcode } as IKeywordShortcode)\n };\n }\n if (!!maybeConfig && maybeConfig.tag === 'keyword') {\n return load1(window, maybeConfig, keyword, shortcode);\n }\n return load1(window, maybeConfig, null, null);\n};\n\nexport async function load1(\n window: Window,\n maybeConfig: IClick2smsConfig,\n keyword?: string,\n shortcode?: string\n): Promise<SingleSubmissionResult | MultiOperatorSubmissionResult> {\n const config = { offer: window.pac_analytics.visitor.offer, ...maybeConfig };\n\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return loadForMultipleOperators(window, maybeConfig, config.operators, keyword, shortcode);\n }\n const singleOperator = maybeConfig.operators && maybeConfig.operators.length > 0 ? maybeConfig.operators[0] : null;\n return loadOnce(window, maybeConfig, singleOperator, keyword, shortcode);\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { Click2smsFlowState, IClick2smsConfig, LOAD_OC2SMSState } from '../../sharedFlowTypes/Click2smsTypes';\nimport { IHash, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { tracker } from '../../utilities/tracker';\nimport { load } from './main';\n\nconst initialState: Click2smsFlowState = {\n currentState: {\n type: 'LOAD_OC2SMS',\n result: RDS.NothingYet()\n }\n};\n\ninterface LOAD_OC2SMSArgs {\n window: Window;\n extraParams?: IHash;\n}\n/**\n * loadOc2smsAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls oc2sms api that returns a keyword and short code\n *\n */\nexport const loadOc2smsAction = createAsyncThunk<\n LOAD_OC2SMSState,\n LOAD_OC2SMSArgs,\n {\n rejectValue: string;\n }\n // @ts-ignore\n>('click2Flow/loadOc2smsAction', async ({ window }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue('UnexpectedState');\n }\n const maybeConfig = (state.strategy.currentState?.data?.config as any) as IClick2smsConfig;\n\n try {\n if (maybeConfig.tag === 'keywordAndShortCode') {\n return {\n type: 'LOAD_OC2SMS',\n result: RDS.Success({\n type: 'SingleSubmissionResult',\n ...maybeConfig\n })\n };\n }\n // if ((!!maybeConfig && maybeConfig.tag !== 'keyword') || !maybeConfig) {\n\n // Start Load Click 2sms\n tracker.customEvent('Flow', 'advance-auto', 'load-click2sms');\n const result = await load(window, maybeConfig);\n tracker.customEvent('Flow', 'advance-auto', 'loaded-click2sms', result);\n // End Load Click 2sms\n return {\n type: 'LOAD_OC2SMS',\n result: RDS.Success(result)\n };\n } catch (ex) {\n console.warn(ex);\n tracker.customEvent('Flow', 'advance-auto', 'load-click2sms-failure', ex.toString());\n\n return rejectWithValue(ex.toString() as string);\n }\n});\n\nconst click2smsFlowSlice = createSlice({\n name: 'click2smsFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(loadOc2smsAction.pending, (state) => {\n state.currentState = { type: 'LOAD_OC2SMS', result: RDS.Loading() };\n })\n .addCase(loadOc2smsAction.fulfilled, (state, action: PayloadAction<LOAD_OC2SMSState>) => {\n state.currentState = action.payload;\n })\n .addCase(loadOc2smsAction.rejected, (state, action: PayloadAction<any>) => {\n state.currentState = {\n type: 'LOAD_OC2SMS',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: click2smsFlowReducer, actions: click2smsFlowActions } = click2smsFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectClick2smsRedirFlowState = (state: any) => state.click2smsFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useClick2smsFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.click2smsFlow.currentState);\n return currentState;\n};\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { IWithMultiKeywordShortcode } from '../../../sharedFlowTypes/Click2smsTypes';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useKeyWordShortCode = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.click2smsFlow.currentState);\n // @ts-ignore\n const data: IWithMultiKeywordShortcode = currentState?.result?.data;\n return data;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { Click2smsFlowCurrentState, IWithMultiKeywordShortcode } from '../../sharedFlowTypes/Click2smsTypes';\n\nfunction click2smsFlowMatch<R>({\n load\n}: {\n load: (rds: RDS.RemoteDataState<string, IWithMultiKeywordShortcode>) => R;\n}): (state: Click2smsFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'LOAD_OC2SMS':\n return load(state.result);\n default:\n // TODO - this should be an error or something\n return load(state.result);\n }\n };\n}\n\nexport { click2smsFlowMatch };\n"],"names":["oc2sms","_a","window","country","slug","offer","rockmanId","keyword","operator","search","cleanSearchParams","params","URLSearchParams","__assign","action","offerId","toString","page","encodeURIComponent","location","href","device","rockman_id","ip_address","_c","pac_analytics","_b","visitor","ip","ip_range_operator","_d","_e","ipRangeOperator","host","DEV_BASE_URL","url","concat","fetch","then","x","json","loadOnce","maybeConfig","_shortcode","tag","keywordFromConfig","shortcodeFromConfig","type","shortcode","config","substr","result","sent","success","displayKeyword","uid","message","loadForMultipleOperators","operators","results","Promise","all","map","o","__awaiter","_this","singleResult","r","value","l","error_1","resolve","finalResults","every","arrResult_1","obj","push","data","load","load1","automaticallySubmitAllOperators","length","singleOperator","initialState","currentState","RDS.NothingYet","loadOc2smsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","_g","_f","RDS.Success","tracker","customEvent","_h","console","warn","ex_1","click2smsFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","click2smsFlowReducer","reducer","actions","useClick2smsFlowState","useSelector","click2smsFlow","useKeyWordShortCode","click2smsFlowMatch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"click2smsFlow.js","sources":["../src/flows/click2smsFlow/api.ts","../src/flows/click2smsFlow/main.ts","../src/flows/click2smsFlow/click2smsFlowSlice.ts","../src/flows/click2smsFlow/hooks/useClick2smsFlowState.ts","../src/flows/click2smsFlow/hooks/useKeyWordShortCode.ts","../src/flows/click2smsFlow/match.ts"],"sourcesContent":["import { IFetchResult } from '../../sharedFlowTypes/Click2smsTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst oc2sms = async ({\n window,\n country,\n slug,\n offer,\n rockmanId,\n keyword,\n operator,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n offer: string;\n rockmanId: string;\n keyword: string;\n operator: string;\n search: string;\n}): Promise<IFetchResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = new URLSearchParams({\n action: 'oc2sms',\n country,\n slug,\n offerId: offer.toString(),\n page: encodeURIComponent(window.location.href),\n device: 'smart',\n rockman_id: rockmanId,\n ip_address: window?.pac_analytics?.visitor?.ip || '',\n ip_range_operator: window?.pac_analytics?.visitor?.ipRangeOperator || '',\n ...(keyword && { keyword }),\n ...(operator && { operator })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${search ? `&${search}` : ''}`;\n return fetch(url).then((x) => x.json());\n};\n\nexport { oc2sms };\n","import {\n IClick2smsConfig,\n IFetchResult,\n IKeywordShortcode,\n MultiOperatorSubmissionResult,\n SingleSubmissionResult\n} from '../../sharedFlowTypes/Click2smsTypes';\nimport { oc2sms } from './api';\n\nasync function loadOnce(\n window: Window,\n maybeConfig: IClick2smsConfig,\n operator?: string,\n keyword?: string,\n _shortcode?: string\n): Promise<SingleSubmissionResult> {\n if (!!maybeConfig && maybeConfig.tag === 'keywordAndShortCode') {\n const { keyword: keywordFromConfig, shortcode: shortcodeFromConfig } = maybeConfig;\n return {\n type: 'SingleSubmissionResult',\n ...({ keyword: keywordFromConfig, shortcode: shortcodeFromConfig } as IKeywordShortcode)\n };\n }\n const { offer } = window.pac_analytics.visitor;\n const config = { offer: window.pac_analytics.visitor.offer, ...maybeConfig };\n\n const { country, slug } = config;\n const { rockmanId } = window.pac_analytics.visitor;\n const search = window.location.search.substr(1) || '';\n\n const result: IFetchResult = await oc2sms({\n window,\n country,\n slug,\n offer,\n rockmanId,\n keyword,\n operator,\n search\n });\n if (!result.success) {\n throw result.message;\n } else {\n return {\n type: 'SingleSubmissionResult',\n ...{\n keyword: `${keyword || result.displayKeyword}${result.uid ? ` ${result.uid}` : ''}`,\n shortcode: result.shortcode\n }\n };\n }\n}\ntype Either<L, R> = { type: 'left'; value: L } | { type: 'right'; value: R };\nfunction right<L, R>(r: R) {\n return { type: 'right', value: r } as Either<L, R>;\n}\nfunction left<L, R>(l: L) {\n return { type: 'left', value: l } as Either<L, R>;\n}\n\nasync function loadForMultipleOperators(\n window: Window,\n maybeConfig: IClick2smsConfig,\n operators: string[],\n keyword?: string,\n shortcode?: string\n): Promise<MultiOperatorSubmissionResult> {\n const results = Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await loadOnce(window, maybeConfig, o, keyword, shortcode);\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const finalResults = await Promise.resolve(results);\n if (finalResults.every((r) => r.type === 'left')) {\n // no submission worked\n throw finalResults[0].value;\n } else {\n const arrResult: Array<IKeywordShortcode> = [];\n finalResults.map((obj) => {\n if (obj.type === 'right') {\n const r = obj.value as IKeywordShortcode;\n arrResult.push({ keyword: r?.keyword, shortcode: r?.shortcode, operator: r?.operator });\n }\n return obj;\n });\n\n return {\n type: 'MultiOperatorSubmissionResult',\n data: arrResult\n };\n }\n}\n\nexport const load = async (\n window: Window,\n maybeConfig: IClick2smsConfig,\n keyword?: string,\n shortcode?: string\n): Promise<SingleSubmissionResult | MultiOperatorSubmissionResult> => {\n if (!!maybeConfig && maybeConfig.tag === 'keywordAndShortCode') {\n return {\n type: 'SingleSubmissionResult',\n ...({ keyword: maybeConfig.keyword, shortcode: maybeConfig.shortcode } as IKeywordShortcode)\n };\n }\n if (!!maybeConfig && maybeConfig.tag === 'keyword') {\n return load1(window, maybeConfig, keyword, shortcode);\n }\n return load1(window, maybeConfig, null, null);\n};\n\nexport async function load1(\n window: Window,\n maybeConfig: IClick2smsConfig,\n keyword?: string,\n shortcode?: string\n): Promise<SingleSubmissionResult | MultiOperatorSubmissionResult> {\n const config = { offer: window.pac_analytics.visitor.offer, ...maybeConfig };\n\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return loadForMultipleOperators(window, maybeConfig, config.operators, keyword, shortcode);\n }\n const singleOperator = maybeConfig.operators && maybeConfig.operators.length > 0 ? maybeConfig.operators[0] : null;\n return loadOnce(window, maybeConfig, singleOperator, keyword, shortcode);\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { Click2smsFlowState, IClick2smsConfig, LOAD_OC2SMSState } from '../../sharedFlowTypes/Click2smsTypes';\nimport { IHash, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { tracker } from '../../utilities/tracker';\nimport { load } from './main';\n\nconst initialState: Click2smsFlowState = {\n currentState: {\n type: 'LOAD_OC2SMS',\n result: RDS.NothingYet()\n }\n};\n\ninterface LOAD_OC2SMSArgs {\n window: Window;\n extraParams?: IHash;\n}\n/**\n * loadOc2smsAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls oc2sms api that returns a keyword and short code\n *\n */\nexport const loadOc2smsAction = createAsyncThunk<\n LOAD_OC2SMSState,\n LOAD_OC2SMSArgs,\n {\n rejectValue: string;\n }\n // @ts-ignore\n>('click2Flow/loadOc2smsAction', async ({ window }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue('UnexpectedState');\n }\n const maybeConfig = (state.strategy.currentState?.data?.config as any) as IClick2smsConfig;\n\n try {\n if (maybeConfig.tag === 'keywordAndShortCode') {\n return {\n type: 'LOAD_OC2SMS',\n result: RDS.Success({\n type: 'SingleSubmissionResult',\n ...maybeConfig\n })\n };\n }\n // if ((!!maybeConfig && maybeConfig.tag !== 'keyword') || !maybeConfig) {\n\n // Start Load Click 2sms\n tracker.customEvent('Flow', 'advance-auto', 'load-click2sms');\n const result = await load(window, maybeConfig);\n tracker.customEvent('Flow', 'advance-auto', 'loaded-click2sms', result);\n // End Load Click 2sms\n return {\n type: 'LOAD_OC2SMS',\n result: RDS.Success(result)\n };\n } catch (ex) {\n console.warn(ex);\n tracker.customEvent('Flow', 'advance-auto', 'load-click2sms-failure', ex.toString());\n\n return rejectWithValue(ex.toString() as string);\n }\n});\n\nconst click2smsFlowSlice = createSlice({\n name: 'click2smsFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(loadOc2smsAction.pending, (state) => {\n state.currentState = { type: 'LOAD_OC2SMS', result: RDS.Loading() };\n })\n .addCase(loadOc2smsAction.fulfilled, (state, action: PayloadAction<LOAD_OC2SMSState>) => {\n state.currentState = action.payload;\n })\n .addCase(loadOc2smsAction.rejected, (state, action: PayloadAction<any>) => {\n state.currentState = {\n type: 'LOAD_OC2SMS',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: click2smsFlowReducer, actions: click2smsFlowActions } = click2smsFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectClick2smsRedirFlowState = (state: any) => state.click2smsFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useClick2smsFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.click2smsFlow.currentState);\n return currentState;\n};\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { IWithMultiKeywordShortcode } from '../../../sharedFlowTypes/Click2smsTypes';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useKeyWordShortCode = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.click2smsFlow.currentState);\n // @ts-ignore\n const data: IWithMultiKeywordShortcode = currentState?.result?.data;\n return data;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { Click2smsFlowCurrentState, IWithMultiKeywordShortcode } from '../../sharedFlowTypes/Click2smsTypes';\n\nfunction click2smsFlowMatch<R>({\n load\n}: {\n load: (rds: RDS.RemoteDataState<string, IWithMultiKeywordShortcode>) => R;\n}): (state: Click2smsFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'LOAD_OC2SMS':\n return load(state.result);\n default:\n // TODO - this should be an error or something\n return load(state.result);\n }\n };\n}\n\nexport { click2smsFlowMatch };\n"],"names":["oc2sms","_a","window","country","slug","offer","rockmanId","keyword","operator","search","cleanSearchParams","params","URLSearchParams","__assign","action","offerId","toString","page","encodeURIComponent","location","href","device","rockman_id","ip_address","_c","_b","pac_analytics","visitor","ip","ip_range_operator","_d","_e","ipRangeOperator","host","DEV_BASE_URL","url","concat","fetch","then","x","json","loadOnce","maybeConfig","_shortcode","tag","keywordFromConfig","shortcodeFromConfig","type","shortcode","config","substr","result","sent","success","displayKeyword","uid","message","loadForMultipleOperators","operators","results","Promise","all","map","o","__awaiter","_this","singleResult","r","value","l","error_1","resolve","finalResults","every","arrResult_1","obj","push","data","load","load1","automaticallySubmitAllOperators","length","singleOperator","initialState","currentState","RDS.NothingYet","loadOc2smsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","_g","_f","RDS.Success","tracker","customEvent","_h","console","warn","ex_1","click2smsFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","click2smsFlowReducer","reducer","actions","useClick2smsFlowState","useSelector","click2smsFlow","useKeyWordShortCode","click2smsFlowMatch"],"mappings":"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"}
|
package/dist/pinFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as e,__generator as n,__read as r,__assign as t}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,L as s,S as c,F as d}from"./RemoteDataState-lcf8PfJd.js";import{i as u,c as l,P as v}from"./strategySlice-BMNt18ck.js";import{n as p,r as f}from"./normaliseErrorCode-CcFWuZeI.js";import{searchToObject as m}from"./searchToObject.js";import{s as y}from"./storeMsisdn-Cjq8_qYH.js";import{t as w}from"./tracker-DaaILhEr.js";import{b as S}from"./api-geirVksI.js";import{l as _,r as g,a as h}from"./helpers-xPhGBX-B.js";import{l as I}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as b}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"pacman-client";import"uuid";var E=function(e){return e((function(e){return e.pinFlow.currentState}))};function k(e){var n=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return n(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var U=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},N=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.msisdn,u=t.rockmanId,l=t.extraParams,v=t.search,p=t.uniqid,f=t.evinaTid;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,S,_;return n(this,(function(n){return e=U(a),t="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),v=b(v),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:d,rockman_id:u,sam_evina_tid:f,page:encodeURIComponent(null===(_=null==i?void 0:i.location)||void 0===_?void 0:_.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:p||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",S="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(v?"&".concat(v):""),[2,fetch(S).then((function(e){return e.json()}))]}))}))},P=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.rockmanId,u=t.pin,l=t.extraParams,v=t.uniqid,p=t.evinaTid,f=t.search;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,_,g;return n(this,(function(n){return e=U(a),t="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f=b(f),m={action:"verify-pin",country:S(a),slug:o,device:s,offerId:c,rockman_id:d,pin:u,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:p,uniqid:v,antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",_="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(f?"&".concat(f):""),[2,fetch(_).then((function(e){return e.json()}))]}))}))},j=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,d=r.rockmanId,u=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,v,p,f;return n(this,(function(n){return e=i.location.href,r=i.pac_analytics.visitor.ip,v=new URLSearchParams(t(t({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:d,client_lpu:e},u&&{operator:u}),l&&{uniqid:l})),r&&v.append("client_ip",r),p=i.DEV_BASE_URL||"",f="".concat(p,"/tallyman/v1/?").concat(v.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function C(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return n(this,(function(n){return!0===(e=t({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,M(r,e,a,e.operators,o)]:[2,D(r,e,a,o)]}))}))}var R="";function D(r,i,a,o){var s;return e(this,void 0,void 0,(function(){var e,c,d,u,l,v,f,y,w,S,_,g,h,b,E,k,U,P,C,D;return n(this,(function(n){switch(n.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return c=o||{},d=!1,("true"===(null==(u=m(r))?void 0:u.success)&&"1"===u["msisdn-alias"]||!0===r.skip_validation)&&(c["skip-validation"]="1"),"1"===c["skip-validation"]&&(d=!0),l=d?a||r.msisdn:a.match(/\d+/gi).join(""),v=r.pac_analytics.visitor.rockmanId,f=i.slug,y=i.country,w=i.device,S=i.offer,_=r.location.search.substr(1)||"",g=R&&""!==R?"&mcpUniqid=".concat(R):"",h=void 0!==r&&r.tid?r.tid:"",[4,N({window:r,country:y,slug:f,device:w,offer:S,msisdn:l,rockmanId:v,extraParams:c,search:_,uniqid:g,evinaTid:h})];case 1:if(!0===(b=n.sent()).isContentBlocked&&(r.isContentBlocked=!0),!1!==b.success)return[3,2];throw E=b.message.includes("ALREADY SUBSCRIBED")?"AlreadySubscribed":/invalid/i.test(b.message)?"InvalidMsisdn":b.message.includes("duplicated_request")?"DuplicatedRequest":null,k=b.error_code?p(b.error_code):E,U=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(b.message)),Object.assign(U,{type:k,message:b.message,productUrl:null!==(s=b.product_url)&&void 0!==s?s:""}),U;case 2:if(r.operator=b.operator,P={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(y&&b.operator&&(P[y.toLowerCase()]&&P[y.toLowerCase()][b.operator.toLowerCase()]||"iq"===y.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];n.label=3;case 3:return n.trys.push([3,5,,6]),[4,j({window:r,country:y,slug:f,device:w,offer:S,rockmanId:v,operator:b.operator,uniqid:g})];case 4:return!1===(C=n.sent()).success?console.warn(C.message):(I(C.source),R=C.uniqid),[3,6];case 5:return D=n.sent(),console.warn(D),[3,6];case 6:return b.javascript&&I(b.javascript),[2,t({type:"SingleMSISDNSubmissionResult",pin:b.pin,uniqidResult:R,operator:b.operator,redirectUrl:null==b?void 0:b.redirect_to_url},(null==b?void 0:b.userType)?{userType:null==b?void 0:b.userType}:{})]}}))}))}function M(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,d,u=this;return n(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(u,void 0,void 0,(function(){var e,c;return n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,D(r,i,a,t(t({},s),{operator:o}))];case 1:return e=n.sent(),[2,g(t(t({},e),{operator:o}))];case 2:return c=n.sent(),[2,_(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),d=c.find((function(e){var n;return"left"===e.type&&"AlreadySubscribed"===(null===(n=e.value)||void 0===n?void 0:n.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(d)throw d.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function T(t,i,a,o){return e(this,void 0,void 0,(function(){var s,c,d,u,l,v,p,f,y,w,_,g,I,b,E,k,U;return n(this,(function(N){switch(N.label){case 0:if(t.hostCountry&&t.hostSlug&&(a.country=t.hostCountry,a.slug=t.hostSlug),s=a.slug,c=a.country,d=a.device,u=t.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=m(t))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),p=t.pac_analytics.visitor.rockmanId,!i)throw(f=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",f;return y=""!==R?"&mcpUniqid=".concat(R):"",w=void 0!==t&&t.tid?t.tid:"",_=t.location.search.substr(1)||"",[4,P({window:t,country:c,slug:s,device:d,offer:u,rockmanId:p,pin:i,extraParams:l,uniqid:y,evinaTid:w,search:_})];case 1:if(!1!==(g=N.sent()).success)return[3,2];switch(I=void 0,!0){case g.message.includes("pin does not match"):I="InvalidPIN";break;case g.message.includes("mcp blocked"):I="SessionBlocked";break;case g.message.includes("expired_pin"):I="ExpiredPIN";break;case g.message.includes("insufficient_balance"):I="InsufficientBalance";break;case g.message.includes("duplicated_request"):I="DuplicatedRequest";break;case g.message.includes("ALREADY SUBSCRIBED"):I="AlreadySubscribed";break;default:I="InvalidPIN"}throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(g.message))).type=I,console.error(k),k;case 2:return!0!==g.async?[3,4]:g.product_url&&""!==g.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:g.product_url}]:(b=function(){return function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.rockmanId;return e(void 0,void 0,void 0,(function(){var e,t,u,l;return n(this,(function(n){return e={action:"check-subscription",country:S(a),slug:o,device:s,offerId:c,rockman_id:d},t=Object.entries(e).filter((function(e){var n=r(e,2);return n[0],null!=n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(encodeURIComponent(i))})).join("&"),u=i.DEV_BASE_URL||"",l="".concat(u,"/tallyman/v1/?").concat(t),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:t,country:c,slug:s,device:d,offer:u,rockmanId:p,extraParams:o})},[4,h(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(E=N.sent()).success)return U="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:E.product_url||null,isAlreadySubscribed:U}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(E.message))).type="InvalidPIN",k.message=E.message,k;case 4:return U="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:g.product_url||null,isAlreadySubscribed:U}]}}))}))}var F={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"PINEntry",result:c({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},B={currentState:{type:"MSISDNEntry",result:d({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},L={currentState:{type:"MSISDNEntry",result:o()}},q=function(e){var n,r=m(e),t=new Event("onPinPage"),i=r.ui_show_pin_entry&&"1"===r.ui_show_pin_entry||r["show-pin-entry"]&&"1"===r["show-pin-entry"],a=r["show-thank-you"]&&"1"===r["show-thank-you"],s="1"===(null==r?void 0:r.show_custom_error),u=(null!==(n=null==r?void 0:r.ui_error_message)&&void 0!==n?n:"").replace(/\+/g,"%20"),l=decodeURIComponent(u),v={currentState:{type:"MSISDNEntry",result:d({errorType:{"This mobile number is blacklisted":"BlacklistedNumber"}[l]||"SomethingWentWrong",error:l})}},p={currentState:{type:"PINEntry",result:c({finalUrl:(null==r?void 0:r.product_url)||""}),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}},f={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}};if(i)return null==e||e.dispatchEvent(t),f;if(a)return p;if(s)return v;if(!r["mock-flow"])return L;switch(r["current-state"]){case"msisdn-failure-state":return B;case"pin-state":return null==e||e.dispatchEvent(t),F;case"completed-state":return A;default:return console.error("Mock Flow not supported"),L}}(window),x=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,c=r.msisdn,d=r.extraParams,u=i.getState,p=i.dispatch,S=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,_,g,h,I,b,E,k,U,N,P,j,R,D,M,T,F,A,B,L,q,x,O,V,W;return n(this,(function(n){switch(n.label){case 0:if(e=u(),!(null===(T=null===(M=null===(D=null==e?void 0:e.strategy)||void 0===D?void 0:D.currentState)||void 0===M?void 0:M.data)||void 0===T?void 0:T.config))return[2,S({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,_=r.isHeaderEnrichmentSuccess,g=null===(F=e.pinFlow)||void 0===F?void 0:F.currentState,h=m(a),n.label=1;case 1:return n.trys.push([1,7,,8]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===Y(null==i?void 0:i.country,c)&&(c=c.replace("970","972")),"tpay"!==(null==(I=null===(B=null===(A=null==a?void 0:a.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===B?void 0:B.genericJsLinkResult)?void 0:I.gateway)||(null==h?void 0:h.ui_show_pin_entry)?[3,3]:(w.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,C(a,i,c)]);case 2:if(n.sent(),a.msisdn=c,a.callConfirm)try{return a.callConfirm(),[2,t(t({},g),{type:"MSISDNEntry",result:s()})]}catch(e){return b="Confirm function failed",w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:(null==e?void 0:e.toString())||"Error calling window.callConfirm function",message:e.message}),[2,S({errorType:"TPayConfirmError",error:b,message:b})]}return E="Confirm function not found",w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:E,message:E}),[2,S({errorType:"TPayConfirmError",error:E,message:E})];case 3:return w.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,C(a,i,c)];case 4:return k=n.sent(),w.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),"SingleMSISDNSubmissionResult"===k.type&&k.redirectUrl?(w.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),w.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:k.redirectUrl}),a.location.href=k.redirectUrl,[2]):d&&d.storeMsisdn&&"true"===d.storeMsisdn?[4,y(c).then((function(e){e&&e.data&&e.data.success?w.customEvent("Flow","advance-auto","msisdn-stored-success"):w.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){w.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,6];case 5:n.sent(),n.label=6;case 6:return U="SingleMSISDNSubmissionResult"===(null==k?void 0:k.type)?null==k?void 0:k.operator:"",N={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},P=new Event("onPinPage"),null==a||a.dispatchEvent(P),[2,t(t({},g),{type:"PINEntry",result:o(),data:t({actualPIN:"SingleMSISDNSubmissionResult"===k.type?k.pin:null,msisdn:c,operator:U,pinMaxLength:""!==U&&N[U]?N[U]:null,isHeaderEnrichmentSuccess:_},"SingleMSISDNSubmissionResult"===k.type&&(null==k?void 0:k.userType)?{userType:k.userType}:{})})];case 7:return j=n.sent(),console.warn(j),R=j.type,w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:R,error:j.toString(),message:j.message,productUrl:j.productUrl}),_&&p(l({type:v.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),f.includes(R)&&(null===(q=null===(L=null==a?void 0:a.pac_analytics)||void 0===L?void 0:L.visitor)||void 0===q?void 0:q.waterFallRedirectUrl)&&(w.customEvent("tallyman.v1-pin","redirect","waterfall-redirect",{redirect_url:null===(O=null===(x=null==a?void 0:a.pac_analytics)||void 0===x?void 0:x.visitor)||void 0===O?void 0:O.waterFallRedirectUrl,errorType:R}),a.location.href=null===(W=null===(V=null==a?void 0:a.pac_analytics)||void 0===V?void 0:V.visitor)||void 0===W?void 0:W.waterFallRedirectUrl),[2,S({errorType:R,error:j.toString(),message:j.message,productUrl:j.productUrl})];case 8:return[2]}}))}))})),O=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,s=r.pin,d=r.extraParams,u=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,v,p,f,m,S,_,g;return n(this,(function(n){switch(n.label){case 0:if(e=u(),!(null===(_=null===(S=null===(m=null==e?void 0:e.strategy)||void 0===m?void 0:m.currentState)||void 0===S?void 0:S.data)||void 0===_?void 0:_.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(g=e.pinFlow)||void 0===g?void 0:g.currentState,n.label=1;case 1:return n.trys.push([1,5,,6]),w.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:s}),[4,T(a,s,r,d)];case 2:return v=n.sent(),w.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:s,finalUrl:v.productUrl}),v.gatewayRedirectUrl&&""!==v.gatewayRedirectUrl&&(w.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:s,gatewayRedirectUrl:v.gatewayRedirectUrl}),a.location.href=v.gatewayRedirectUrl),d&&d.storeMsisdn&&"true"===d.storeMsisdn?[4,y(o).then((function(e){e&&e.data&&e.data.success?w.customEvent("Flow","advance-auto","msisdn-stored-success"):w.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){w.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:n.sent(),n.label=4;case 4:return[2,t(t({},i),{type:"PINEntry",result:c({finalUrl:v.productUrl,isAlreadySubscribed:v.isAlreadySubscribed||!1})})];case 5:switch(p=n.sent(),console.warn(p),f=void 0,p.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidPIN":f="InvalidPIN";break;case"SessionBlocked":f="SessionBlocked";break;case"ExpiredPIN":f="ExpiredPIN";break;case"InsufficientBalance":f="InsufficientBalance";break;case"DuplicatedRequest":f="DuplicatedRequest";break;default:f="UnknownError"}return w.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:s,errorType:f,error:p.toString(),message:p.message,productUrl:p.productUrl}),setTimeout((function(){p.productUrl&&(a.location.href=p.productUrl)}),0),[2,l({errorType:f,error:p.toString(),message:p.message,productUrl:p.productUrl})];case 6:return[2]}}))}))})),V=i("pinFlow/backToStartAction",(function(r,t){var i=t.getState,a=t.dispatch,s=t.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,t,c;return n(this,(function(n){try{if(w.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e=i(),!(null===(c=null===(t=null===(r=null==e?void 0:e.strategy)||void 0===r?void 0:r.currentState)||void 0===t?void 0:t.data)||void 0===c?void 0:c.config))return[2,s({errorType:"UnexpectedState"})];if("pin"===e.strategy.currentState.data.strategy)return[2,{type:"MSISDNEntry",result:o()}];a(u())}catch(e){return console.warn(e),[2,s({errorType:"UnexpectedState"})]}return[2]}))}))})),W={PS:"970"},Y=function(e,n){if(!e||!n)return"";var r=e.toUpperCase(),t=W[r];return t?"+".concat(t):(console.error("Country code not found for",e),"")},z=a({name:"pinFlow",initialState:q,reducers:{},extraReducers:function(e){e.addCase(x.pending,(function(e){var n,r,t,i,a,o,c;e.currentState={type:(null===(r=null===(n=null===window||void 0===window?void 0:window.location)||void 0===n?void 0:n.search)||void 0===r?void 0:r.includes("ui_show_pin_entry"))||(null===(i=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.search)||void 0===i?void 0:i.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(o=null===(a=null===window||void 0===window?void 0:window.pac_analytics)||void 0===a?void 0:a.visitor)||void 0===o?void 0:o.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:s(),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(x.rejected,(function(e,n){var r,t,i,a,o,s,c;e.currentState={type:(null===(t=null===(r=null===window||void 0===window?void 0:window.location)||void 0===r?void 0:r.search)||void 0===t?void 0:t.includes("ui_show_pin_entry"))||(null===(a=null===(i=null===window||void 0===window?void 0:window.location)||void 0===i?void 0:i.search)||void 0===a?void 0:a.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(s=null===(o=null===window||void 0===window?void 0:window.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===s?void 0:s.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:d(n.payload),data:e.currentState.data}})).addCase(O.pending,(function(e){e.currentState={type:"PINEntry",result:s(),data:e.currentState.data}})).addCase(O.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(O.rejected,(function(e,n){e.currentState={type:"PINEntry",result:d(n.payload),data:e.currentState.data}})).addCase(V.fulfilled,(function(e,n){e.currentState=n.payload}))}}),H=z.reducer;z.actions;export{V as backToStartAction,k as pinFlowMatch,H as pinFlowReducer,x as submitMSISDNAction,O as submitPinAction,E as usePinFlowState};
|
|
1
|
+
import{__awaiter as e,__generator as n,__read as r,__assign as t}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,L as s,S as c,F as d}from"./RemoteDataState-lcf8PfJd.js";import{i as u,c as l,P as v}from"./strategySlice-BMNt18ck.js";import{n as p,r as f}from"./normaliseErrorCode-CcFWuZeI.js";import{searchToObject as m}from"./searchToObject.js";import{s as y}from"./storeMsisdn-Cjq8_qYH.js";import{t as w}from"./tracker-DaaILhEr.js";import{b as S}from"./api-geirVksI.js";import{l as _,r as g,a as h}from"./helpers-xPhGBX-B.js";import{l as I}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as b}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"pacman-client";import"uuid";var E=function(e){return e((function(e){return e.pinFlow.currentState}))};function k(e){var n=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return n(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var U=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},N=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.msisdn,u=t.rockmanId,l=t.extraParams,v=t.search,p=t.uniqid,f=t.evinaTid;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,S,_,g,h,I,E;return n(this,(function(n){return e=U(a),t="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),v=b(v),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:d,rockman_id:u,sam_evina_tid:f,page:encodeURIComponent(null===(_=null==i?void 0:i.location)||void 0===_?void 0:_.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:p||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||"",ip_address:(null===(h=null===(g=null==i?void 0:i.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===h?void 0:h.ip)||"",ip_range_operator:(null===(E=null===(I=null==i?void 0:i.pac_analytics)||void 0===I?void 0:I.visitor)||void 0===E?void 0:E.ipRangeOperator)||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",S="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(v?"&".concat(v):""),[2,fetch(S).then((function(e){return e.json()}))]}))}))},P=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.rockmanId,u=t.pin,l=t.extraParams,v=t.uniqid,p=t.evinaTid,f=t.search;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,_,g;return n(this,(function(n){return e=U(a),t="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f=b(f),m={action:"verify-pin",country:S(a),slug:o,device:s,offerId:c,rockman_id:d,pin:u,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:p,uniqid:v,antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",_="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(f?"&".concat(f):""),[2,fetch(_).then((function(e){return e.json()}))]}))}))},j=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,d=r.rockmanId,u=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,v,p,f;return n(this,(function(n){return e=i.location.href,r=i.pac_analytics.visitor.ip,v=new URLSearchParams(t(t({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:d,client_lpu:e},u&&{operator:u}),l&&{uniqid:l})),r&&v.append("client_ip",r),p=i.DEV_BASE_URL||"",f="".concat(p,"/tallyman/v1/?").concat(v.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function C(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return n(this,(function(n){return!0===(e=t({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,M(r,e,a,e.operators,o)]:[2,D(r,e,a,o)]}))}))}var R="";function D(r,i,a,o){var s;return e(this,void 0,void 0,(function(){var e,c,d,u,l,v,f,y,w,S,_,g,h,b,E,k,U,P,C,D;return n(this,(function(n){switch(n.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return c=o||{},d=!1,("true"===(null==(u=m(r))?void 0:u.success)&&"1"===u["msisdn-alias"]||!0===r.skip_validation)&&(c["skip-validation"]="1"),"1"===c["skip-validation"]&&(d=!0),l=d?a||r.msisdn:a.match(/\d+/gi).join(""),v=r.pac_analytics.visitor.rockmanId,f=i.slug,y=i.country,w=i.device,S=i.offer,_=r.location.search.substr(1)||"",g=R&&""!==R?"&mcpUniqid=".concat(R):"",h=void 0!==r&&r.tid?r.tid:"",[4,N({window:r,country:y,slug:f,device:w,offer:S,msisdn:l,rockmanId:v,extraParams:c,search:_,uniqid:g,evinaTid:h})];case 1:if(!0===(b=n.sent()).isContentBlocked&&(r.isContentBlocked=!0),!1!==b.success)return[3,2];throw E=b.message.includes("ALREADY SUBSCRIBED")?"AlreadySubscribed":/invalid/i.test(b.message)?"InvalidMsisdn":b.message.includes("duplicated_request")?"DuplicatedRequest":null,k=b.error_code?p(b.error_code):E,U=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(b.message)),Object.assign(U,{type:k,message:b.message,productUrl:null!==(s=b.product_url)&&void 0!==s?s:""}),U;case 2:if(r.operator=b.operator,P={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(y&&b.operator&&(P[y.toLowerCase()]&&P[y.toLowerCase()][b.operator.toLowerCase()]||"iq"===y.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];n.label=3;case 3:return n.trys.push([3,5,,6]),[4,j({window:r,country:y,slug:f,device:w,offer:S,rockmanId:v,operator:b.operator,uniqid:g})];case 4:return!1===(C=n.sent()).success?console.warn(C.message):(I(C.source),R=C.uniqid),[3,6];case 5:return D=n.sent(),console.warn(D),[3,6];case 6:return b.javascript&&I(b.javascript),[2,t({type:"SingleMSISDNSubmissionResult",pin:b.pin,uniqidResult:R,operator:b.operator,redirectUrl:null==b?void 0:b.redirect_to_url},(null==b?void 0:b.userType)?{userType:null==b?void 0:b.userType}:{})]}}))}))}function M(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,d,u=this;return n(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(u,void 0,void 0,(function(){var e,c;return n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,D(r,i,a,t(t({},s),{operator:o}))];case 1:return e=n.sent(),[2,g(t(t({},e),{operator:o}))];case 2:return c=n.sent(),[2,_(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),d=c.find((function(e){var n;return"left"===e.type&&"AlreadySubscribed"===(null===(n=e.value)||void 0===n?void 0:n.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(d)throw d.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function T(t,i,a,o){return e(this,void 0,void 0,(function(){var s,c,d,u,l,v,p,f,y,w,_,g,I,b,E,k,U;return n(this,(function(N){switch(N.label){case 0:if(t.hostCountry&&t.hostSlug&&(a.country=t.hostCountry,a.slug=t.hostSlug),s=a.slug,c=a.country,d=a.device,u=t.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=m(t))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),p=t.pac_analytics.visitor.rockmanId,!i)throw(f=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",f;return y=""!==R?"&mcpUniqid=".concat(R):"",w=void 0!==t&&t.tid?t.tid:"",_=t.location.search.substr(1)||"",[4,P({window:t,country:c,slug:s,device:d,offer:u,rockmanId:p,pin:i,extraParams:l,uniqid:y,evinaTid:w,search:_})];case 1:if(!1!==(g=N.sent()).success)return[3,2];switch(I=void 0,!0){case g.message.includes("pin does not match"):I="InvalidPIN";break;case g.message.includes("mcp blocked"):I="SessionBlocked";break;case g.message.includes("expired_pin"):I="ExpiredPIN";break;case g.message.includes("insufficient_balance"):I="InsufficientBalance";break;case g.message.includes("duplicated_request"):I="DuplicatedRequest";break;case g.message.includes("ALREADY SUBSCRIBED"):I="AlreadySubscribed";break;default:I="InvalidPIN"}throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(g.message))).type=I,console.error(k),k;case 2:return!0!==g.async?[3,4]:g.product_url&&""!==g.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:g.product_url}]:(b=function(){return function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.rockmanId;return e(void 0,void 0,void 0,(function(){var e,t,u,l;return n(this,(function(n){return e={action:"check-subscription",country:S(a),slug:o,device:s,offerId:c,rockman_id:d},t=Object.entries(e).filter((function(e){var n=r(e,2);return n[0],null!=n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(encodeURIComponent(i))})).join("&"),u=i.DEV_BASE_URL||"",l="".concat(u,"/tallyman/v1/?").concat(t),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:t,country:c,slug:s,device:d,offer:u,rockmanId:p,extraParams:o})},[4,h(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(E=N.sent()).success)return U="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:E.product_url||null,isAlreadySubscribed:U}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(E.message))).type="InvalidPIN",k.message=E.message,k;case 4:return U="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:g.product_url||null,isAlreadySubscribed:U}]}}))}))}var F={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"PINEntry",result:c({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},B={currentState:{type:"MSISDNEntry",result:d({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},L={currentState:{type:"MSISDNEntry",result:o()}},q=function(e){var n,r=m(e),t=new Event("onPinPage"),i=r.ui_show_pin_entry&&"1"===r.ui_show_pin_entry||r["show-pin-entry"]&&"1"===r["show-pin-entry"],a=r["show-thank-you"]&&"1"===r["show-thank-you"],s="1"===(null==r?void 0:r.show_custom_error),u=(null!==(n=null==r?void 0:r.ui_error_message)&&void 0!==n?n:"").replace(/\+/g,"%20"),l=decodeURIComponent(u),v={currentState:{type:"MSISDNEntry",result:d({errorType:{"This mobile number is blacklisted":"BlacklistedNumber"}[l]||"SomethingWentWrong",error:l})}},p={currentState:{type:"PINEntry",result:c({finalUrl:(null==r?void 0:r.product_url)||""}),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}},f={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}};if(i)return null==e||e.dispatchEvent(t),f;if(a)return p;if(s)return v;if(!r["mock-flow"])return L;switch(r["current-state"]){case"msisdn-failure-state":return B;case"pin-state":return null==e||e.dispatchEvent(t),F;case"completed-state":return A;default:return console.error("Mock Flow not supported"),L}}(window),x=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,c=r.msisdn,d=r.extraParams,u=i.getState,p=i.dispatch,S=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,_,g,h,I,b,E,k,U,N,P,j,R,D,M,T,F,A,B,L,q,x,O,V,W;return n(this,(function(n){switch(n.label){case 0:if(e=u(),!(null===(T=null===(M=null===(D=null==e?void 0:e.strategy)||void 0===D?void 0:D.currentState)||void 0===M?void 0:M.data)||void 0===T?void 0:T.config))return[2,S({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,_=r.isHeaderEnrichmentSuccess,g=null===(F=e.pinFlow)||void 0===F?void 0:F.currentState,h=m(a),n.label=1;case 1:return n.trys.push([1,7,,8]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===Y(null==i?void 0:i.country,c)&&(c=c.replace("970","972")),"tpay"!==(null==(I=null===(B=null===(A=null==a?void 0:a.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===B?void 0:B.genericJsLinkResult)?void 0:I.gateway)||(null==h?void 0:h.ui_show_pin_entry)?[3,3]:(w.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,C(a,i,c)]);case 2:if(n.sent(),a.msisdn=c,a.callConfirm)try{return a.callConfirm(),[2,t(t({},g),{type:"MSISDNEntry",result:s()})]}catch(e){return b="Confirm function failed",w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:(null==e?void 0:e.toString())||"Error calling window.callConfirm function",message:e.message}),[2,S({errorType:"TPayConfirmError",error:b,message:b})]}return E="Confirm function not found",w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:E,message:E}),[2,S({errorType:"TPayConfirmError",error:E,message:E})];case 3:return w.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,C(a,i,c)];case 4:return k=n.sent(),w.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),"SingleMSISDNSubmissionResult"===k.type&&k.redirectUrl?(w.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),w.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:k.redirectUrl}),a.location.href=k.redirectUrl,[2]):d&&d.storeMsisdn&&"true"===d.storeMsisdn?[4,y(c).then((function(e){e&&e.data&&e.data.success?w.customEvent("Flow","advance-auto","msisdn-stored-success"):w.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){w.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,6];case 5:n.sent(),n.label=6;case 6:return U="SingleMSISDNSubmissionResult"===(null==k?void 0:k.type)?null==k?void 0:k.operator:"",N={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},P=new Event("onPinPage"),null==a||a.dispatchEvent(P),[2,t(t({},g),{type:"PINEntry",result:o(),data:t({actualPIN:"SingleMSISDNSubmissionResult"===k.type?k.pin:null,msisdn:c,operator:U,pinMaxLength:""!==U&&N[U]?N[U]:null,isHeaderEnrichmentSuccess:_},"SingleMSISDNSubmissionResult"===k.type&&(null==k?void 0:k.userType)?{userType:k.userType}:{})})];case 7:return j=n.sent(),console.warn(j),R=j.type,w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:R,error:j.toString(),message:j.message,productUrl:j.productUrl}),_&&p(l({type:v.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),f.includes(R)&&(null===(q=null===(L=null==a?void 0:a.pac_analytics)||void 0===L?void 0:L.visitor)||void 0===q?void 0:q.waterFallRedirectUrl)&&(w.customEvent("tallyman.v1-pin","redirect","waterfall-redirect",{redirect_url:null===(O=null===(x=null==a?void 0:a.pac_analytics)||void 0===x?void 0:x.visitor)||void 0===O?void 0:O.waterFallRedirectUrl,errorType:R}),a.location.href=null===(W=null===(V=null==a?void 0:a.pac_analytics)||void 0===V?void 0:V.visitor)||void 0===W?void 0:W.waterFallRedirectUrl),[2,S({errorType:R,error:j.toString(),message:j.message,productUrl:j.productUrl})];case 8:return[2]}}))}))})),O=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,s=r.pin,d=r.extraParams,u=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,v,p,f,m,S,_,g;return n(this,(function(n){switch(n.label){case 0:if(e=u(),!(null===(_=null===(S=null===(m=null==e?void 0:e.strategy)||void 0===m?void 0:m.currentState)||void 0===S?void 0:S.data)||void 0===_?void 0:_.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(g=e.pinFlow)||void 0===g?void 0:g.currentState,n.label=1;case 1:return n.trys.push([1,5,,6]),w.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:s}),[4,T(a,s,r,d)];case 2:return v=n.sent(),w.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:s,finalUrl:v.productUrl}),v.gatewayRedirectUrl&&""!==v.gatewayRedirectUrl&&(w.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:s,gatewayRedirectUrl:v.gatewayRedirectUrl}),a.location.href=v.gatewayRedirectUrl),d&&d.storeMsisdn&&"true"===d.storeMsisdn?[4,y(o).then((function(e){e&&e.data&&e.data.success?w.customEvent("Flow","advance-auto","msisdn-stored-success"):w.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){w.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:n.sent(),n.label=4;case 4:return[2,t(t({},i),{type:"PINEntry",result:c({finalUrl:v.productUrl,isAlreadySubscribed:v.isAlreadySubscribed||!1})})];case 5:switch(p=n.sent(),console.warn(p),f=void 0,p.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidPIN":f="InvalidPIN";break;case"SessionBlocked":f="SessionBlocked";break;case"ExpiredPIN":f="ExpiredPIN";break;case"InsufficientBalance":f="InsufficientBalance";break;case"DuplicatedRequest":f="DuplicatedRequest";break;default:f="UnknownError"}return w.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:s,errorType:f,error:p.toString(),message:p.message,productUrl:p.productUrl}),setTimeout((function(){p.productUrl&&(a.location.href=p.productUrl)}),0),[2,l({errorType:f,error:p.toString(),message:p.message,productUrl:p.productUrl})];case 6:return[2]}}))}))})),V=i("pinFlow/backToStartAction",(function(r,t){var i=t.getState,a=t.dispatch,s=t.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,t,c;return n(this,(function(n){try{if(w.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e=i(),!(null===(c=null===(t=null===(r=null==e?void 0:e.strategy)||void 0===r?void 0:r.currentState)||void 0===t?void 0:t.data)||void 0===c?void 0:c.config))return[2,s({errorType:"UnexpectedState"})];if("pin"===e.strategy.currentState.data.strategy)return[2,{type:"MSISDNEntry",result:o()}];a(u())}catch(e){return console.warn(e),[2,s({errorType:"UnexpectedState"})]}return[2]}))}))})),W={PS:"970"},Y=function(e,n){if(!e||!n)return"";var r=e.toUpperCase(),t=W[r];return t?"+".concat(t):(console.error("Country code not found for",e),"")},z=a({name:"pinFlow",initialState:q,reducers:{},extraReducers:function(e){e.addCase(x.pending,(function(e){var n,r,t,i,a,o,c;e.currentState={type:(null===(r=null===(n=null===window||void 0===window?void 0:window.location)||void 0===n?void 0:n.search)||void 0===r?void 0:r.includes("ui_show_pin_entry"))||(null===(i=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.search)||void 0===i?void 0:i.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(o=null===(a=null===window||void 0===window?void 0:window.pac_analytics)||void 0===a?void 0:a.visitor)||void 0===o?void 0:o.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:s(),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(x.rejected,(function(e,n){var r,t,i,a,o,s,c;e.currentState={type:(null===(t=null===(r=null===window||void 0===window?void 0:window.location)||void 0===r?void 0:r.search)||void 0===t?void 0:t.includes("ui_show_pin_entry"))||(null===(a=null===(i=null===window||void 0===window?void 0:window.location)||void 0===i?void 0:i.search)||void 0===a?void 0:a.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(s=null===(o=null===window||void 0===window?void 0:window.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===s?void 0:s.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:d(n.payload),data:e.currentState.data}})).addCase(O.pending,(function(e){e.currentState={type:"PINEntry",result:s(),data:e.currentState.data}})).addCase(O.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(O.rejected,(function(e,n){e.currentState={type:"PINEntry",result:d(n.payload),data:e.currentState.data}})).addCase(V.fulfilled,(function(e,n){e.currentState=n.payload}))}}),H=z.reducer;z.actions;export{V as backToStartAction,k as pinFlowMatch,H as pinFlowReducer,x as submitMSISDNAction,O as submitPinAction,E as usePinFlowState};
|
|
2
2
|
//# sourceMappingURL=pinFlow.js.map
|
package/dist/pinFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinFlow.js","sources":["../src/flows/pinFlow/hooks/usePinFlowState.ts","../src/flows/pinFlow/match.ts","../src/sharedApi/checkSubscription.ts","../src/flows/pinFlow/api.ts","../src/flows/pinFlow/main.ts","../src/flows/pinFlow/pinFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const usePinFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.pinFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IMsisdnSumbitNextData,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryFailure,\n PINEntrySuccess,\n PinFlowCurrentState\n} from '../../sharedFlowTypes/PinTypes';\n\nfunction pinFlowMatch<R>({\n msisdnEntry,\n pinEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n pinEntry: (rds: RDS.RemoteDataState<PINEntryFailure, PINEntrySuccess>, nextData: IMsisdnSumbitNextData) => R;\n}): (state: PinFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n case 'PINEntry':\n return pinEntry(state.result, state.data);\n default:\n throw new Error('Invalid State');\n }\n };\n}\n\nexport { pinFlowMatch };\n","import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IHash } from '../common-types/IHash';\nimport { bupperizeCountry } from '../utilities/bupperizeCountry';\n\nconst checkSubscription = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParams?: IHash; // Marked as optional if currently unused\n}): Promise<ICheckSubscriptionResult> => {\n const params = {\n action: 'check-subscription',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}`;\n return fetch(url).then((response) => response.json());\n};\n\nexport { checkSubscription };\n","import { IHash, IMcpShieldResult, IMSISDNSubmissionResult, IPINSubmissionResult } from '../../sharedFlowTypes/PinTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst checkIsCleanTraffic = (country: string): string => {\n if (country === 'be') {\n if (typeof window !== 'undefined' && window.shouldBlock === true) {\n return '&is-clean-traffic=false';\n }\n return '&is-clean-traffic=true';\n }\n return '';\n};\nconst triggerPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams,\n search,\n uniqid,\n evinaTid\n}: {\n window?: Window;\n country: string;\n slug: string;\n device: 'smart' | 'feature';\n offer: string;\n msisdn: string;\n rockmanId: string;\n extraParams: IHash;\n search: string;\n uniqid?: string;\n evinaTid?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n\n // Base parameters object\n const params = {\n action: 'trigger-pin',\n country,\n slug,\n device,\n offerId: offer,\n msisdn,\n rockman_id: rockmanId,\n sam_evina_tid: evinaTid,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n partner_transaction_id: window.partner_transaction_id || '',\n partner_timestamp: window.partner_timestamp || '',\n partner_cid: window.partner_cid || '',\n uniqid: uniqid || '',\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 zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst verifyPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams,\n uniqid,\n evinaTid,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n pin: string;\n extraParams: IHash;\n uniqid: string;\n evinaTid: string;\n search: string;\n}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n // Base parameters object\n const params = {\n action: 'verify-pin',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n pin,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n ClickID: window.antifraud_click_id || '',\n partner_cid: window.partner_cid || '',\n sam_evina_tid: evinaTid,\n uniqid,\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: window.antifraud_id || '',\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst mcpShield = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator,\n uniqid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n operator?: string;\n uniqid?: string;\n}): Promise<IMcpShieldResult> => {\n const pageUrl = window.location.href;\n const ipAdd = window.pac_analytics.visitor.ip;\n\n const params = new URLSearchParams({\n action: 'mcp-shield',\n country,\n slug,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n client_lpu: pageUrl,\n ...(operator && { operator }),\n ...(uniqid && { uniqid })\n });\n\n // Conditionally add client_ip if it exists\n if (ipAdd) {\n params.append('client_ip', ipAdd);\n }\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params.toString()}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { triggerPin, verifyPin, mcpShield };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { checkSubscription } from '../../sharedApi/checkSubscription';\nimport {\n IHash,\n IMcpShieldResult,\n IMSISDNSubmissionResult,\n IPINSubmissionResult,\n MultiOperatorMSISDNSubmissionResult,\n SingleMSISDNSubmissionResult\n} from '../../sharedFlowTypes/PinTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { left, loop, right } from '../../utilities/helpers';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { normaliseErrorCode } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { mcpShield, triggerPin, verifyPin } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult | MultiOperatorMSISDNSubmissionResult> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return submitMSISDNForMultipleOperators(window, config, internationalMSISDN, config.operators, extraParams);\n }\n return submitMSISDNOnce(window, config, internationalMSISDN, extraParams);\n}\n\nlet uniqidResult = '';\n// eslint-disable-next-line consistent-return\nexport async function loadMcpShield(window: Window, config: IConfig): Promise<IMcpShieldResult> {\n if (config) {\n const { slug, country, device } = config;\n\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({ window, country, slug, device, offer, rockmanId });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n return mcpShieldResult;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nasync function submitMSISDNOnce(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() trigger-pin action`) as IError & { type: string };\n submissionError.type = 'InvalidMSISDN';\n throw submissionError;\n }\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n // @ts-ignore\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.skip_validation === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n if (newExtraParams['skip-validation'] === '1') {\n isSkipValidation = true;\n }\n\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n const { rockmanId } = window.pac_analytics.visitor;\n\n const { slug, country, device, offer } = config;\n\n const search = window.location.search.substr(1) || '';\n const uniqid = !!uniqidResult && uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const result: IMSISDNSubmissionResult = await triggerPin({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams: newExtraParams,\n search,\n uniqid,\n evinaTid\n });\n\n if (result.isContentBlocked === true) {\n window.isContentBlocked = true;\n }\n if (result.success === false) {\n // derive a default type from the message\n const defaultType: string | null = result.message.includes('ALREADY SUBSCRIBED')\n ? 'AlreadySubscribed'\n : /invalid/i.test(result.message)\n ? 'InvalidMsisdn'\n : result.message.includes('duplicated_request')\n ? 'DuplicatedRequest'\n : null;\n\n // prefer an explicit error_code mapping when available\n const type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;\n\n // build and annotate the Error\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string | null;\n productUrl: string;\n };\n\n Object.assign(error, {\n type,\n message: result.message,\n productUrl: result.product_url ?? ''\n });\n\n throw error;\n } else {\n window.operator = result.operator; // currently used on server for KW_STC if present dont call empello for Shemaroo\n const codesWithMcpShied: { [key: string]: { [key: string]: string } } = {\n kw: {\n kw_viva: 'kw_viva'\n },\n k2: {\n k2_viva: 'k2_viva'\n },\n bh: {\n bh_viva: 'bh_viva'\n }\n };\n if (\n country &&\n result.operator &&\n ((codesWithMcpShied[country.toLowerCase()] &&\n codesWithMcpShied[country.toLowerCase()][result.operator.toLowerCase()]) ||\n country.toLowerCase() === 'iq') &&\n !window.isCallBlockApi &&\n !window.Empello // set on server https://www.notion.so/sammedia/KW-Agency-Shemaroo-STC-integration-1a114991683d4af79eb01a4d96789f30\n ) {\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator: result.operator,\n uniqid\n });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n\n if (result.javascript) {\n loadScriptInnerHtml(result.javascript);\n }\n\n return {\n type: 'SingleMSISDNSubmissionResult',\n pin: result.pin,\n uniqidResult,\n operator: result.operator,\n redirectUrl: result?.redirect_to_url, // For pin redirect empello\n ...(result?.userType ? { userType: result?.userType } : {}) // For Peru user plan if prepaid or postpaid\n };\n }\n}\n\nasync function submitMSISDNForMultipleOperators(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n operators: string[],\n extraParams?: IHash\n): Promise<MultiOperatorMSISDNSubmissionResult> {\n const results = await Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await submitMSISDNOnce(window, config, internationalMSISDN, {\n ...extraParams,\n operator: o\n });\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const alreadySubscribed = results.find((r: any) => r.type === 'left' && r.value?.type === 'AlreadySubscribed');\n\n if (results.every((r) => r.type === 'left')) {\n // no submission worked\n throw results[0].value;\n } else if (alreadySubscribed) {\n throw alreadySubscribed.value;\n } else {\n return {\n type: 'MultiOperatorMSISDNSubmissionResult'\n };\n }\n}\n\nexport async function submitPIN(\n window: Window,\n pin: string,\n config: IConfig,\n extraParams: IHash\n): Promise<{ productUrl?: string; isAlreadySubscribed?: boolean; gatewayRedirectUrl?: string }> {\n if (window.hostCountry && window.hostSlug) {\n config.country = window.hostCountry;\n config.slug = window.hostSlug;\n }\n const { slug, country, device } = config;\n const { offer } = window.pac_analytics.visitor;\n\n const newExtraParams = extraParams || {};\n const searchObj = searchToObject(window) as any;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n newExtraParams['skip-validation'] = '1';\n }\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (!pin) {\n const emptyPinError = new Error(`Error in submitMSISDN() verify-pin action:\\n Pin Cannot Be Empty`) as IError & {\n type: string;\n };\n emptyPinError.type = 'InvalidPIN';\n throw emptyPinError;\n }\n const uniqid = uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n const search = window.location.search.substr(1) || '';\n\n const pinResult: IPINSubmissionResult = await verifyPin({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams: newExtraParams,\n uniqid,\n evinaTid,\n search\n });\n if (pinResult.success === false) {\n let errorType: string;\n\n switch (true) {\n case pinResult.message.includes('pin does not match'):\n errorType = 'InvalidPIN';\n break;\n case pinResult.message.includes('mcp blocked'):\n errorType = 'SessionBlocked';\n break;\n case pinResult.message.includes('expired_pin'):\n errorType = 'ExpiredPIN';\n break;\n case pinResult.message.includes('insufficient_balance'):\n errorType = 'InsufficientBalance';\n break;\n case pinResult.message.includes('duplicated_request'):\n errorType = 'DuplicatedRequest';\n break;\n case pinResult.message.includes('ALREADY SUBSCRIBED'):\n errorType = 'AlreadySubscribed';\n break;\n default:\n errorType = 'InvalidPIN';\n }\n\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${pinResult.message}`) as IError & {\n type: string;\n };\n pinError.type = errorType;\n console.error(pinError);\n throw pinError;\n } else if (pinResult.async === true) {\n // Needed for ES https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n if (pinResult.product_url && pinResult.product_url !== '' && country?.toLowerCase() === 'es') {\n return { gatewayRedirectUrl: pinResult.product_url };\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n checkSubscription({ window, country, slug, device, offer, rockmanId, extraParams });\n\n const checkResult: ICheckSubscriptionResult = await loop(\n check,\n 100,\n (r) => r.success || r.message === 'invalid_pin',\n 0\n );\n if (checkResult.success === true) {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: checkResult.product_url || null, isAlreadySubscribed };\n }\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${checkResult.message}`) as IError & {\n type: string;\n };\n pinError.type = 'InvalidPIN';\n\n pinError.message = checkResult.message;\n\n throw pinError;\n } else {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: pinResult.product_url || null, isAlreadySubscribed };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IHash,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { ErrorType, redirectErrorTypes } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy, setStrategyExtraData } from '../strategy/strategySlice';\nimport submitMSISDN, { submitPIN } from './main';\n\nconst mockedPINState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet<PINEntryFailure, PINEntrySuccess>(),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedCompletedState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({ finalUrl: '/product' }),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedMSISDNEntryFailure: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\n// Define the initial state\nconst defaultInitialState: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\n/**\n * Sets the initial state of the pin flow based on the search parameters in the URL or the default state.\n *\n * @param {Window} window - The window object.\n * @return {PinFlowState} The initial state of the pin flow.\n */\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n const pinPageEvent = new Event('onPinPage');\n const isPinEntryStep =\n (search.ui_show_pin_entry && search.ui_show_pin_entry === '1') ||\n (search['show-pin-entry'] && search['show-pin-entry'] === '1');\n const isShowThankYouStep = search['show-thank-you'] && search['show-thank-you'] === '1';\n const isShowCustomError = search?.show_custom_error === '1';\n\n const rawParam = search?.ui_error_message ?? '';\n const normalizedParam = rawParam.replace(/\\+/g, '%20');\n const errorMsg = decodeURIComponent(normalizedParam);\n const mapParamError: { [key: string]: ErrorType } = {\n 'This mobile number is blacklisted': 'BlacklistedNumber'\n };\n\n const msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: mapParamError[errorMsg] || 'SomethingWentWrong',\n error: errorMsg\n })\n }\n };\n\n const thankYouState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: search?.product_url || ''\n }),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n\n const initalPinEntryState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet(),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n if (isPinEntryStep) {\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return initalPinEntryState;\n }\n if (isShowThankYouStep) {\n return thankYouState;\n }\n if (isShowCustomError) {\n return msisdnError;\n }\n\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-failure-state':\n return mockedMSISDNEntryFailure;\n case 'pin-state':\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return mockedPINState;\n case 'completed-state':\n return mockedCompletedState;\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\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls trigger-pin api that sends a pin to the user\n * Sets state to show pin entry\n */\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\nexport const submitMSISDNAction = createAsyncThunk<\n PINEntryState | MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, isHeaderEnrichmentSuccess } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n const searchObj = searchToObject(window) as { ui_show_pin_entry: string };\n\n try {\n /**\n * Palestine calling code is +970\n * But there was a request to have it as +972 only for gateway shemaroo\n */\n // Start PS Calling code temp fix\n if (config?.country.toLowerCase() === 'ps' && config?.slug.includes('shemaroo')) {\n const prefix = getInputValuePrefix(config?.country, msisdn);\n if (prefix === '+970') {\n msisdn = msisdn.replace('970', '972');\n }\n }\n // END PS Calling code temp fix\n\n const jsLinkResult = window?.pac_analytics?.visitor?.genericJsLinkResult;\n\n // If the flow is TPAY the above trigger pin will only do tracking on the backend and not actually request a pin from gateway\n // The code below handles that request\n if (jsLinkResult?.gateway === 'tpay' && !searchObj?.ui_show_pin_entry) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n await submitMSISDN(window, config, msisdn); // trigger pin call requested here by Adrian for BE tracking\n window.msisdn = msisdn;\n if (window.callConfirm) {\n try {\n window.callConfirm();\n return {\n ...pinFlowCurrentState,\n type: 'MSISDNEntry',\n result: RDS.Loading()\n };\n } catch (ex) {\n // Catch any unexpected errors\n const errorMsg = 'Confirm function failed';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: ex?.toString() || 'Error calling window.callConfirm function',\n message: ex.message\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n }\n }\n // Catch any unexpected errors\n const errorMsg = 'Confirm function not found';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n\n // END TPAY TRIGGER PIN\n }\n\n // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n // End Trigger Pin\n\n /**\n * Some flows require us to redirect to a url after trigger pin to check for fraud\n * The url will then do some processing and return back to ouisys with\n * extra param in the url that will tell us to show pin entry step or error\n */\n\n // Start Pin Redirect\n if (msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult.redirectUrl) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-redirect', {\n redirectUrl: msisdnSubmissionResult.redirectUrl\n });\n window.location.href = msisdnSubmissionResult.redirectUrl;\n return;\n }\n // End Pin Redirect\n\n // Start handle store msisdn\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 handle store msisdn\n\n const operator: string =\n msisdnSubmissionResult?.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult?.operator : '';\n\n const pinMaxLengthByOp: { [key: string]: number } = {\n SA_MOBILY: 6,\n SA_STC: 4,\n SA_ZAIN: 4\n };\n\n /**\n * onPinPage\n * some scripts on the server need to be injected on pin page/view\n * This event will be handled on server\n */\n const pinPageEvent = new Event('onPinPage');\n window?.dispatchEvent(pinPageEvent);\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.NothingYet(),\n data: {\n actualPIN: msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.pin : null,\n msisdn,\n operator,\n pinMaxLength: operator !== '' && pinMaxLengthByOp[operator] ? pinMaxLengthByOp[operator] : null,\n isHeaderEnrichmentSuccess,\n ...(msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult?.userType\n ? { userType: msisdnSubmissionResult.userType }\n : {})\n }\n };\n // END NORMAL TRIGGER PIN\n } catch (ex) {\n console.warn(ex);\n const errorType = ex.type;\n\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess: false,\n config\n }\n })\n );\n }\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.waterFallRedirectUrl) {\n tracker.customEvent('tallyman.v1-pin', 'redirect', 'waterfall-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.waterFallRedirectUrl,\n errorType\n });\n window.location.href = window?.pac_analytics?.visitor?.waterFallRedirectUrl;\n }\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\n/**\n * submitPinAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: 'PINEntry', result: RDS.NothingYet()}}\n \n * Calls verify-pin api that check if the user enters a valid pin\n * Sets state to show thank you page if pin is valid\n */\ninterface SubmitPINArgs {\n window: Window;\n msisdn: string;\n pin: string;\n extraParams?: IHash;\n}\n\nexport const submitPinAction = createAsyncThunk<\n PINEntryState,\n SubmitPINArgs,\n {\n rejectValue: PINEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitPinAction', async ({ window, msisdn, pin, 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 } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submitted', { msisdn, pin });\n const result = await submitPIN(window, pin, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submission-success', {\n msisdn,\n pin,\n finalUrl: result.productUrl\n });\n\n /**\n * Gateway redirect\n * Value returned in this case is actually the gateway url instead of the product url\n * More details on this ticket:\n * https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n */\n // Start Gateway redirect\n if (result.gatewayRedirectUrl && result.gatewayRedirectUrl !== '') {\n tracker.advancedInFlow('tallyman.v1-pin', 'gateway-redirect', {\n msisdn,\n pin,\n gatewayRedirectUrl: result.gatewayRedirectUrl\n });\n window.location.href = result.gatewayRedirectUrl;\n }\n // End Gateway redirect\n\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 ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: result.productUrl,\n isAlreadySubscribed: result.isAlreadySubscribed || false\n })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: PINEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidPIN':\n errorType = 'InvalidPIN';\n break;\n case 'SessionBlocked':\n errorType = 'SessionBlocked';\n break;\n case 'ExpiredPIN':\n errorType = 'ExpiredPIN';\n break;\n case 'InsufficientBalance':\n errorType = 'InsufficientBalance';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\n break;\n default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n // Redirect to the product url if returned in the exception\n setTimeout(() => {\n if (ex.productUrl) {\n window.location.href = ex.productUrl;\n }\n }, 0);\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\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>('pinFlow/backToStartAction', async (_, { getState, dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { strategy } = state.strategy.currentState.data;\n if (strategy === 'pin') {\n return {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n };\n }\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\ntype CountryCodeMap = { [country: string]: string };\n\nconst countryCodes: CountryCodeMap = {\n PS: '970'\n // Add other countries and codes here\n};\n\nconst getInputValuePrefix = (country: string, international: string): string => {\n if (!country || !international) return '';\n\n // Convert the country to uppercase and retrieve the country code\n const normalizedCountry = country.toUpperCase();\n const countryCode = countryCodes[normalizedCountry];\n\n // Check if the country code exists in the mapping\n if (!countryCode) {\n console.error('Country code not found for', country);\n return '';\n }\n\n return `+${countryCode}`;\n};\n\n// Define your slice\nconst pinFlowSlice = createSlice({\n name: 'pinFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Loading(),\n data: state.currentState.data\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState | MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n data: state.currentState.data\n };\n })\n .addCase(submitPinAction.pending, (state) => {\n state.currentState = { type: 'PINEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitPinAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitPinAction.rejected, (state, action: PayloadAction<PINEntryFailure>) => {\n state.currentState = { type: 'PINEntry', result: RDS.Failure(action.payload), data: state.currentState.data };\n })\n .addCase(backToStartAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n });\n }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\n\nexport const selectPinFlowState = (state: any) => state.pinFlow;\n"],"names":["usePinFlowState","useSelector","state","pinFlow","currentState","pinFlowMatch","_a","msisdnEntry","pinEntry","type","result","data","Error","checkIsCleanTraffic","country","window","shouldBlock","triggerPin","slug","device","offer","msisdn","rockmanId","extraParams","search","uniqid","evinaTid","cleanTrafficString","extraParamsQs","concat","Object","keys","map","k","filter","Boolean","join","cleanSearchParams","params","action","offerId","rockman_id","sam_evina_tid","page","encodeURIComponent","_b","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","zain_antifraud_id","korek_antifraud_id","queryString","entries","__read","key","value","host","DEV_BASE_URL","url","fetch","then","x","json","verifyPin","pin","bupperizeCountry","ClickID","antifraud_click_id","mcpShield","operator","pageUrl","ipAdd","pac_analytics","visitor","ip","URLSearchParams","__assign","toString","client_lpu","append","submitMSISDN","maybeConfig","internationalMSISDN","config","automaticallySubmitAllOperators","operators","length","submitMSISDNForMultipleOperators","submitMSISDNOnce","uniqidResult","submissionError","newExtraParams","isSkipValidation","searchObj","searchToObject","success","skip_validation","match","substr","tid","sent","isContentBlocked","defaultType","message","includes","test","error_code","normaliseErrorCode","error","assign","productUrl","product_url","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","console","warn","loadScriptInnerHtml","source","err_2","javascript","redirectUrl","redirect_to_url","userType","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorType","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","ui_show_pin_entry","isShowThankYouStep","isShowCustomError","show_custom_error","normalizedParam","ui_error_message","replace","errorMsg","decodeURIComponent","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","jsLinkResult","_j","_h","genericJsLinkResult","gateway","tracker","advancedInFlow","_r","callConfirm","RDS.Loading","ex","errorMsg_1","recedeInFlow","msisdnSubmissionResult","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","setStrategyExtraData","PossibleTypes","PIN","redirectErrorTypes","_k","_l","waterFallRedirectUrl","redirect_url","_o","_m","_q","submitPinAction","ex_2","setTimeout","backToStartAction","_","identifyStrategy","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pinFlow.js","sources":["../src/flows/pinFlow/hooks/usePinFlowState.ts","../src/flows/pinFlow/match.ts","../src/sharedApi/checkSubscription.ts","../src/flows/pinFlow/api.ts","../src/flows/pinFlow/main.ts","../src/flows/pinFlow/pinFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const usePinFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.pinFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IMsisdnSumbitNextData,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryFailure,\n PINEntrySuccess,\n PinFlowCurrentState\n} from '../../sharedFlowTypes/PinTypes';\n\nfunction pinFlowMatch<R>({\n msisdnEntry,\n pinEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n pinEntry: (rds: RDS.RemoteDataState<PINEntryFailure, PINEntrySuccess>, nextData: IMsisdnSumbitNextData) => R;\n}): (state: PinFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n case 'PINEntry':\n return pinEntry(state.result, state.data);\n default:\n throw new Error('Invalid State');\n }\n };\n}\n\nexport { pinFlowMatch };\n","import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IHash } from '../common-types/IHash';\nimport { bupperizeCountry } from '../utilities/bupperizeCountry';\n\nconst checkSubscription = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParams?: IHash; // Marked as optional if currently unused\n}): Promise<ICheckSubscriptionResult> => {\n const params = {\n action: 'check-subscription',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}`;\n return fetch(url).then((response) => response.json());\n};\n\nexport { checkSubscription };\n","import { IHash, IMcpShieldResult, IMSISDNSubmissionResult, IPINSubmissionResult } from '../../sharedFlowTypes/PinTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst checkIsCleanTraffic = (country: string): string => {\n if (country === 'be') {\n if (typeof window !== 'undefined' && window.shouldBlock === true) {\n return '&is-clean-traffic=false';\n }\n return '&is-clean-traffic=true';\n }\n return '';\n};\nconst triggerPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams,\n search,\n uniqid,\n evinaTid\n}: {\n window?: Window;\n country: string;\n slug: string;\n device: 'smart' | 'feature';\n offer: string;\n msisdn: string;\n rockmanId: string;\n extraParams: IHash;\n search: string;\n uniqid?: string;\n evinaTid?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n\n // Base parameters object\n const params = {\n action: 'trigger-pin',\n country,\n slug,\n device,\n offerId: offer,\n msisdn,\n rockman_id: rockmanId,\n sam_evina_tid: evinaTid,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n partner_transaction_id: window.partner_transaction_id || '',\n partner_timestamp: window.partner_timestamp || '',\n partner_cid: window.partner_cid || '',\n uniqid: uniqid || '',\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 zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || '',\n\n ip_address: window?.pac_analytics?.visitor?.ip || '',\n ip_range_operator: window?.pac_analytics?.visitor?.ipRangeOperator || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst verifyPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams,\n uniqid,\n evinaTid,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n pin: string;\n extraParams: IHash;\n uniqid: string;\n evinaTid: string;\n search: string;\n}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n // Base parameters object\n const params = {\n action: 'verify-pin',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n pin,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n ClickID: window.antifraud_click_id || '',\n partner_cid: window.partner_cid || '',\n sam_evina_tid: evinaTid,\n uniqid,\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: window.antifraud_id || '',\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst mcpShield = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator,\n uniqid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n operator?: string;\n uniqid?: string;\n}): Promise<IMcpShieldResult> => {\n const pageUrl = window.location.href;\n const ipAdd = window.pac_analytics.visitor.ip;\n\n const params = new URLSearchParams({\n action: 'mcp-shield',\n country,\n slug,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n client_lpu: pageUrl,\n ...(operator && { operator }),\n ...(uniqid && { uniqid })\n });\n\n // Conditionally add client_ip if it exists\n if (ipAdd) {\n params.append('client_ip', ipAdd);\n }\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params.toString()}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { triggerPin, verifyPin, mcpShield };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { checkSubscription } from '../../sharedApi/checkSubscription';\nimport {\n IHash,\n IMcpShieldResult,\n IMSISDNSubmissionResult,\n IPINSubmissionResult,\n MultiOperatorMSISDNSubmissionResult,\n SingleMSISDNSubmissionResult\n} from '../../sharedFlowTypes/PinTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { left, loop, right } from '../../utilities/helpers';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { normaliseErrorCode } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { mcpShield, triggerPin, verifyPin } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult | MultiOperatorMSISDNSubmissionResult> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return submitMSISDNForMultipleOperators(window, config, internationalMSISDN, config.operators, extraParams);\n }\n return submitMSISDNOnce(window, config, internationalMSISDN, extraParams);\n}\n\nlet uniqidResult = '';\n// eslint-disable-next-line consistent-return\nexport async function loadMcpShield(window: Window, config: IConfig): Promise<IMcpShieldResult> {\n if (config) {\n const { slug, country, device } = config;\n\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({ window, country, slug, device, offer, rockmanId });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n return mcpShieldResult;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nasync function submitMSISDNOnce(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() trigger-pin action`) as IError & { type: string };\n submissionError.type = 'InvalidMSISDN';\n throw submissionError;\n }\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n // @ts-ignore\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.skip_validation === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n if (newExtraParams['skip-validation'] === '1') {\n isSkipValidation = true;\n }\n\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n const { rockmanId } = window.pac_analytics.visitor;\n\n const { slug, country, device, offer } = config;\n\n const search = window.location.search.substr(1) || '';\n const uniqid = !!uniqidResult && uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const result: IMSISDNSubmissionResult = await triggerPin({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams: newExtraParams,\n search,\n uniqid,\n evinaTid\n });\n\n if (result.isContentBlocked === true) {\n window.isContentBlocked = true;\n }\n if (result.success === false) {\n // derive a default type from the message\n const defaultType: string | null = result.message.includes('ALREADY SUBSCRIBED')\n ? 'AlreadySubscribed'\n : /invalid/i.test(result.message)\n ? 'InvalidMsisdn'\n : result.message.includes('duplicated_request')\n ? 'DuplicatedRequest'\n : null;\n\n // prefer an explicit error_code mapping when available\n const type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;\n\n // build and annotate the Error\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string | null;\n productUrl: string;\n };\n\n Object.assign(error, {\n type,\n message: result.message,\n productUrl: result.product_url ?? ''\n });\n\n throw error;\n } else {\n window.operator = result.operator; // currently used on server for KW_STC if present dont call empello for Shemaroo\n const codesWithMcpShied: { [key: string]: { [key: string]: string } } = {\n kw: {\n kw_viva: 'kw_viva'\n },\n k2: {\n k2_viva: 'k2_viva'\n },\n bh: {\n bh_viva: 'bh_viva'\n }\n };\n if (\n country &&\n result.operator &&\n ((codesWithMcpShied[country.toLowerCase()] &&\n codesWithMcpShied[country.toLowerCase()][result.operator.toLowerCase()]) ||\n country.toLowerCase() === 'iq') &&\n !window.isCallBlockApi &&\n !window.Empello // set on server https://www.notion.so/sammedia/KW-Agency-Shemaroo-STC-integration-1a114991683d4af79eb01a4d96789f30\n ) {\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator: result.operator,\n uniqid\n });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n\n if (result.javascript) {\n loadScriptInnerHtml(result.javascript);\n }\n\n return {\n type: 'SingleMSISDNSubmissionResult',\n pin: result.pin,\n uniqidResult,\n operator: result.operator,\n redirectUrl: result?.redirect_to_url, // For pin redirect empello\n ...(result?.userType ? { userType: result?.userType } : {}) // For Peru user plan if prepaid or postpaid\n };\n }\n}\n\nasync function submitMSISDNForMultipleOperators(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n operators: string[],\n extraParams?: IHash\n): Promise<MultiOperatorMSISDNSubmissionResult> {\n const results = await Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await submitMSISDNOnce(window, config, internationalMSISDN, {\n ...extraParams,\n operator: o\n });\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const alreadySubscribed = results.find((r: any) => r.type === 'left' && r.value?.type === 'AlreadySubscribed');\n\n if (results.every((r) => r.type === 'left')) {\n // no submission worked\n throw results[0].value;\n } else if (alreadySubscribed) {\n throw alreadySubscribed.value;\n } else {\n return {\n type: 'MultiOperatorMSISDNSubmissionResult'\n };\n }\n}\n\nexport async function submitPIN(\n window: Window,\n pin: string,\n config: IConfig,\n extraParams: IHash\n): Promise<{ productUrl?: string; isAlreadySubscribed?: boolean; gatewayRedirectUrl?: string }> {\n if (window.hostCountry && window.hostSlug) {\n config.country = window.hostCountry;\n config.slug = window.hostSlug;\n }\n const { slug, country, device } = config;\n const { offer } = window.pac_analytics.visitor;\n\n const newExtraParams = extraParams || {};\n const searchObj = searchToObject(window) as any;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n newExtraParams['skip-validation'] = '1';\n }\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (!pin) {\n const emptyPinError = new Error(`Error in submitMSISDN() verify-pin action:\\n Pin Cannot Be Empty`) as IError & {\n type: string;\n };\n emptyPinError.type = 'InvalidPIN';\n throw emptyPinError;\n }\n const uniqid = uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n const search = window.location.search.substr(1) || '';\n\n const pinResult: IPINSubmissionResult = await verifyPin({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams: newExtraParams,\n uniqid,\n evinaTid,\n search\n });\n if (pinResult.success === false) {\n let errorType: string;\n\n switch (true) {\n case pinResult.message.includes('pin does not match'):\n errorType = 'InvalidPIN';\n break;\n case pinResult.message.includes('mcp blocked'):\n errorType = 'SessionBlocked';\n break;\n case pinResult.message.includes('expired_pin'):\n errorType = 'ExpiredPIN';\n break;\n case pinResult.message.includes('insufficient_balance'):\n errorType = 'InsufficientBalance';\n break;\n case pinResult.message.includes('duplicated_request'):\n errorType = 'DuplicatedRequest';\n break;\n case pinResult.message.includes('ALREADY SUBSCRIBED'):\n errorType = 'AlreadySubscribed';\n break;\n default:\n errorType = 'InvalidPIN';\n }\n\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${pinResult.message}`) as IError & {\n type: string;\n };\n pinError.type = errorType;\n console.error(pinError);\n throw pinError;\n } else if (pinResult.async === true) {\n // Needed for ES https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n if (pinResult.product_url && pinResult.product_url !== '' && country?.toLowerCase() === 'es') {\n return { gatewayRedirectUrl: pinResult.product_url };\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n checkSubscription({ window, country, slug, device, offer, rockmanId, extraParams });\n\n const checkResult: ICheckSubscriptionResult = await loop(\n check,\n 100,\n (r) => r.success || r.message === 'invalid_pin',\n 0\n );\n if (checkResult.success === true) {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: checkResult.product_url || null, isAlreadySubscribed };\n }\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${checkResult.message}`) as IError & {\n type: string;\n };\n pinError.type = 'InvalidPIN';\n\n pinError.message = checkResult.message;\n\n throw pinError;\n } else {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: pinResult.product_url || null, isAlreadySubscribed };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IHash,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { ErrorType, redirectErrorTypes } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy, setStrategyExtraData } from '../strategy/strategySlice';\nimport submitMSISDN, { submitPIN } from './main';\n\nconst mockedPINState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet<PINEntryFailure, PINEntrySuccess>(),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedCompletedState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({ finalUrl: '/product' }),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedMSISDNEntryFailure: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\n// Define the initial state\nconst defaultInitialState: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\n/**\n * Sets the initial state of the pin flow based on the search parameters in the URL or the default state.\n *\n * @param {Window} window - The window object.\n * @return {PinFlowState} The initial state of the pin flow.\n */\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n const pinPageEvent = new Event('onPinPage');\n const isPinEntryStep =\n (search.ui_show_pin_entry && search.ui_show_pin_entry === '1') ||\n (search['show-pin-entry'] && search['show-pin-entry'] === '1');\n const isShowThankYouStep = search['show-thank-you'] && search['show-thank-you'] === '1';\n const isShowCustomError = search?.show_custom_error === '1';\n\n const rawParam = search?.ui_error_message ?? '';\n const normalizedParam = rawParam.replace(/\\+/g, '%20');\n const errorMsg = decodeURIComponent(normalizedParam);\n const mapParamError: { [key: string]: ErrorType } = {\n 'This mobile number is blacklisted': 'BlacklistedNumber'\n };\n\n const msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: mapParamError[errorMsg] || 'SomethingWentWrong',\n error: errorMsg\n })\n }\n };\n\n const thankYouState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: search?.product_url || ''\n }),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n\n const initalPinEntryState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet(),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n if (isPinEntryStep) {\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return initalPinEntryState;\n }\n if (isShowThankYouStep) {\n return thankYouState;\n }\n if (isShowCustomError) {\n return msisdnError;\n }\n\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-failure-state':\n return mockedMSISDNEntryFailure;\n case 'pin-state':\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return mockedPINState;\n case 'completed-state':\n return mockedCompletedState;\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\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls trigger-pin api that sends a pin to the user\n * Sets state to show pin entry\n */\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\nexport const submitMSISDNAction = createAsyncThunk<\n PINEntryState | MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, isHeaderEnrichmentSuccess } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n const searchObj = searchToObject(window) as { ui_show_pin_entry: string };\n\n try {\n /**\n * Palestine calling code is +970\n * But there was a request to have it as +972 only for gateway shemaroo\n */\n // Start PS Calling code temp fix\n if (config?.country.toLowerCase() === 'ps' && config?.slug.includes('shemaroo')) {\n const prefix = getInputValuePrefix(config?.country, msisdn);\n if (prefix === '+970') {\n msisdn = msisdn.replace('970', '972');\n }\n }\n // END PS Calling code temp fix\n\n const jsLinkResult = window?.pac_analytics?.visitor?.genericJsLinkResult;\n\n // If the flow is TPAY the above trigger pin will only do tracking on the backend and not actually request a pin from gateway\n // The code below handles that request\n if (jsLinkResult?.gateway === 'tpay' && !searchObj?.ui_show_pin_entry) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n await submitMSISDN(window, config, msisdn); // trigger pin call requested here by Adrian for BE tracking\n window.msisdn = msisdn;\n if (window.callConfirm) {\n try {\n window.callConfirm();\n return {\n ...pinFlowCurrentState,\n type: 'MSISDNEntry',\n result: RDS.Loading()\n };\n } catch (ex) {\n // Catch any unexpected errors\n const errorMsg = 'Confirm function failed';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: ex?.toString() || 'Error calling window.callConfirm function',\n message: ex.message\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n }\n }\n // Catch any unexpected errors\n const errorMsg = 'Confirm function not found';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n\n // END TPAY TRIGGER PIN\n }\n\n // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n // End Trigger Pin\n\n /**\n * Some flows require us to redirect to a url after trigger pin to check for fraud\n * The url will then do some processing and return back to ouisys with\n * extra param in the url that will tell us to show pin entry step or error\n */\n\n // Start Pin Redirect\n if (msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult.redirectUrl) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-redirect', {\n redirectUrl: msisdnSubmissionResult.redirectUrl\n });\n window.location.href = msisdnSubmissionResult.redirectUrl;\n return;\n }\n // End Pin Redirect\n\n // Start handle store msisdn\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 handle store msisdn\n\n const operator: string =\n msisdnSubmissionResult?.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult?.operator : '';\n\n const pinMaxLengthByOp: { [key: string]: number } = {\n SA_MOBILY: 6,\n SA_STC: 4,\n SA_ZAIN: 4\n };\n\n /**\n * onPinPage\n * some scripts on the server need to be injected on pin page/view\n * This event will be handled on server\n */\n const pinPageEvent = new Event('onPinPage');\n window?.dispatchEvent(pinPageEvent);\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.NothingYet(),\n data: {\n actualPIN: msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.pin : null,\n msisdn,\n operator,\n pinMaxLength: operator !== '' && pinMaxLengthByOp[operator] ? pinMaxLengthByOp[operator] : null,\n isHeaderEnrichmentSuccess,\n ...(msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult?.userType\n ? { userType: msisdnSubmissionResult.userType }\n : {})\n }\n };\n // END NORMAL TRIGGER PIN\n } catch (ex) {\n console.warn(ex);\n const errorType = ex.type;\n\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess: false,\n config\n }\n })\n );\n }\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.waterFallRedirectUrl) {\n tracker.customEvent('tallyman.v1-pin', 'redirect', 'waterfall-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.waterFallRedirectUrl,\n errorType\n });\n window.location.href = window?.pac_analytics?.visitor?.waterFallRedirectUrl;\n }\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\n/**\n * submitPinAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: 'PINEntry', result: RDS.NothingYet()}}\n \n * Calls verify-pin api that check if the user enters a valid pin\n * Sets state to show thank you page if pin is valid\n */\ninterface SubmitPINArgs {\n window: Window;\n msisdn: string;\n pin: string;\n extraParams?: IHash;\n}\n\nexport const submitPinAction = createAsyncThunk<\n PINEntryState,\n SubmitPINArgs,\n {\n rejectValue: PINEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitPinAction', async ({ window, msisdn, pin, 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 } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submitted', { msisdn, pin });\n const result = await submitPIN(window, pin, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submission-success', {\n msisdn,\n pin,\n finalUrl: result.productUrl\n });\n\n /**\n * Gateway redirect\n * Value returned in this case is actually the gateway url instead of the product url\n * More details on this ticket:\n * https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n */\n // Start Gateway redirect\n if (result.gatewayRedirectUrl && result.gatewayRedirectUrl !== '') {\n tracker.advancedInFlow('tallyman.v1-pin', 'gateway-redirect', {\n msisdn,\n pin,\n gatewayRedirectUrl: result.gatewayRedirectUrl\n });\n window.location.href = result.gatewayRedirectUrl;\n }\n // End Gateway redirect\n\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 ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: result.productUrl,\n isAlreadySubscribed: result.isAlreadySubscribed || false\n })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: PINEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidPIN':\n errorType = 'InvalidPIN';\n break;\n case 'SessionBlocked':\n errorType = 'SessionBlocked';\n break;\n case 'ExpiredPIN':\n errorType = 'ExpiredPIN';\n break;\n case 'InsufficientBalance':\n errorType = 'InsufficientBalance';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\n break;\n default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n // Redirect to the product url if returned in the exception\n setTimeout(() => {\n if (ex.productUrl) {\n window.location.href = ex.productUrl;\n }\n }, 0);\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\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>('pinFlow/backToStartAction', async (_, { getState, dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { strategy } = state.strategy.currentState.data;\n if (strategy === 'pin') {\n return {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n };\n }\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\ntype CountryCodeMap = { [country: string]: string };\n\nconst countryCodes: CountryCodeMap = {\n PS: '970'\n // Add other countries and codes here\n};\n\nconst getInputValuePrefix = (country: string, international: string): string => {\n if (!country || !international) return '';\n\n // Convert the country to uppercase and retrieve the country code\n const normalizedCountry = country.toUpperCase();\n const countryCode = countryCodes[normalizedCountry];\n\n // Check if the country code exists in the mapping\n if (!countryCode) {\n console.error('Country code not found for', country);\n return '';\n }\n\n return `+${countryCode}`;\n};\n\n// Define your slice\nconst pinFlowSlice = createSlice({\n name: 'pinFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Loading(),\n data: state.currentState.data\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState | MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n data: state.currentState.data\n };\n })\n .addCase(submitPinAction.pending, (state) => {\n state.currentState = { type: 'PINEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitPinAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitPinAction.rejected, (state, action: PayloadAction<PINEntryFailure>) => {\n state.currentState = { type: 'PINEntry', result: RDS.Failure(action.payload), data: state.currentState.data };\n })\n .addCase(backToStartAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n });\n }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\n\nexport const selectPinFlowState = (state: any) => state.pinFlow;\n"],"names":["usePinFlowState","useSelector","state","pinFlow","currentState","pinFlowMatch","_a","msisdnEntry","pinEntry","type","result","data","Error","checkIsCleanTraffic","country","window","shouldBlock","triggerPin","slug","device","offer","msisdn","rockmanId","extraParams","search","uniqid","evinaTid","cleanTrafficString","extraParamsQs","concat","Object","keys","map","k","filter","Boolean","join","cleanSearchParams","params","action","offerId","rockman_id","sam_evina_tid","page","encodeURIComponent","_b","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","zain_antifraud_id","korek_antifraud_id","ip_address","_d","_c","pac_analytics","visitor","ip","ip_range_operator","_f","_e","ipRangeOperator","queryString","entries","__read","key","value","host","DEV_BASE_URL","url","fetch","then","x","json","verifyPin","pin","bupperizeCountry","ClickID","antifraud_click_id","mcpShield","operator","pageUrl","ipAdd","URLSearchParams","__assign","toString","client_lpu","append","submitMSISDN","maybeConfig","internationalMSISDN","config","automaticallySubmitAllOperators","operators","length","submitMSISDNForMultipleOperators","submitMSISDNOnce","uniqidResult","submissionError","newExtraParams","isSkipValidation","searchObj","searchToObject","success","skip_validation","match","substr","tid","sent","isContentBlocked","defaultType","message","includes","test","error_code","normaliseErrorCode","error","assign","productUrl","product_url","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","console","warn","loadScriptInnerHtml","source","err_2","javascript","redirectUrl","redirect_to_url","userType","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorType","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","ui_show_pin_entry","isShowThankYouStep","isShowCustomError","show_custom_error","normalizedParam","ui_error_message","replace","errorMsg","decodeURIComponent","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","strategy","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","jsLinkResult","_j","_h","genericJsLinkResult","gateway","tracker","advancedInFlow","_r","callConfirm","RDS.Loading","ex","errorMsg_1","recedeInFlow","msisdnSubmissionResult","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","setStrategyExtraData","PossibleTypes","PIN","redirectErrorTypes","_k","_l","waterFallRedirectUrl","redirect_url","_o","_m","_q","submitPinAction","ex_2","setTimeout","backToStartAction","_","identifyStrategy","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"2wBAGO,IAAMA,EAAkB,SAACC,GAE9B,OADqBA,GAAY,SAACC,GAAqB,OAAAA,EAAMC,QAAQC,YAAd,GAEzD,ECIA,SAASC,EAAgBC,OACvBC,EAAWD,EAAAC,YACXC,EAAQF,EAAAE,SAKR,OAAO,SAACN,GACN,OAAQA,EAAMO,MACZ,IAAK,cACH,OAAOF,EAAYL,EAAMQ,QAC3B,IAAK,WACH,OAAOF,EAASN,EAAMQ,OAAQR,EAAMS,MACtC,QACE,MAAM,IAAIC,MAAM,iBAEtB,CACF,CCvBA,ICAMC,EAAsB,SAACC,GAC3B,MAAgB,OAAZA,EACoB,oBAAXC,SAAiD,IAAvBA,OAAOC,YACnC,0BAEF,yBAEF,EACT,EACMC,EAAa,SAAOX,GACxB,IAAAS,EAAMT,EAAAS,OACND,EAAOR,EAAAQ,QACPI,EAAIZ,EAAAY,KACJC,EAAMb,EAAAa,OACNC,UACAC,EAAMf,EAAAe,OACNC,EAAShB,EAAAgB,UACTC,EAAWjB,EAAAiB,YACXC,EAAMlB,EAAAkB,OACNC,EAAMnB,EAAAmB,OACNC,EAAQpB,EAAAoB,wGA4DR,OA9CMC,EAAqBd,EAAoBC,GACzCc,EAAgB,IAAIC,OAAAC,OAAOC,KAAKR,GACnCS,KAAI,SAACC,GAAM,OAACV,EAAYU,GAAK,GAAAJ,OAAGI,EAAC,KAAAJ,OAAIN,EAAYU,IAAO,MACxDC,OAAOC,SACPC,KAAK,MAGRZ,EAASa,EAAkBb,GAGrBc,EAAS,CACbC,OAAQ,cACRzB,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNqB,QAASpB,EACTC,OAAMA,EACNoB,WAAYnB,EACZoB,cAAehB,EACfiB,KAAMC,mBAAmC,QAAhBC,EAAA9B,aAAM,EAANA,EAAQ+B,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,MAC3CC,cAAejC,EAAOkC,cAAgB,GACtCC,uBAAwBnC,EAAOmC,wBAA0B,GACzDC,kBAAmBpC,EAAOoC,mBAAqB,GAC/CC,YAAarC,EAAOqC,aAAe,GACnC3B,OAAQA,GAAU,GAElB4B,aAActC,EAAOsC,cAAgB,GAGrCC,qBAAsBvC,EAAOuC,sBAAwB,GACrDC,qBAAsBxC,EAAOwC,sBAAwB,GACrDC,kBAAmBzC,EAAOyC,mBAAqB,GAC/CC,mBAAoB1C,EAAO0C,oBAAsB,GAEjDC,YAA4C,QAAhCC,EAAuB,QAAvBC,EAAA7C,aAAM,EAANA,EAAQ8C,qBAAe,IAAAD,OAAA,EAAAA,EAAAE,eAAS,IAAAH,OAAA,EAAAA,EAAAI,KAAM,GAClDC,mBAAmD,QAAhCC,EAAuB,QAAvBC,EAAAnD,aAAM,EAANA,EAAQ8C,qBAAe,IAAAK,OAAA,EAAAA,EAAAJ,eAAS,IAAAG,OAAA,EAAAA,EAAAE,kBAAmB,IAIlEC,EAActC,OAAOuC,QAAQ/B,GAChCJ,QAAO,SAAC5B,GAAA,IAAAuC,EAAAyB,OAAe,OAAbzB,EAAA,GAAOA,EAAA,EAAM,IACvBb,KAAI,SAAC1B,GAAA,IAAAuC,EAAAyB,OAACC,EAAG1B,EAAA,GAAE2B,EAAK3B,EAAA,GAAM,MAAA,GAAGhB,OAAA0C,EAAO,KAAA1C,OAAA2C,EAAV,IACtBpC,KAAK,KACFqC,EAAO1D,EAAO2D,cAAgB,GAC9BC,EAAM,UAAGF,EAAI,kBAAA5C,OAAiBuC,GAAcvC,OAAAF,GAAqBE,OAAAD,GAAgBC,OAAAL,EAAS,WAAIA,GAAW,IAE/G,CAAA,EAAOoD,MAAMD,GAAKE,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YAG1BC,EAAY,SAAO1E,GACvB,IAAAS,EAAMT,EAAAS,OACND,EAAOR,EAAAQ,QACPI,EAAIZ,EAAAY,KACJC,EAAMb,EAAAa,OACNC,UACAE,EAAShB,EAAAgB,UACT2D,EAAG3E,EAAA2E,IACH1D,EAAWjB,EAAAiB,YACXE,EAAMnB,EAAAmB,OACNC,EAAQpB,EAAAoB,SACRF,EAAMlB,EAAAkB,8FAqDN,OAvCMG,EAAqBd,EAAoBC,GACzCc,EAAgB,IAAIC,OAAAC,OAAOC,KAAKR,GACnCS,KAAI,SAACC,GAAM,MAAA,GAAGJ,OAAAI,EAAK,KAAAJ,OAAAN,EAAYU,GAAI,IACnCG,KAAK,MAERZ,EAASa,EAAkBb,GAErBc,EAAS,CACbC,OAAQ,aACRzB,QAASoE,EAAiBpE,GAC1BI,KAAIA,EACJC,OAAMA,EACNqB,QAASpB,EACTqB,WAAYnB,EACZ2D,IAAGA,EACHtC,KAAMC,mBAAmC,QAAhBC,EAAA9B,aAAM,EAANA,EAAQ+B,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,MAC3CC,cAAejC,EAAOkC,cAAgB,GACtCkC,QAASpE,EAAOqE,oBAAsB,GACtChC,YAAarC,EAAOqC,aAAe,GACnCV,cAAehB,EACfD,OAAMA,EAGN4B,aAActC,EAAOsC,cAAgB,GACrCC,qBAAsBvC,EAAOuC,sBAAwB,GACrDC,qBAAsBxC,EAAOwC,sBAAwB,GACrDC,kBAAmBzC,EAAOyC,mBAAqB,GAC/CC,mBAAoB1C,EAAO0C,oBAAsB,IAI7CW,EAActC,OAAOuC,QAAQ/B,GAChCJ,QAAO,SAAC5B,GAAA,IAAAuC,EAAAyB,OAAe,OAAbzB,EAAA,GAAOA,EAAA,EAAM,IACvBb,KAAI,SAAC1B,GAAA,IAAAuC,EAAAyB,OAACC,EAAG1B,EAAA,GAAE2B,EAAK3B,EAAA,GAAM,MAAA,GAAGhB,OAAA0C,EAAO,KAAA1C,OAAA2C,EAAV,IACtBpC,KAAK,KAEFqC,EAAO1D,EAAO2D,cAAgB,GAC9BC,EAAM,UAAGF,EAAI,kBAAA5C,OAAiBuC,GAAcvC,OAAAF,GAAqBE,OAAAD,GAAgBC,OAAAL,EAAS,WAAIA,GAAW,IAE/G,CAAA,EAAOoD,MAAMD,GAAKE,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YAG1BM,EAAY,SAAO/E,OACvBS,EAAMT,EAAAS,OACND,EAAOR,EAAAQ,QACPI,EAAIZ,EAAAY,KACJC,EAAMb,EAAAa,OACNC,EAAKd,EAAAc,MACLE,EAAShB,EAAAgB,UACTgE,EAAQhF,EAAAgF,SACR7D,EAAMnB,EAAAmB,0FAkCN,OAvBM8D,EAAUxE,EAAO+B,SAASC,KAC1ByC,EAAQzE,EAAO8C,cAAcC,QAAQC,GAErCzB,EAAS,IAAImD,gBAAeC,EAAAA,EAAA,CAChCnD,OAAQ,aACRzB,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNqB,QAASpB,EAAMuE,WACflD,WAAYnB,EACZsE,WAAYL,GACRD,GAAY,CAAEA,SAAQA,IACtB7D,GAAU,CAAEA,OAAMA,KAIpB+D,GACFlD,EAAOuD,OAAO,YAAaL,GAGvBf,EAAO1D,EAAO2D,cAAgB,GAC9BC,EAAM,UAAGF,EAAI,kBAAA5C,OAAiBS,EAAOqD,YAE3C,CAAA,EAAOf,MAAMD,GAAKE,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YClLlB,SAAgBe,EAC5B/E,EACAgF,EACAC,EACAzE,4EAKA,OAA+C,KADzC0E,KAAoB7E,MAAOL,EAAO8C,cAAcC,QAAQ1C,OAAW2E,GAAe,CAAA,IAC7EG,iCAA8CD,EAAOE,WAAaF,EAAOE,UAAUC,OAAS,EACrG,CAAA,EAAOC,EAAiCtF,EAAQkF,EAAQD,EAAqBC,EAAOE,UAAW5E,IAE1F,CAAA,EAAA+E,EAAiBvF,EAAQkF,EAAQD,EAAqBzE,SAC9D,CAED,IAAIgF,EAAe,GAwBnB,SAAeD,EACbvF,EACAkF,EACAD,EACAzE,+IAEA,IAAKyE,EAGH,MAFMQ,EAAkB,IAAI5F,MAAM,+CAClBH,KAAO,gBACjB+F,EAwBgC,OAtBlCC,EAAiBlF,GAAe,GAClCmF,GAAmB,GAGK,UAAvBC,OAFCA,EAAYC,EAAe7F,WAE5B4F,EAAWE,UAAoD,MAA9BF,EAAU,kBAAuD,IAA3B5F,EAAO+F,mBAEjFL,EAAe,mBAAqB,KAGI,MAAtCA,EAAe,qBACjBC,GAAmB,GAGfrF,EAASqF,EAAmBV,GAAuBjF,EAAOM,OAAS2E,EAAoBe,MAAM,SAAS3E,KAAK,IACzGd,EAAcP,EAAO8C,cAAcC,kBAEnC5C,EAAiC+E,EAAM/E,KAAjCJ,EAA2BmF,EAApBnF,QAAEK,EAAkB8E,EAAZ9E,OAAEC,EAAU6E,QAEnCzE,EAAST,EAAO+B,SAAStB,OAAOwF,OAAO,IAAM,GAC7CvF,EAAW8E,GAAiC,KAAjBA,EAAsB,qBAAcA,GAAiB,GAChF7E,OAA6B,IAAXX,GAA0BA,EAAOkG,IAAMlG,EAAOkG,IAAM,GAEpC,CAAA,EAAMhG,EAAW,CACvDF,OAAMA,EACND,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNC,MAAKA,EACLC,OAAMA,EACNC,UAASA,EACTC,YAAakF,EACbjF,OAAMA,EACNC,OAAMA,EACNC,SAAQA,YAMN,IAH4B,KAd1BhB,EAAkCmC,EAYtCqE,QAESC,mBACTpG,EAAOoG,kBAAmB,IAEL,IAAnBzG,EAAOmG,QAAP,MAAwB,CAAA,EAAA,GAyB1B,MAvBMO,EAA6B1G,EAAO2G,QAAQC,SAAS,sBACvD,oBACA,WAAWC,KAAK7G,EAAO2G,SACvB,gBACA3G,EAAO2G,QAAQC,SAAS,sBACxB,oBACA,KAGE7G,EAAOC,EAAO8G,WAAaC,EAAmB/G,EAAO8G,YAAcJ,EAGnEM,EAAQ,IAAI9G,MAAM,gDAAAiB,OAAgDnB,EAAO2G,UAK/EvF,OAAO6F,OAAOD,EAAO,CACnBjH,KAAIA,EACJ4G,QAAS3G,EAAO2G,QAChBO,mBAAYtH,EAAAI,EAAOmH,2BAAe,KAG9BH,SAeJ,GAbF3G,EAAOuE,SAAW5E,EAAO4E,SACnBwC,EAAkE,CACtEC,GAAI,CACFC,QAAS,WAEXC,GAAI,CACFC,QAAS,WAEXC,GAAI,CACFC,QAAS,cAIXtH,GACAJ,EAAO4E,WACLwC,EAAkBhH,EAAQuH,gBAC1BP,EAAkBhH,EAAQuH,eAAe3H,EAAO4E,SAAS+C,gBAC/B,OAA1BvH,EAAQuH,iBACTtH,EAAOuH,gBACPvH,EAAOwH,QANR,MAAA,CAAA,EAAA,oBAS4C,6BAAA,CAAA,EAAMlD,EAAU,CACxDtE,OAAMA,EACND,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNC,MAAKA,EACLE,UAASA,EACTgE,SAAU5E,EAAO4E,SACjB7D,OAAMA,mBAEwB,KAV1B+G,EAAoC3F,EASxCqE,QACkBL,QAClB4B,QAAQC,KAAKF,EAAgBnB,UAE7BsB,EAAoBH,EAAgBI,QACpCrC,EAAeiC,EAAgB/G,uCAGjCgH,QAAQC,KAAKG,gBAQjB,OAJInI,EAAOoI,YACTH,EAAoBjI,EAAOoI,YAI3B,CAAA,EAAApD,EAAA,CAAAjF,KAAM,+BACNwE,IAAKvE,EAAOuE,IACZsB,aAAYA,EACZjB,SAAU5E,EAAO4E,SACjByD,YAAarI,aAAM,EAANA,EAAQsI,kBACjBtI,aAAA,EAAAA,EAAQuI,UAAW,CAAEA,SAAUvI,aAAM,EAANA,EAAQuI,UAAa,CAAE,UAG/D,CAED,SAAe5C,EACbtF,EACAkF,EACAD,EACAG,EACA5E,4GAEgB,MAAM,CAAA,EAAA2H,QAAQC,IAC5BhD,EAAUnE,KAAI,SAAOoH,GAAC,OAAAC,EAAAC,OAAA,OAAA,GAAA,qEAEG,6BAAA,CAAA,EAAMhD,EAAiBvF,EAAQkF,EAAQD,EACvDN,EAAAA,EAAA,CAAA,EAAAnE,GACH,CAAA+D,SAAU8D,aAEZ,OAJMG,EAAejJ,EAGnB4G,OACK,CAAA,EAAAsC,SAAWD,GAAY,CAAEjE,SAAU8D,aAE1C,kBAAA,CAAA,EAAOK,EAAKC,wBAEf,GAAA,aAKH,GAhBMC,EAAUrJ,EAYf4G,OAEK0C,EAAoBD,EAAQE,MAAK,SAACC,GAAW,IAAAxJ,EAAA,MAAW,SAAXwJ,EAAErJ,MAAqC,uBAAX,QAAPH,EAAAwJ,EAAEtF,aAAK,IAAAlE,OAAA,EAAAA,EAAEG,KAA4B,IAEzGkJ,EAAQI,OAAM,SAACD,GAAM,MAAW,SAAXA,EAAErJ,IAAF,IAEvB,MAAMkJ,EAAQ,GAAGnF,MACZ,GAAIoF,EACT,MAAMA,EAAkBpF,MAExB,MAAO,CAAA,EAAA,CACL/D,KAAM,8CAGX,CAEK,SAAgBuJ,EACpBjJ,EACAkE,EACAgB,EACA1E,mIAiBA,GAfIR,EAAOkJ,aAAelJ,EAAOmJ,WAC/BjE,EAAOnF,QAAUC,EAAOkJ,YACxBhE,EAAO/E,KAAOH,EAAOmJ,UAEfhJ,EAA0B+E,EAAtB/E,KAAEJ,EAAoBmF,EAAMnF,QAAjBK,EAAW8E,SAC1B7E,EAAUL,EAAO8C,cAAcC,cAEjC2C,EAAiBlF,GAAe,GAEX,UAAvBoF,OADEA,EAAYC,EAAe7F,SACpB,EAAT4F,EAAWE,UAAoD,MAA9BF,EAAU,kBAC7CF,EAAe,mBAAqB,KAG9BnF,EAAcP,EAAO8C,cAAcC,mBAEtCmB,EAKH,MAJMkF,EAAgB,IAAIvJ,MAAM,qEAGlBH,KAAO,aACf0J,EAMgC,OAJlC1I,EAA0B,KAAjB8E,EAAsB,cAAc1E,OAAA0E,GAAiB,GAC9D7E,OAA6B,IAAXX,GAA0BA,EAAOkG,IAAMlG,EAAOkG,IAAM,GACtEzF,EAAST,EAAO+B,SAAStB,OAAOwF,OAAO,IAAM,GAEX,CAAA,EAAMhC,EAAU,CACtDjE,OAAMA,EACND,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNC,MAAKA,EACLE,UAASA,EACT2D,IAAGA,EACH1D,YAAakF,EACbhF,OAAMA,EACNC,SAAQA,EACRF,OAAMA,YAEJ,IAAsB,KAbpB4I,EAAkC9J,EAYtC4G,QACYL,QAAV,MAA2B,CAAA,EAAA,GAG7B,OAFIwD,UAEI,GACN,KAAKD,EAAU/C,QAAQC,SAAS,sBAC9B+C,EAAY,aACZ,MACF,KAAKD,EAAU/C,QAAQC,SAAS,eAC9B+C,EAAY,iBACZ,MACF,KAAKD,EAAU/C,QAAQC,SAAS,eAC9B+C,EAAY,aACZ,MACF,KAAKD,EAAU/C,QAAQC,SAAS,wBAC9B+C,EAAY,sBACZ,MACF,KAAKD,EAAU/C,QAAQC,SAAS,sBAC9B+C,EAAY,oBACZ,MACF,KAAKD,EAAU/C,QAAQC,SAAS,sBAC9B+C,EAAY,oBACZ,MACF,QACEA,EAAY,aAQhB,MALMC,EAAW,IAAI1J,MAAM,+CAAAiB,OAA+CuI,EAAU/C,WAG3E5G,KAAO4J,EAChB5B,QAAQf,MAAM4C,GACRA,SACG,OAAoB,IAApBF,EAAUG,MAAc,CAAA,EAAA,GAE7BH,EAAUvC,aAAyC,KAA1BuC,EAAUvC,aAAiD,QAA3B/G,aAAA,EAAAA,EAASuH,eACpE,CAAA,EAAO,CAAEmC,mBAAoBJ,EAAUvC,eAEnC4C,EAAiD,WACrD,OFlToB,SAAOnK,GAC/B,IAAAS,EAAMT,EAAAS,OACND,EAAOR,EAAAQ,QACPI,EAAIZ,EAAAY,KACJC,WACAC,EAAKd,EAAAc,MACLE,EAAShB,EAAAgB,2FA0BT,OAhBMgB,EAAS,CACbC,OAAQ,qBACRzB,QAASoE,EAAiBpE,GAC1BI,KAAIA,EACJC,OAAMA,EACNqB,QAASpB,EACTqB,WAAYnB,GAGR8C,EAActC,OAAOuC,QAAQ/B,GAChCJ,QAAO,SAAC5B,GAAA,IAAAuC,EAAAyB,OAAe,OAAbzB,EAAA,GAAa2B,MAAN3B,EAAA,EAAM,IACvBb,KAAI,SAAC1B,GAAA,IAAAuC,EAAAyB,OAACC,EAAG1B,EAAA,GAAE2B,EAAK3B,EAAA,GAAM,MAAA,UAAG0B,EAAG,KAAA1C,OAAIe,mBAAmB4B,GAA7B,IACtBpC,KAAK,KAEFqC,EAAO1D,EAAO2D,cAAgB,GAC9BC,EAAM,GAAG9C,OAAA4C,EAAqB,kBAAA5C,OAAAuC,GACpC,CAAA,EAAOQ,MAAMD,GAAKE,MAAK,SAAC6F,GAAa,OAAAA,EAAS3F,MAAT,WEkRjC4F,CAAkB,CAAE5J,OAAMA,EAAED,QAAOA,EAAEI,KAAIA,EAAEC,OAAMA,EAAEC,MAAKA,EAAEE,YAAWC,YAAWA,GAAhF,EAEkD,CAAA,EAAAqJ,EAClDH,EACA,KACA,SAACX,GAAM,OAAAA,EAAEjD,SAAyB,gBAAdiD,EAAEzC,OAAyB,GAC/C,YAEF,IAA4B,KANtBwD,EAAwCvK,EAK7C4G,QACeL,QAEd,OADMiE,EAA4C,uBAAtBV,EAAU/C,QACtC,CAAA,EAAO,CAAEO,WAAYiD,EAAYhD,aAAe,KAAMiD,oBAAmBA,IAS3E,MAPMR,EAAW,IAAI1J,MAAM,+CAAAiB,OAA+CgJ,EAAYxD,WAG7E5G,KAAO,aAEhB6J,EAASjD,QAAUwD,EAAYxD,QAEzBiD,SAGN,OADMQ,EAA4C,uBAAtBV,EAAU/C,QACtC,CAAA,EAAO,CAAEO,WAAYwC,EAAUvC,aAAe,KAAMiD,oBAAmBA,UAE1E,CCzTD,IAAMC,EAA+B,CACnC3K,aAAc,CACZK,KAAM,WACNC,OAAQsK,IACRrK,KAAM,CACJsK,UAAW,GACX5J,OAAQ,GACRiE,SAAU,GACV4F,aAAc,KAKdC,EAAqC,CACzC/K,aAAc,CACZK,KAAM,WACNC,OAAQ0K,EAA8C,CAAEC,SAAU,aAClE1K,KAAM,CACJsK,UAAW,GACX5J,OAAQ,GACRiE,SAAU,GACV4F,aAAc,KAKdI,EAAyC,CAC7ClL,aAAc,CACZK,KAAM,cACNC,OAAQ6K,EAAoD,CAC1DlB,UAAW,gBACX3C,MAAO,4BAMP8D,EAAoC,CACxCpL,aAAc,CACZK,KAAM,cACNC,OAAQsK,MA4FNS,EAlFkB,SAAC1K,SACjBS,EAASoF,EAAe7F,GACxB2K,EAAe,IAAIC,MAAM,aACzBC,EACHpK,EAAOqK,mBAAkD,MAA7BrK,EAAOqK,mBACnCrK,EAAO,mBAAkD,MAA7BA,EAAO,kBAChCsK,EAAqBtK,EAAO,mBAAkD,MAA7BA,EAAO,kBACxDuK,EAAkD,OAA9BvK,aAAA,EAAAA,EAAQwK,mBAG5BC,GADuC,QAA5B3L,EAAAkB,aAAA,EAAAA,EAAQ0K,wBAAoB,IAAA5L,EAAAA,EAAA,IACZ6L,QAAQ,MAAO,OAC1CC,EAAWC,mBAAmBJ,GAK9BK,EAA4B,CAChClM,aAAc,CACZK,KAAM,cACNC,OAAQ6K,EAAoD,CAC1DlB,UAR8C,CAClD,oCAAqC,qBAOR+B,IAAa,qBACtC1E,MAAO0E,MAKPG,EAA8B,CAClCnM,aAAc,CACZK,KAAM,WACNC,OAAQ0K,EAA8C,CACpDC,UAAU7J,eAAAA,EAAQqG,cAAe,KAGnClH,KAAM,CACJU,QAAQG,eAAAA,EAAQH,SAAU,GAC1BiE,UAAU9D,eAAAA,EAAQ8D,WAAY,MAK9BkH,EAAoC,CACxCpM,aAAc,CACZK,KAAM,WACNC,OAAQsK,IAERrK,KAAM,CACJU,QAAQG,eAAAA,EAAQH,SAAU,GAC1BiE,UAAU9D,eAAAA,EAAQ8D,WAAY,MAIpC,GAAIsG,EAGF,OADA7K,SAAAA,EAAQ0L,cAAcf,GACfc,EAET,GAAIV,EACF,OAAOS,EAET,GAAIR,EACF,OAAOO,EAGT,IAAI9K,EAAO,aAeT,OAAOgK,EAdP,OAAQhK,EAAO,kBACb,IAAK,uBACH,OAAO8J,EACT,IAAK,YAGH,OADAvK,SAAAA,EAAQ0L,cAAcf,GACfX,EACT,IAAK,kBACH,OAAOI,EACT,QAEE,OADA1C,QAAQf,MAAM,2BACP8D,EAKf,CAEqBkB,CAAgB3L,QAcxB4L,EAAqBC,EAMhC,8BAA8B,SAAOtM,EAAiCuC,GAA/B,IAAA9B,WAAQM,EAAMf,EAAAe,OAAEE,EAAWjB,EAAAiB,YAAMsL,aAAUC,EAAQjK,EAAAiK,SAAEC,EAAelK,EAAAkK,sKAE3G,GADM7M,EAAmB2M,MACiB,QAArC5I,EAA6B,kBAA7BN,EAAAzD,aAAK,EAALA,EAAO8M,+BAAU5M,oBAAY,IAAA8D,OAAA,EAAAA,EAAEvD,YAAM,IAAAsD,OAAA,EAAAA,EAAAgC,QACxC,MAAA,CAAA,EAAO8G,EAAgB,CACrB1C,UAAW,qBAGTzG,EAAwC1D,EAAM8M,SAAS5M,aAAaO,KAAlEsF,EAAMrC,EAAAqC,OAAEgH,8BACVC,EAAmC,QAAbC,EAAAjN,EAAMC,eAAO,IAAAgN,OAAA,EAAAA,EAAE/M,aACrCuG,EAAYC,EAAe7F,iDAQO,QAAlCkF,aAAM,EAANA,EAAQnF,QAAQuH,iBAA0BpC,aAAA,EAAAA,EAAQ/E,KAAKoG,SAAS,cAEnD,SADA8F,EAAoBnH,aAAA,EAAAA,EAAQnF,QAASO,KAElDA,EAASA,EAAO8K,QAAQ,MAAO,QASL,UAA1BkB,OAJEA,EAA6C,QAA9BC,EAAqB,QAArBC,EAAAxM,aAAM,EAANA,EAAQ8C,qBAAa,IAAA0J,OAAA,EAAAA,EAAEzJ,eAAO,IAAAwJ,OAAA,EAAAA,EAAEE,4BAIjDH,EAAcI,WAAuB9G,aAAA,EAAAA,EAAWkF,mBAAiB,CAAA,EAAA,IACnE6B,EAAQC,eAAe,kBAAmB,mBAAoB,CAAEtM,OAAMA,IAChE,CAAA,EAAAyE,EAAa/E,EAAQkF,EAAQ5E,YAEnC,GAFAuM,EAA0C1G,OAC1CnG,EAAOM,OAASA,EACZN,EAAO8M,YACT,IAEE,OADA9M,EAAO8M,cACP,CAAA,EAAAnI,EAAAA,EAAA,CAAA,EACKwH,GAAmB,CACtBzM,KAAM,cACNC,OAAQoN,MAEX,CAAC,MAAOC,GASP,OAPMC,EAAW,0BACjBN,EAAQO,aAAa,kBAAmB,4BAA6B,CACnE5M,OAAMA,EACNgJ,UAAW,mBACX3C,OAAOqG,aAAA,EAAAA,EAAIpI,aAAc,4CACzB0B,QAAS0G,EAAG1G,UAEd,CAAA,EAAO0F,EAAgB,CACrB1C,UAAW,mBACX3C,MAAOsG,EACP3G,QAAS2G,IAEZ,CAUH,OAPM5B,EAAW,6BACjBsB,EAAQO,aAAa,kBAAmB,4BAA6B,CACnE5M,OAAMA,EACNgJ,UAAW,mBACX3C,MAAO0E,EACP/E,QAAS+E,IAEX,CAAA,EAAOW,EAAgB,CACrB1C,UAAW,mBACX3C,MAAO0E,EACP/E,QAAS+E,YAQkB,OAD/BsB,EAAQC,eAAe,kBAAmB,mBAAoB,CAAEtM,OAAMA,IACjC,CAAA,EAAAyE,EAAa/E,EAAQkF,EAAQ5E,WAWlE,OAXM6M,EAAyBN,EAA0C1G,OACzEwG,EAAQC,eAAe,kBAAmB,4BAA6B,CAAEtM,OAAMA,IAU3C,iCAAhC6M,EAAuBzN,MAA2CyN,EAAuBnF,aAC3F2E,EAAQC,eAAe,kBAAmB,4BAA6B,CAAEtM,OAAMA,IAC/EqM,EAAQS,YAAY,OAAQ,eAAgB,kBAAmB,CAC7DpF,YAAamF,EAAuBnF,cAEtChI,EAAO+B,SAASC,KAAOmL,EAAuBnF,YACvC,CAAA,IAKLxH,GAAeA,EAAY6M,aAA2C,SAA5B7M,EAAY6M,YAClD,CAAA,EAAAA,EAAY/M,GACfwD,MAAK,SAAClE,GACDA,GAAQA,EAAKA,MAAQA,EAAKA,KAAKkG,QACjC6G,EAAQS,YAAY,OAAQ,eAAgB,yBAE5CT,EAAQS,YAAY,OAAQ,eAAgB,uBAEhD,IACCE,OAAM,SAAC3G,GACNgG,EAAQS,YAAY,OAAQ,eAAgB,sBAAuBzG,EACpE,KAX2E,CAAA,EAAA,UAC9EkG,EAAA1G,wBA+BF,OAjBM5B,EAC6B,kCAAjC4I,eAAAA,EAAwBzN,MAA0CyN,aAAA,EAAAA,EAAwB5I,SAAW,GAEjGgJ,EAA8C,CAClDC,UAAW,EACXC,OAAQ,EACRC,QAAS,GAQL/C,EAAe,IAAIC,MAAM,aAC/B5K,SAAAA,EAAQ0L,cAAcf,GAEtB,CAAA,EAAAhG,EAAAA,EAAA,CAAA,EACKwH,GACH,CAAAzM,KAAM,WACNC,OAAQsK,IACRrK,KAAI+E,EAAA,CACFuF,UAA2C,iCAAhCiD,EAAuBzN,KAA0CyN,EAAuBjJ,IAAM,KACzG5D,OAAMA,EACNiE,SAAQA,EACR4F,aAA2B,KAAb5F,GAAmBgJ,EAAiBhJ,GAAYgJ,EAAiBhJ,GAAY,KAC3F2H,0BAAyBA,GACW,iCAAhCiB,EAAuBzN,OAA2CyN,eAAAA,EAAwBjF,UAC1F,CAAEA,SAAUiF,EAAuBjF,UACnC,CAAE,aAoCV,kBA/BAR,QAAQC,KAAKgG,GACPrE,EAAYqE,EAAGjO,KAErBiN,EAAQO,aAAa,kBAAmB,4BAA6B,CACnE5M,OAAMA,EACNgJ,UAASA,EACT3C,MAAOgH,EAAG/I,WACV0B,QAASqH,EAAGrH,QACZO,WAAY8G,EAAG9G,aAGbqF,GACFH,EACE6B,EAAqB,CACnBlO,KAAMmO,EAAcC,IACpBlO,KAAM,CACJsM,2BAA2B,EAC3BhH,OAAMA,MAMV6I,EAAmBxH,SAAS+C,KAA4C,kBAA9B0E,EAAAhO,aAAM,EAANA,EAAQ8C,oCAAeC,eAAO,IAAAkL,OAAA,EAAAA,EAAEC,wBAC5EvB,EAAQS,YAAY,kBAAmB,WAAY,qBAAsB,CACvEe,qBAAcC,EAAuB,QAAvBC,EAAArO,aAAA,EAAAA,EAAQ8C,qBAAe,IAAAuL,OAAA,EAAAA,EAAAtL,8BAASmL,qBAC9C5E,UAASA,IAEXtJ,EAAO+B,SAASC,KAAqC,QAA9BsM,YAAAtO,aAAM,EAANA,EAAQ8C,oCAAeC,eAAO,IAAAuL,OAAA,EAAAA,EAAEJ,sBAGzD,CAAA,EAAOlC,EAAgB,CACrB1C,UAASA,EACT3C,MAAOgH,EAAG/I,WACV0B,QAASqH,EAAGrH,QACZO,WAAY8G,EAAG9G,qCAGpB,IAgBY0H,EAAkB1C,EAM7B,2BAA2B,SAAOtM,EAAsCuC,OAApC9B,EAAMT,EAAAS,OAAEM,EAAMf,EAAAe,OAAE4D,EAAG3E,EAAA2E,IAAE1D,EAAWjB,EAAAiB,YAAMsL,EAAQhK,EAAAgK,SAAEE,EAAelK,EAAAkK,oIAGnG,GAFM7M,EAAmB2M,MAEiB,QAArC3I,EAA6B,kBAA7BN,EAAA1D,aAAK,EAALA,EAAO8M,+BAAU5M,oBAAY,IAAAuD,OAAA,EAAAA,EAAEhD,YAAM,IAAAuD,OAAA,EAAAA,EAAA+B,QACxC,MAAA,CAAA,EAAO8G,EAAgB,CACrB1C,UAAW,qBAGPpE,EAAW/F,EAAM8M,SAAS5M,aAAaO,KAAIsF,OAC7CiH,EAAmC,QAAbjJ,EAAA/D,EAAMC,eAAO,IAAA8D,OAAA,EAAAA,EAAE7D,8BAG1B,6BADfsN,EAAQC,eAAe,kBAAmB,gBAAiB,CAAEtM,SAAQ4D,IAAGA,IACnD,CAAA,EAAA+E,EAAUjJ,EAAQkE,EAAKgB,EAAQ1E,WAyBhD,OAzBEb,EAASyM,EAAiDjG,OAChEwG,EAAQC,eAAe,kBAAmB,yBAA0B,CAClEtM,OAAMA,EACN4D,IAAGA,EACHoG,SAAU3K,EAAOkH,aAUflH,EAAO8J,oBAAoD,KAA9B9J,EAAO8J,qBACtCkD,EAAQC,eAAe,kBAAmB,mBAAoB,CAC5DtM,OAAMA,EACN4D,IAAGA,EACHuF,mBAAoB9J,EAAO8J,qBAE7BzJ,EAAO+B,SAASC,KAAOrC,EAAO8J,oBAK5BjJ,GAAeA,EAAY6M,aAA2C,SAA5B7M,EAAY6M,YAClD,CAAA,EAAAA,EAAY/M,GACfwD,MAAK,SAAClE,GACDA,GAAQA,EAAKA,MAAQA,EAAKA,KAAKkG,QACjC6G,EAAQS,YAAY,OAAQ,eAAgB,yBAE5CT,EAAQS,YAAY,OAAQ,eAAgB,uBAEhD,IACCE,OAAM,SAAC3G,GACNgG,EAAQS,YAAY,OAAQ,eAAgB,sBAAuBzG,EACpE,KAX2E,CAAA,EAAA,UAC9EyF,EAAAjG,wBAcF,MACK,CAAA,EAAAxB,EAAAA,EAAA,CAAA,EAAAwH,GACH,CAAAzM,KAAM,WACNC,OAAQ0K,EAA8C,CACpDC,SAAU3K,EAAOkH,WACjBkD,oBAAqBpK,EAAOoK,sBAAuB,cAMvD,kBAFArC,QAAQC,KAAK6G,GACTlF,SACIkF,EAAG9O,MACT,IAAK,oBACH4J,EAAY,oBACZ,MACF,IAAK,aACHA,EAAY,aACZ,MACF,IAAK,iBACHA,EAAY,iBACZ,MACF,IAAK,aACHA,EAAY,aACZ,MACF,IAAK,sBACHA,EAAY,sBACZ,MACF,IAAK,oBACHA,EAAY,oBACZ,MACF,QACEA,EAAY,eAkBhB,OAfAqD,EAAQO,aAAa,kBAAmB,yBAA0B,CAChE5M,OAAMA,EACN4D,IAAGA,EACHoF,UAASA,EACT3C,MAAO6H,EAAG5J,WACV0B,QAASkI,EAAGlI,QACZO,WAAY2H,EAAG3H,aAGjB4H,YAAW,WACLD,EAAG3H,aACL7G,EAAO+B,SAASC,KAAOwM,EAAG3H,WAE7B,GAAE,GAEH,CAAA,EAAOmF,EAAgB,CACrB1C,UAASA,EACT3C,MAAO6H,EAAG5J,WACV0B,QAASkI,EAAGlI,QACZO,WAAY2H,EAAG3H,qCAGpB,IAEY6H,EAAoB7C,EAM/B,6BAA6B,SAAO8C,EAAGpP,GAAE,IAAAuM,aAAUC,EAAQxM,EAAAwM,SAAEC,EAAezM,EAAAyM,iGAC5E,IAIE,GAHAW,EAAQO,aAAa,kBAAmB,YAAa,oCAC/C/N,EAAmB2M,MAEiB,QAArClJ,EAA6B,kBAA7Bd,EAAA3C,aAAK,EAALA,EAAO8M,+BAAU5M,oBAAY,IAAAwD,OAAA,EAAAA,EAAEjD,YAAM,IAAAgD,OAAA,EAAAA,EAAAsC,QACxC,MAAA,CAAA,EAAO8G,EAAgB,CACrB1C,UAAW,qBAIf,GAAiB,QADInK,EAAM8M,SAAS5M,aAAaO,KAAIqM,SAEnD,MAAO,CAAA,EAAA,CACLvM,KAAM,cACNC,OAAQsK,MAGZ8B,EAAS6C,IACV,CAAC,MAAO5B,GAEP,OADAtF,QAAQC,KAAKqF,GACb,CAAA,EAAOhB,EAAgB,CACrB1C,UAAW,oBAEd,gBACF,IAIKuF,EAA+B,CACnCC,GAAI,OAIAzC,EAAsB,SAACtM,EAAiBgP,GAC5C,IAAKhP,IAAYgP,EAAe,MAAO,GAGvC,IAAMC,EAAoBjP,EAAQkP,cAC5BC,EAAcL,EAAaG,GAGjC,OAAKE,EAKE,IAAApO,OAAIoO,IAJTxH,QAAQf,MAAM,6BAA8B5G,GACrC,GAIX,EAGMoP,EAAeC,EAAY,CAC/BC,KAAM,UACN3E,aAAYA,EACZ4E,SAAU,CAAE,EACZC,cAAe,SAACC,GACdA,EACGC,QAAQ7D,EAAmB8D,SAAS,SAACvQ,qBAEpCA,EAAME,aAAe,CACnBK,cACEoC,EAAkB,QAAlBvC,SAAAS,aAAM,IAANA,YAAM,EAANA,OAAQ+B,gBAAU,IAAAxC,OAAA,EAAAA,EAAAkB,6BAAQ8F,SAAS,wBACV,QAAxB3D,UAAAC,EAAM,OAAN7C,aAAA,IAAAA,YAAA,EAAAA,OAAQ+B,+BAAUtB,cAAM,IAAAmC,OAAA,EAAAA,EAAE2D,SAAS,oBAC+B,oBAAjC,QAAhCrD,EAAqB,QAArBC,EAAA,OAAAnD,iBAAAA,cAAAA,OAAQ8C,qBAAa,IAAAK,OAAA,EAAAA,EAAEJ,eAAS,IAAAG,OAAA,EAAAA,EAAAuJ,0CAAqBC,SACnD,WACA,cACN/M,OAAQoN,IACRnN,KAAMT,EAAME,aAAaO,KAE7B,IACC6P,QAAQ7D,EAAmB+D,WAAW,SAACxQ,EAAOqC,GAC7CrC,EAAME,aAAemC,EAAOoO,OAC9B,IACCH,QAAQ7D,EAAmBiE,UAAU,SAAC1Q,EAAOqC,qBAE5CrC,EAAME,aAAe,CACnBK,cACEoC,EAAkB,QAAlBvC,SAAAS,aAAM,IAANA,YAAM,EAANA,OAAQ+B,gBAAU,IAAAxC,OAAA,EAAAA,EAAAkB,6BAAQ8F,SAAS,wBACV,QAAxB3D,UAAAC,EAAM,OAAN7C,aAAA,IAAAA,YAAA,EAAAA,OAAQ+B,+BAAUtB,cAAM,IAAAmC,OAAA,EAAAA,EAAE2D,SAAS,oBAC+B,oBAAjC,QAAhCrD,EAAqB,QAArBC,EAAA,OAAAnD,iBAAAA,cAAAA,OAAQ8C,qBAAa,IAAAK,OAAA,EAAAA,EAAEJ,eAAS,IAAAG,OAAA,EAAAA,EAAAuJ,0CAAqBC,SACnD,WACA,cACN/M,OAAQ6K,EAAYhJ,EAAOoO,SAC3BhQ,KAAMT,EAAME,aAAaO,KAE7B,IACC6P,QAAQlB,EAAgBmB,SAAS,SAACvQ,GACjCA,EAAME,aAAe,CAAEK,KAAM,WAAYC,OAAQoN,IAAenN,KAAMT,EAAME,aAAaO,KAC3F,IACC6P,QAAQlB,EAAgBoB,WAAW,SAACxQ,EAAOqC,GAC1CrC,EAAME,aAAemC,EAAOoO,OAC9B,IACCH,QAAQlB,EAAgBsB,UAAU,SAAC1Q,EAAOqC,GACzCrC,EAAME,aAAe,CAAEK,KAAM,WAAYC,OAAQ6K,EAAYhJ,EAAOoO,SAAUhQ,KAAMT,EAAME,aAAaO,KACzG,IACC6P,QAAQf,EAAkBiB,WAAW,SAACxQ,EAAOqC,GAC5CrC,EAAME,aAAemC,EAAOoO,OAC9B,GACH,IAGqBE,EAA4CX,EAA9BY,QAA8BZ,EAAYa"}
|