ouisys-engine 5.0.69 → 5.0.71

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.
@@ -1,2 +1,2 @@
1
- import{__awaiter as t,__generator as r,__assign as e}from"tslib";import{createAsyncThunk as o,createSlice as n}from"@reduxjs/toolkit";import{S as a,L as i,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(o){var n=o.window,a=o.country,i=o.slug,u=o.offer,c=o.rockmanId,s=o.keyword,d=o.operator,f=o.search;return t(void 0,void 0,void 0,(function(){var t,o,v;return r(this,(function(r){return f=l(f),t=new URLSearchParams(e(e(e({action:"oc2sms",country:a,slug:i,offerId:u.toString(),page:encodeURIComponent(n.location.href),device:"smart",rockman_id:c},s&&{keyword:s}),d&&{operator:d}),f&&{search:f})).toString(),o=n.DEV_BASE_URL||"",v="".concat(o,"/tallyman/v1/?").concat(t),[2,fetch(v).then((function(t){return t.json()}))]}))}))};function f(o,n,a,i,u){return t(this,void 0,void 0,(function(){var t,u,c,s,l,f,v,p,y;return r(this,(function(r){switch(r.label){case 0:return n&&"keywordAndShortCode"===n.tag?(t=n.keyword,u=n.shortcode,[2,e({type:"SingleSubmissionResult"},{keyword:t,shortcode:u})]):(c=o.pac_analytics.visitor.offer,s=e({offer:o.pac_analytics.visitor.offer},n),l=s.country,f=s.slug,v=o.pac_analytics.visitor.rockmanId,p=o.location.search.substr(1)||"",[4,d({window:o,country:l,slug:f,offer:c,rockmanId:v,keyword:i,operator:a,search:p})]);case 1:if((y=r.sent()).success)return[2,e({type:"SingleSubmissionResult"},{keyword:"".concat(i||y.displayKeyword).concat(y.uid?" ".concat(y.uid):""),shortcode:y.shortcode})];throw y.message}}))}))}function v(o,n,a,i,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(a.map((function(a){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,f(o,n,a,i)];case 1:return t=r.sent(),[2,(s=e(e({},t),{operator:a}),{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(o,n,a,i){return t(void 0,void 0,void 0,(function(){return r(this,(function(t){return n&&"keywordAndShortCode"===n.tag?[2,e({type:"SingleSubmissionResult"},{keyword:n.keyword,shortcode:n.shortcode})]:n&&"keyword"===n.tag?[2,y(o,n,a)]:[2,y(o,n,null)]}))}))};function y(o,n,a,i){return t(this,void 0,void 0,(function(){var t,i;return r(this,(function(r){return!0===(t=e({offer:o.pac_analytics.visitor.offer},n)).automaticallySubmitAllOperators&&t.operators&&t.operators.length>0?[2,v(o,n,t.operators,a)]:(i=n.operators&&n.operators.length>0?n.operators[0]:null,[2,f(o,n,i,a)])}))}))}var m={currentState:{type:"LOAD_OC2SMS",result:c()}},h=o("click2Flow/loadOc2smsAction",(function(o,n){var i=o.window,u=n.getState,c=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,o,n,l,d,f,v,y,m;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(v=null===(f=null===(d=null==t?void 0:t.strategy)||void 0===d?void 0:d.currentState)||void 0===f?void 0:f.data)||void 0===v?void 0:v.config))return[2,c("UnexpectedState")];o=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"===o.tag?[2,{type:"LOAD_OC2SMS",result:a(e({type:"SingleSubmissionResult"},o))}]:(s.customEvent("Flow","advance-auto","load-click2sms"),[4,p(i,o)]);case 2:return n=r.sent(),s.customEvent("Flow","advance-auto","loaded-click2sms",n),[2,{type:"LOAD_OC2SMS",result:a(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:i()}})).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,e=t((function(t){return t.click2smsFlow.currentState}));return null===(r=null==e?void 0:e.result)||void 0===r?void 0:r.data};function b(t){var r=t.load;return function(t){return t.type,r(t.result)}}export{b as click2smsFlowMatch,w as click2smsFlowReducer,h as loadOc2smsAction,g as useClick2smsFlowState,k as useKeyWordShortCode};
1
+ import{__awaiter as t,__generator as r,__assign as e}from"tslib";import{createAsyncThunk as o,createSlice as n}from"@reduxjs/toolkit";import{S as a,L as i,F as c,N as u}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(o){var n=o.window,a=o.country,i=o.slug,c=o.offer,u=o.rockmanId,s=o.keyword,d=o.operator,f=o.search;return t(void 0,void 0,void 0,(function(){var t,o,v;return r(this,(function(r){return f=l(f),t=new URLSearchParams(e(e({action:"oc2sms",country:a,slug:i,offerId:c.toString(),page:encodeURIComponent(n.location.href),device:"smart",rockman_id:u},s&&{keyword:s}),d&&{operator:d})).toString(),o=n.DEV_BASE_URL||"",v="".concat(o,"/tallyman/v1/?").concat(t).concat(f?"&".concat(f):""),[2,fetch(v).then((function(t){return t.json()}))]}))}))};function f(o,n,a,i,c){return t(this,void 0,void 0,(function(){var t,c,u,s,l,f,v,p,y;return r(this,(function(r){switch(r.label){case 0:return n&&"keywordAndShortCode"===n.tag?(t=n.keyword,c=n.shortcode,[2,e({type:"SingleSubmissionResult"},{keyword:t,shortcode:c})]):(u=o.pac_analytics.visitor.offer,s=e({offer:o.pac_analytics.visitor.offer},n),l=s.country,f=s.slug,v=o.pac_analytics.visitor.rockmanId,p=o.location.search.substr(1)||"",[4,d({window:o,country:l,slug:f,offer:u,rockmanId:v,keyword:i,operator:a,search:p})]);case 1:if((y=r.sent()).success)return[2,e({type:"SingleSubmissionResult"},{keyword:"".concat(i||y.displayKeyword).concat(y.uid?" ".concat(y.uid):""),shortcode:y.shortcode})];throw y.message}}))}))}function v(o,n,a,i,c){return t(this,void 0,void 0,(function(){var c,u,s,l=this;return r(this,(function(d){switch(d.label){case 0:return c=Promise.all(a.map((function(a){return t(l,void 0,void 0,(function(){var t,c;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,f(o,n,a,i)];case 1:return t=r.sent(),[2,(s=e(e({},t),{operator:a}),{type:"right",value:s})];case 2:return c=r.sent(),[2,(u=c,{type:"left",value:u})];case 3:return[2]}var u,s}))}))}))),[4,Promise.resolve(c)];case 1:if((u=d.sent()).every((function(t){return"left"===t.type})))throw u[0].value;return s=[],u.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(o,n,a,i){return t(void 0,void 0,void 0,(function(){return r(this,(function(t){return n&&"keywordAndShortCode"===n.tag?[2,e({type:"SingleSubmissionResult"},{keyword:n.keyword,shortcode:n.shortcode})]:n&&"keyword"===n.tag?[2,y(o,n,a)]:[2,y(o,n,null)]}))}))};function y(o,n,a,i){return t(this,void 0,void 0,(function(){var t,i;return r(this,(function(r){return!0===(t=e({offer:o.pac_analytics.visitor.offer},n)).automaticallySubmitAllOperators&&t.operators&&t.operators.length>0?[2,v(o,n,t.operators,a)]:(i=n.operators&&n.operators.length>0?n.operators[0]:null,[2,f(o,n,i,a)])}))}))}var m={currentState:{type:"LOAD_OC2SMS",result:u()}},h=o("click2Flow/loadOc2smsAction",(function(o,n){var i=o.window,c=n.getState,u=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,o,n,l,d,f,v,y,m;return r(this,(function(r){switch(r.label){case 0:if(t=c(),!(null===(v=null===(f=null===(d=null==t?void 0:t.strategy)||void 0===d?void 0:d.currentState)||void 0===f?void 0:f.data)||void 0===v?void 0:v.config))return[2,u("UnexpectedState")];o=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"===o.tag?[2,{type:"LOAD_OC2SMS",result:a(e({type:"SingleSubmissionResult"},o))}]:(s.customEvent("Flow","advance-auto","load-click2sms"),[4,p(i,o)]);case 2:return n=r.sent(),s.customEvent("Flow","advance-auto","loaded-click2sms",n),[2,{type:"LOAD_OC2SMS",result:a(n)}];case 3:return l=r.sent(),console.warn(l),s.customEvent("Flow","advance-auto","load-click2sms-failure",l.toString()),[2,u(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:i()}})).addCase(h.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(h.rejected,(function(t,r){t.currentState={type:"LOAD_OC2SMS",result:c(r.payload)}}))}}),w=S.reducer;S.actions;var g=function(t){return t((function(t){return t.click2smsFlow.currentState}))},k=function(t){var r,e=t((function(t){return t.click2smsFlow.currentState}));return null===(r=null==e?void 0:e.result)||void 0===r?void 0:r.data};function b(t){var r=t.load;return function(t){return t.type,r(t.result)}}export{b 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 ...(keyword && { keyword }),\n ...(operator && { operator }),\n ...(search && { search })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\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","host","DEV_BASE_URL","url","concat","fetch","then","x","json","loadOnce","maybeConfig","_shortcode","tag","keywordFromConfig","shortcodeFromConfig","type","shortcode","pac_analytics","visitor","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","_b","getState","rejectWithValue","state","_e","_c","strategy","_d","_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 ...(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","host","DEV_BASE_URL","url","concat","fetch","then","x","json","loadOnce","maybeConfig","_shortcode","tag","keywordFromConfig","shortcodeFromConfig","type","shortcode","pac_analytics","visitor","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","_b","getState","rejectWithValue","state","_e","_c","strategy","_d","_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/moFlow.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__awaiter as t,__generator as r,__read as e,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as a}from"@reduxjs/toolkit";import{S as s,N as i,L as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{c as f}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";var v=function(t){return t((function(t){return t.moFlow.currentState}))};function p(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var S=function(n){var o=n.window,a=n.slug,s=n.country,i=n.msisdn,c=n.device,u=n.offer,d=n.rockmanId,l=n.extraParamsQs,m=n.search;return t(void 0,void 0,void 0,(function(){var t,n,v,p,S,y,w;return r(this,(function(r){switch(r.label){case 0:return o.api_ajax_url?[4,fetch(o.api_ajax_url).then((function(t){return t.json()}))]:[3,2];case 1:return n=r.sent(),[3,3];case 2:n=null,r.label=3;case 3:return t=n,m=f(m),v={action:"trigger-message",slug:a,country:s,msisdn:i,device:c,offerId:u,rockman_id:d,page:encodeURIComponent(null===(w=null==o?void 0:o.location)||void 0===w?void 0:w.href),sam_g_token:o.reCaptchaToken||"",language_code:o.languageCode||"",partner_form_action:(null==t?void 0:t.form_action)?encodeURIComponent(null==t?void 0:t.form_action):"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||""},p=Object.entries(v).filter((function(t){var r=e(t,2);return r[0],r[1]})).map((function(t){var r=e(t,2),n=r[0],o=r[1];return"".concat(n,"=").concat(o)})).join("&"),S=o.DEV_BASE_URL||"",y="".concat(S,"/tallyman/v1/?").concat(p,"&").concat(l),[2,fetch(y).then((function(t){return t.json()}))]}}))}))};function y(e,o,a,s){var i,c;return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=n(n({},o||{}),{offer:null===(c=null===(i=e.pac_analytics)||void 0===i?void 0:i.visitor)||void 0===c?void 0:c.offer}),[2,w(e,t,a,s)]}))}))}function w(e,o,a,s){var i;return t(this,void 0,void 0,(function(){var t,c,u,d,l,m,f,v,p,y,w;return r(this,(function(r){switch(r.label){case 0:return t=o.slug,c=o.country,u=o.device,d=o.offer,l=e.location.search.substr(1)||"",m=s?"&".concat(Object.keys(s).map((function(t){return"".concat(t,"=").concat(s[t])})).join("&")):"",f=(null===(i=a.match(/\d+/gi))||void 0===i?void 0:i.join(""))||"",v=e.pac_analytics.visitor.rockmanId,[4,S({window:e,slug:t,country:c,msisdn:f,device:u,offer:d,rockmanId:v,search:l,extraParamsQs:m})];case 1:if(!1===(p=r.sent()).success)throw y="ALREADY SUBSCRIBED"===p.message?"AlreadySubscribed":"InvalidMSISDN",(w=new Error("".concat(y,":\n").concat(p.message))).type=y,w.productUrl=p.product_url?p.product_url:"",console.error(w),w;return[2,n(n({},p),{keyword:p.displayKeyword})]}}))}))}var _={currentState:{type:"MSISDNEntry",result:s({keyword:"TEST OK",shortcode:"777"})}},h={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},b={currentState:{type:"MSISDNEntry",result:i()}},I=function(t){var r=d(t);if(!r["mock-flow"])return b;switch(r["current-state"]){case"msisdn-entry-failure-state":return h;case"msisdn-entry-success-state":return _;default:return console.error("Mock Flow not supported"),b}}(window),g=o("moFlow/submitMSISDNAction",(function(e,o){var a=e.window,i=e.msisdn,c=e.extraParams,u=o.getState,d=o.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,o,f,v,p,S,w;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(w=null===(S=null===(p=null==t?void 0:t.strategy)||void 0===p?void 0:p.currentState)||void 0===S?void 0:S.data)||void 0===w?void 0:w.config))return[2,d({errorType:"UnexpectedState"})];e=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:i}),[4,y(a,e,i,c)];case 2:return o=r.sent(),m.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:i}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,l(i).then((function(t){t&&t.data&&t.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){m.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:s(n({},o))}];case 5:switch(f=r.sent(),console.warn(f),v=void 0,f.type){case"AlreadySubscribed":v="AlreadySubscribed";break;case"InvalidMSISDN":v="InvalidMSISDN";break;default:v="UnknownError"}return m.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:i,errorType:v||"UnknownError"}),[2,d({errorType:v,productUrl:f.productUrl})];case 6:return[2]}}))}))})),j=a({name:"moFlow",initialState:I,reducers:{backToStartAction:function(t){m.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),t.currentState={type:"MSISDNEntry",result:i()}}},extraReducers:function(t){t.addCase(g.pending,(function(t){t.currentState={type:"MSISDNEntry",result:c()}})).addCase(g.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(g.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:u(r.payload)}}))}}),k=j.reducer,E=j.actions.backToStartAction;export{E as backToStartAction,p as moFlowMatch,k as moFlowReducer,g as submitMSISDNAction,v as useMoFlowState};
1
+ import{__awaiter as t,__generator as r,__read as e,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as a}from"@reduxjs/toolkit";import{S as s,N as c,L as i,F as u}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{c as f}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";var v=function(t){return t((function(t){return t.moFlow.currentState}))};function p(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var S=function(n){var o=n.window,a=n.slug,s=n.country,c=n.msisdn,i=n.device,u=n.offer,d=n.rockmanId,l=n.extraParamsQs,m=n.search;return t(void 0,void 0,void 0,(function(){var t,n,v,p,S,y,w;return r(this,(function(r){switch(r.label){case 0:return o.api_ajax_url?[4,fetch(o.api_ajax_url).then((function(t){return t.json()}))]:[3,2];case 1:return n=r.sent(),[3,3];case 2:n=null,r.label=3;case 3:return t=n,m=f(m),v={action:"trigger-message",slug:a,country:s,msisdn:c,device:i,offerId:u,rockman_id:d,page:encodeURIComponent(null===(w=null==o?void 0:o.location)||void 0===w?void 0:w.href),sam_g_token:o.reCaptchaToken||"",language_code:o.languageCode||"",partner_form_action:(null==t?void 0:t.form_action)?encodeURIComponent(null==t?void 0:t.form_action):"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||""},p=Object.entries(v).filter((function(t){var r=e(t,2);return r[0],r[1]})).map((function(t){var r=e(t,2),n=r[0],o=r[1];return"".concat(n,"=").concat(o)})).join("&"),S=o.DEV_BASE_URL||"",y="".concat(S,"/tallyman/v1/?").concat(p).concat(m?"&".concat(m):"","&").concat(l),[2,fetch(y).then((function(t){return t.json()}))]}}))}))};function y(e,o,a,s){var c,i;return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=n(n({},o||{}),{offer:null===(i=null===(c=e.pac_analytics)||void 0===c?void 0:c.visitor)||void 0===i?void 0:i.offer}),[2,w(e,t,a,s)]}))}))}function w(e,o,a,s){var c;return t(this,void 0,void 0,(function(){var t,i,u,d,l,m,f,v,p,y,w;return r(this,(function(r){switch(r.label){case 0:return t=o.slug,i=o.country,u=o.device,d=o.offer,l=e.location.search.substr(1)||"",m=s?"&".concat(Object.keys(s).map((function(t){return"".concat(t,"=").concat(s[t])})).join("&")):"",f=(null===(c=a.match(/\d+/gi))||void 0===c?void 0:c.join(""))||"",v=e.pac_analytics.visitor.rockmanId,[4,S({window:e,slug:t,country:i,msisdn:f,device:u,offer:d,rockmanId:v,search:l,extraParamsQs:m})];case 1:if(!1===(p=r.sent()).success)throw y="ALREADY SUBSCRIBED"===p.message?"AlreadySubscribed":"InvalidMSISDN",(w=new Error("".concat(y,":\n").concat(p.message))).type=y,w.productUrl=p.product_url?p.product_url:"",console.error(w),w;return[2,n(n({},p),{keyword:p.displayKeyword})]}}))}))}var _={currentState:{type:"MSISDNEntry",result:s({keyword:"TEST OK",shortcode:"777"})}},h={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},b={currentState:{type:"MSISDNEntry",result:c()}},I=function(t){var r=d(t);if(!r["mock-flow"])return b;switch(r["current-state"]){case"msisdn-entry-failure-state":return h;case"msisdn-entry-success-state":return _;default:return console.error("Mock Flow not supported"),b}}(window),g=o("moFlow/submitMSISDNAction",(function(e,o){var a=e.window,c=e.msisdn,i=e.extraParams,u=o.getState,d=o.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,o,f,v,p,S,w;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(w=null===(S=null===(p=null==t?void 0:t.strategy)||void 0===p?void 0:p.currentState)||void 0===S?void 0:S.data)||void 0===w?void 0:w.config))return[2,d({errorType:"UnexpectedState"})];e=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:c}),[4,y(a,e,c,i)];case 2:return o=r.sent(),m.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:c}),i&&i.storeMsisdn&&"true"===i.storeMsisdn?[4,l(c).then((function(t){t&&t.data&&t.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){m.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:s(n({},o))}];case 5:switch(f=r.sent(),console.warn(f),v=void 0,f.type){case"AlreadySubscribed":v="AlreadySubscribed";break;case"InvalidMSISDN":v="InvalidMSISDN";break;default:v="UnknownError"}return m.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:c,errorType:v||"UnknownError"}),[2,d({errorType:v,productUrl:f.productUrl})];case 6:return[2]}}))}))})),j=a({name:"moFlow",initialState:I,reducers:{backToStartAction:function(t){m.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),t.currentState={type:"MSISDNEntry",result:c()}}},extraReducers:function(t){t.addCase(g.pending,(function(t){t.currentState={type:"MSISDNEntry",result:i()}})).addCase(g.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(g.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:u(r.payload)}}))}}),k=j.reducer,E=j.actions.backToStartAction;export{E as backToStartAction,p as moFlowMatch,k as moFlowReducer,g as submitMSISDNAction,v as useMoFlowState};
2
2
  //# sourceMappingURL=moFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs,\n search\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}&${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string; productUrl: string };\n error.type = type;\n error.productUrl = result.product_url ? result.product_url : '';\n\n console.error(error);\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = checkResult.product_url;\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType: errorType || 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\nexport const { backToStartAction } = moFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","search","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","cleanSearchParams","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","language_code","languageCode","partner_form_action","form_action","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","substr","keys","k","match","sent","success","message","error","Error","productUrl","product_url","console","__assign","keyword","displayKeyword","mockedMSISDNEntrySuccess","RDS.Success","shortcode","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_e","strategy","data","tracker","advancedInFlow","keywordAndShortcode","_f","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","moFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"6bAGO,IAAMA,EAAiB,SAACC,GAE7B,OADqBA,GAAY,SAACC,GAAqB,OAAAA,EAAMC,OAAOC,YAAb,GAEzD,ECHA,SAASC,EAAeC,GACtB,IAAAC,EAAWD,EAAAC,YAIX,OAAO,SAACL,GAMF,OALIA,EAAMM,KAKHD,EAAYL,EAAMO,OAE/B,CACF,CCAA,IAAMC,EAAiB,SAAOJ,OAC5BK,EAAML,EAAAK,OACNC,EAAIN,EAAAM,KACJC,EAAOP,EAAAO,QACPC,EAAMR,EAAAQ,OACNC,WACAC,EAAKV,EAAAU,MACLC,EAASX,EAAAW,UACTC,EAAaZ,EAAAY,cACbC,EAAMb,EAAAa,4HAeFR,EAAOS,aAAqB,CAAA,EAAAC,MAAMV,EAAOS,cAAcE,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,KAAhD,CAAA,EAAA,iBAAGC,EAAAC,sBAAyDD,EAAA,sBAgCnF,OAlCME,EAEiFF,EAGvFN,EAASS,EAAkBT,GACrBU,EAAS,CACbC,OAAQ,kBACRlB,KAAIA,EACJC,QAAOA,EACPC,OAAMA,EACNC,OAAMA,EACNgB,QAASf,EACTgB,WAAYf,EACZgB,KAAMC,mBAAmC,QAAhBC,EAAAxB,aAAM,EAANA,EAAQyB,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,MAC3CC,YAAa3B,EAAO4B,gBAAkB,GACtCC,cAAe7B,EAAO8B,cAAgB,GACtCC,qBAAqBf,eAAAA,EAAqBgB,aAAcT,mBAAmBP,aAAA,EAAAA,EAAqBgB,aAAe,GAE/GC,aAAcjC,EAAOiC,cAAgB,GAGrCC,qBAAsBlC,EAAOkC,sBAAwB,GACrDC,qBAAsBnC,EAAOmC,sBAAwB,IAGjDC,EAAcC,OAAOC,QAAQpB,GAChCqB,QAAO,SAAC5C,GAAA,IAAAmB,EAAA0B,OAAe,OAAb1B,EAAA,GAAOA,EAAA,EAAM,IACvB2B,KAAI,SAAC9C,GAAA,IAAAmB,EAAA0B,OAACE,EAAG5B,EAAA,GAAE6B,EAAK7B,EAAA,GAAM,MAAA,GAAG8B,OAAAF,EAAO,KAAAE,OAAAD,EAAV,IACtBE,KAAK,KAEFC,EAAQ9C,EAAkB+C,cAAgB,GAC1CC,EAAM,UAAGF,EAAI,kBAAAF,OAAiBR,EAAe,KAAAQ,OAAArC,GAEnD,CAAA,EAAOG,MAAMsC,GAAKrC,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,aChElB,SAAgBoC,EAC5BjD,EACAkD,EACAC,EACAC,oFAGA,OADMC,SAAoBH,GAAe,CAAE,IAAG7C,MAAsC,UAAX,QAApBV,EAAAK,EAAOsD,qBAAa,IAAA3D,OAAA,EAAAA,EAAE4D,eAAS,IAAAzC,OAAA,EAAAA,EAAAT,QAC7E,CAAA,EAAAmD,EAAuBxD,EAAQqD,EAAQF,EAAqBC,SACpE,CAiBK,SAAgBI,EACpBxD,EACAqD,EACAF,EACAC,6HAYwC,OAVhCnD,EAAiCoD,EAAMpD,KAAjCC,EAA2BmD,EAApBnD,QAAEE,EAAkBiD,EAAZjD,OAAEC,EAAUgD,QACnC7C,EAASR,EAAOyB,SAASjB,OAAOiD,OAAO,IAAM,GAC7ClD,EAAiB6C,EAEnB,IAAIR,OAAAP,OAAOqB,KAAKN,GACbX,KAAI,SAACkB,GAAM,MAAA,GAAGf,OAAAe,EAAK,KAAAf,OAAAQ,EAAYO,GAAI,IACnCd,KAAK,MAHR,GAIE1C,GAA2C,QAAlCR,EAAAwD,EAAoBS,MAAM,gBAAQ,IAAAjE,OAAA,EAAAA,EAAEkD,KAAK,MAAO,GACvDvC,EAAcN,EAAOsD,cAAcC,kBAEH,CAAA,EAAMxD,EAAe,CAC3DC,OAAMA,EACNC,KAAIA,EACJC,QAAOA,EACPC,OAAMA,EACNC,OAAMA,EACNC,MAAKA,EACLC,UAASA,EACTE,OAAMA,EACND,cAAaA,YAGf,IAAuB,KAZjBT,EAAkCgB,EAUtC+C,QAESC,QAOT,MANMjE,EAA0B,uBAAnBC,EAAOiE,QAAmC,oBAAsB,iBACvEC,EAAQ,IAAIC,MAAM,GAAGrB,OAAA/C,EAAU,OAAA+C,OAAA9C,EAAOiE,WACtClE,KAAOA,EACbmE,EAAME,WAAapE,EAAOqE,YAAcrE,EAAOqE,YAAc,GAE7DC,QAAQJ,MAAMA,GACRA,EAEN,MAAY,CAAA,EAAAK,EAAAA,EAAA,CAAA,EAAAvE,IAAQwE,QAASxE,EAAOyE,wBAEvC,CC1DM,IAAMC,EAAwC,CACnD/E,aAAc,CACZI,KAAM,cACNC,OAAQ2E,EAAoD,CAC1DH,QAAS,UACTI,UAAW,UAKJC,EAAwC,CACnDlF,aAAc,CACZI,KAAM,cACNC,OAAQ8E,EAAoD,CAC1DC,UAAW,gBACXb,MAAO,4BAWPc,EAAmC,CACvCrF,aAAc,CACZI,KAAM,cACNC,OAAQiF,MAqBNC,EAjBkB,SAAChF,GACvB,IAAMQ,EAASyE,EAAejF,GAC9B,IAAIQ,EAAO,aAWT,OAAOsE,EAVP,OAAQtE,EAAO,kBACb,IAAK,6BACH,OAAOmE,EACT,IAAK,6BACH,OAAOH,EACT,QAEE,OADAJ,QAAQJ,MAAM,2BACPc,EAKf,CAEqBI,CAAgBlF,QAcxBmF,EAAqBC,EAMhC,6BAA6B,SAAOzF,EAAiCmB,GAA/B,IAAAd,WAAQG,EAAMR,EAAAQ,OAAEiD,EAAWzD,EAAAyD,YAAMiC,EAAQvE,EAAAuE,SAAEC,EAAexE,EAAAwE,gIAEhG,GADM/F,EAAmB8F,MACiB,QAArCE,EAA6B,kBAA7B/D,EAAAjC,aAAK,EAALA,EAAOiG,+BAAU/F,oBAAY,IAAAsB,OAAA,EAAAA,EAAE0E,YAAM,IAAAF,OAAA,EAAAA,EAAAlC,QACxC,MAAA,CAAA,EAAOiC,EAAgB,CACrBT,UAAW,qBAGPxB,EAAW9D,EAAMiG,SAAS/F,aAAagG,KAAIpC,wBAKrB,6BAD5BqC,EAAQC,eAAe,iBAAkB,mBAAoB,CAAExF,OAAMA,IACnC,CAAA,EAAA8C,EAAajD,EAAQqD,EAAQlD,EAAQiD,WAMnE,OANEwC,EAAsBC,EAAuDhC,OACnF6B,EAAQC,eAAe,iBAAkB,4BAA6B,CAAExF,OAAMA,IAK1EiD,GAAeA,EAAY0C,aAA2C,SAA5B1C,EAAY0C,YAClD,CAAA,EAAAA,EAAY3F,GACfQ,MAAK,SAAC8E,GACDA,GAAQA,EAAKA,MAAQA,EAAKA,KAAK3B,QACjC4B,EAAQK,YAAY,OAAQ,eAAgB,yBAE5CL,EAAQK,YAAY,OAAQ,eAAgB,uBAEhD,IACCC,OAAM,SAAChC,GACN0B,EAAQK,YAAY,OAAQ,eAAgB,sBAAuB/B,EACpE,KAX2E,CAAA,EAAA,UAC9E6B,EAAAhC,wBAcF,MAAO,CAAA,EAAA,CACLhE,KAAM,cACNC,OAAQ2E,EAAWJ,EAAA,CAAA,EAA8CuB,aAKnE,kBAFAxB,QAAQ6B,KAAKC,GACTrB,SACIqB,EAAGrG,MACT,IAAK,oBACHgF,EAAY,oBACZ,MACF,IAAK,gBACHA,EAAY,gBACZ,MACF,QACEA,EAAY,eAQhB,OALAa,EAAQS,aAAa,iBAAkB,4BAA6B,CAClEhG,OAAMA,EACN0E,UAAWA,GAAa,iBAG1B,CAAA,EAAOS,EAAgB,CACrBT,UAASA,EACTX,WAAYgC,EAAGhC,qCAGpB,IAEKkC,EAAcC,EAAY,CAC9BC,KAAM,SACNtB,aAAYA,EACZuB,SAAU,CACRC,2BAAkBjH,GAChBmG,EAAQS,aAAa,iBAAkB,WAAY,oCAGnD5G,EAAME,aAAe,CAAEI,KAAM,cAAeC,OAAQiF,IACrD,GAEH0B,cAAe,SAACC,GACdA,EACGC,QAAQxB,EAAmByB,SAAS,SAACrH,GACpCA,EAAME,aAAe,CAAEI,KAAM,cAAeC,OAAQ+G,IACtD,IACCF,QAAQxB,EAAmB2B,WAAW,SAACvH,EAAO4B,GAC7C5B,EAAME,aAAe0B,EAAO4F,OAC9B,IACCJ,QAAQxB,EAAmB6B,UAAU,SAACzH,EAAO4B,GAC5C5B,EAAME,aAAe,CACnBI,KAAM,cACNC,OAAQ8E,EAAYzD,EAAO4F,SAE/B,GACH,IAIqBE,EAA0Cb,EAA7Bc,QACtBV,EADmDJ,EAAWe"}
1
+ {"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs,\n search\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${search ? `&${search}` : ''}&${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string; productUrl: string };\n error.type = type;\n error.productUrl = result.product_url ? result.product_url : '';\n\n console.error(error);\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = checkResult.product_url;\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType: errorType || 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\nexport const { backToStartAction } = moFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","search","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","cleanSearchParams","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","language_code","languageCode","partner_form_action","form_action","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","substr","keys","k","match","sent","success","message","error","Error","productUrl","product_url","console","__assign","keyword","displayKeyword","mockedMSISDNEntrySuccess","RDS.Success","shortcode","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_e","strategy","data","tracker","advancedInFlow","keywordAndShortcode","_f","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","moFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{__awaiter as r,__generator as e,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as o,N as i,L as s,F as c}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as u}from"./storeMsisdn-Cjq8_qYH.js";import{t as l}from"./tracker-DaaILhEr.js";import{t as m}from"./tryGetIPRangeName-QW-9NgzE.js";import{c as f}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";var v=function(r){return r((function(r){return r.moRedirFlow.currentState}))};function p(r){var e=r.msisdnEntry;return function(r){return r.type,e(r.result)}}var y=function(n){var a=n.window,o=n.slug,i=n.country,s=n.msisdn,c=n.device,d=n.offer,u=n.rockmanId,l=n.ip_range_name,m=n.search,v=n.extraParamsQs,p=n.email,y=n.password;return r(void 0,void 0,void 0,(function(){var r,n,S,w,_,I,h,g;return e(this,(function(e){return m=f(m),r=new URLSearchParams(t(t(t(t(t(t(t({action:"redirect",slug:o,country:i,device:c,offerId:d.toString(),rockman_id:u,page:encodeURIComponent(a.location.href),antifraud_id:a.antifraud_id||"",antifraud_id_js_code:a.antifraud_id_js_code||"",antifraud_id_js_link:a.antifraud_id_js_link||"",network_type:l?"":"wifi"},m&&{search:m}),(null===(I=null===(_=null===(w=a.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===_?void 0:_.page)||void 0===I?void 0:I.includes("agency"))&&{evinaTi:u}),(null===(g=null===(h=a.pac_analytics)||void 0===h?void 0:h.visitor)||void 0===g?void 0:g.ip)&&{client_ip:a.pac_analytics.visitor.ip}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),p&&y?{email:p,password:y}:{msisdn:s}),v&&{extraParams:v})).toString(),n=a.DEV_BASE_URL||"",S="".concat(n,"/tallyman/v1/?").concat(r),o.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:u,redirect_url:S}]:[2,fetch(S).then((function(r){return r.json()}))]}))}))};function S(n,a,o,i){return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){return r=t({offer:n.pac_analytics.visitor.offer},a||{}),[2,w(n,r,o,i)]}))}))}function w(t,n,a,o){return r(this,void 0,void 0,(function(){var r,i,s,c,d,u,l,f,v,p,S,w,_;return e(this,(function(e){switch(e.label){case 0:return r=n.slug,i=n.country,s=n.device,c=n.offer,d=t.location.search.substr(1)||"",u=o?"&".concat(Object.keys(o).map((function(r){return"".concat(r,"=").concat(o[r])})).join("&")):"",l=a.match(/\d+/gi).join(""),f=t.pac_analytics.visitor,v=f.rockmanId,"ci"!==i?[3,2]:[4,m(f)];case 1:return p=e.sent(),[3,3];case 2:p=null,e.label=3;case 3:return[4,y({window:t,slug:r,country:i,msisdn:l,device:s,offer:c,rockmanId:v,ip_range_name:p,search:d,extraParamsQs:u})];case 4:if(!1===(S=e.sent()).success)throw w="ALREADY SUBSCRIBED"===S.message?"AlreadySubscribed":"InvalidMSISDN",(_=new Error("".concat(w,":\n").concat(S.message))).type=w,console.error(_),_;return[2,S.redirect_url]}}))}))}var _={currentState:{type:"MSISDNEntry",result:o({href:"/product"})}},I={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},h={currentState:{type:"MSISDNEntry",result:i()}},g=function(r){var e=d(r);if(!e["mock-flow"])return h;switch(e["current-state"]){case"msisdn-entry-failure-state":return I;case"msisdn-entry-success-state":return _;default:return console.error("Mock Flow not supported"),h}}(window),b=n("moRedirFlow/submitMSISDNAction",(function(t,n){var a=t.window,i=t.msisdn,s=t.extraParams,c=n.getState,d=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,m,f,v,p,y;return e(this,(function(e){switch(e.label){case 0:if(r=c(),!(null===(y=null===(p=null===(v=null==r?void 0:r.strategy)||void 0===v?void 0:v.currentState)||void 0===p?void 0:p.data)||void 0===y?void 0:y.config))return[2,d({errorType:"UnexpectedState"})];t=r.strategy.currentState.data.config,e.label=1;case 1:return e.trys.push([1,5,,6]),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submitted",{msisdn:i}),[4,S(a,t,i,s)];case 2:return n=e.sent(),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:i}),s&&s.storeMsisdn&&"true"===s.storeMsisdn?[4,u(i).then((function(r){r&&r.data&&r.data.success?l.customEvent("Flow","advance-auto","msisdn-stored-success"):l.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(r){l.customEvent("Flow","advance-auto","msisdn-stored-error",r)}))]:[3,4];case 3:e.sent(),e.label=4;case 4:return[2,{type:"MSISDNEntry",result:o({href:n})}];case 5:switch(m=e.sent(),console.warn(m),f=void 0,m.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidMSISDN":f="InvalidMSISDN";break;default:f="UnknownError"}return l.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:i,errorType:"UnknownError"}),[2,d({errorType:f,productUrl:m.productUrl})];case 6:return[2]}}))}))})),k=a({name:"moRedirFlow",initialState:g,reducers:{backToStartAction:function(r){l.recedeInFlow("tallyman.v1-mo-redir","mo-redir-state","requested to change phone number"),r.currentState={type:"MSISDNEntry",result:i()}}},extraReducers:function(r){r.addCase(b.pending,(function(r){r.currentState={type:"MSISDNEntry",result:s()}})).addCase(b.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(b.rejected,(function(r,e){r.currentState={type:"MSISDNEntry",result:c(e.payload)}}))}}),j=k.reducer,E=k.actions.backToStartAction;export{E as backToStartAction,p as moRedirFlowMatch,j as moRedirFlowReducer,b as submitMSISDNAction,v as useMoRedirFlowState};
1
+ import{__awaiter as r,__generator as e,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as o,N as i,L as s,F as c}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as u}from"./storeMsisdn-Cjq8_qYH.js";import{t as l}from"./tracker-DaaILhEr.js";import{t as m}from"./tryGetIPRangeName-QW-9NgzE.js";import{c as f}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";var v=function(r){return r((function(r){return r.moRedirFlow.currentState}))};function p(r){var e=r.msisdnEntry;return function(r){return r.type,e(r.result)}}var y=function(n){var a=n.window,o=n.slug,i=n.country,s=n.msisdn,c=n.device,d=n.offer,u=n.rockmanId,l=n.ip_range_name,m=n.search,v=n.extraParamsQs,p=n.email,y=n.password;return r(void 0,void 0,void 0,(function(){var r,n,S,w,_,I,h,g;return e(this,(function(e){return m=f(m),r=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:o,country:i,device:c,offerId:d.toString(),rockman_id:u,page:encodeURIComponent(a.location.href),antifraud_id:a.antifraud_id||"",antifraud_id_js_code:a.antifraud_id_js_code||"",antifraud_id_js_link:a.antifraud_id_js_link||"",network_type:l?"":"wifi"},(null===(I=null===(_=null===(w=a.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===_?void 0:_.page)||void 0===I?void 0:I.includes("agency"))&&{evinaTi:u}),(null===(g=null===(h=a.pac_analytics)||void 0===h?void 0:h.visitor)||void 0===g?void 0:g.ip)&&{client_ip:a.pac_analytics.visitor.ip}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),p&&y?{email:p,password:y}:{msisdn:s}),v&&{extraParams:v})).toString(),n=a.DEV_BASE_URL||"",S="".concat(n,"/tallyman/v1/?").concat(r).concat(m?"&".concat(m):""),o.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:u,redirect_url:S}]:[2,fetch(S).then((function(r){return r.json()}))]}))}))};function S(n,a,o,i){return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){return r=t({offer:n.pac_analytics.visitor.offer},a||{}),[2,w(n,r,o,i)]}))}))}function w(t,n,a,o){return r(this,void 0,void 0,(function(){var r,i,s,c,d,u,l,f,v,p,S,w,_;return e(this,(function(e){switch(e.label){case 0:return r=n.slug,i=n.country,s=n.device,c=n.offer,d=t.location.search.substr(1)||"",u=o?"&".concat(Object.keys(o).map((function(r){return"".concat(r,"=").concat(o[r])})).join("&")):"",l=a.match(/\d+/gi).join(""),f=t.pac_analytics.visitor,v=f.rockmanId,"ci"!==i?[3,2]:[4,m(f)];case 1:return p=e.sent(),[3,3];case 2:p=null,e.label=3;case 3:return[4,y({window:t,slug:r,country:i,msisdn:l,device:s,offer:c,rockmanId:v,ip_range_name:p,search:d,extraParamsQs:u})];case 4:if(!1===(S=e.sent()).success)throw w="ALREADY SUBSCRIBED"===S.message?"AlreadySubscribed":"InvalidMSISDN",(_=new Error("".concat(w,":\n").concat(S.message))).type=w,console.error(_),_;return[2,S.redirect_url]}}))}))}var _={currentState:{type:"MSISDNEntry",result:o({href:"/product"})}},I={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},h={currentState:{type:"MSISDNEntry",result:i()}},g=function(r){var e=d(r);if(!e["mock-flow"])return h;switch(e["current-state"]){case"msisdn-entry-failure-state":return I;case"msisdn-entry-success-state":return _;default:return console.error("Mock Flow not supported"),h}}(window),b=n("moRedirFlow/submitMSISDNAction",(function(t,n){var a=t.window,i=t.msisdn,s=t.extraParams,c=n.getState,d=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,m,f,v,p,y;return e(this,(function(e){switch(e.label){case 0:if(r=c(),!(null===(y=null===(p=null===(v=null==r?void 0:r.strategy)||void 0===v?void 0:v.currentState)||void 0===p?void 0:p.data)||void 0===y?void 0:y.config))return[2,d({errorType:"UnexpectedState"})];t=r.strategy.currentState.data.config,e.label=1;case 1:return e.trys.push([1,5,,6]),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submitted",{msisdn:i}),[4,S(a,t,i,s)];case 2:return n=e.sent(),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:i}),s&&s.storeMsisdn&&"true"===s.storeMsisdn?[4,u(i).then((function(r){r&&r.data&&r.data.success?l.customEvent("Flow","advance-auto","msisdn-stored-success"):l.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(r){l.customEvent("Flow","advance-auto","msisdn-stored-error",r)}))]:[3,4];case 3:e.sent(),e.label=4;case 4:return[2,{type:"MSISDNEntry",result:o({href:n})}];case 5:switch(m=e.sent(),console.warn(m),f=void 0,m.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidMSISDN":f="InvalidMSISDN";break;default:f="UnknownError"}return l.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:i,errorType:"UnknownError"}),[2,d({errorType:f,productUrl:m.productUrl})];case 6:return[2]}}))}))})),k=a({name:"moRedirFlow",initialState:g,reducers:{backToStartAction:function(r){l.recedeInFlow("tallyman.v1-mo-redir","mo-redir-state","requested to change phone number"),r.currentState={type:"MSISDNEntry",result:i()}}},extraReducers:function(r){r.addCase(b.pending,(function(r){r.currentState={type:"MSISDNEntry",result:s()}})).addCase(b.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(b.rejected,(function(r,e){r.currentState={type:"MSISDNEntry",result:c(e.payload)}}))}}),j=k.reducer,E=k.actions.backToStartAction;export{E as backToStartAction,p as moRedirFlowMatch,j as moRedirFlowReducer,b as submitMSISDNAction,v as useMoRedirFlowState};
2
2
  //# sourceMappingURL=moRedirFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"moRedirFlow.js","sources":["../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../src/flows/moRedirFlow/match.ts","../src/flows/moRedirFlow/api.ts","../src/flows/moRedirFlow/main.ts","../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.pac_analytics?.visitor?.ip && { client_ip: window.pac_analytics.visitor.ip }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi).join('');\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nconst mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nconst mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\nconst defaultInitialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\nexport const { backToStartAction } = moRedirFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["useMoRedirFlowState","useSelector","state","moRedirFlow","currentState","moRedirFlowMatch","_a","msisdnEntry","type","result","redirect","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","cleanSearchParams","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","_f","_e","ip","client_ip","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","success","redirect_url","fetch","then","x","json","submitMSISDN","maybeConfig","internationalMSISDN","config","submitMSISDNWithConfig","substr","Object","keys","map","k","join","match","tryGetIPRangeName","sent","message","error","Error","console","mockedMSISDNEntrySuccess","RDS.Success","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","strategy","data","tracker","advancedInFlow","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","productUrl","moRedirFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moRedirFlowReducer","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"moRedirFlow.js","sources":["../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../src/flows/moRedirFlow/match.ts","../src/flows/moRedirFlow/api.ts","../src/flows/moRedirFlow/main.ts","../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n network_type: ip_range_name ? '' : 'wifi',\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.pac_analytics?.visitor?.ip && { client_ip: window.pac_analytics.visitor.ip }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${search ? `&${search}` : ''}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi).join('');\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nconst mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nconst mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\nconst defaultInitialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\nexport const { backToStartAction } = moRedirFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["useMoRedirFlowState","useSelector","state","moRedirFlow","currentState","moRedirFlowMatch","_a","msisdnEntry","type","result","redirect","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","cleanSearchParams","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","network_type","_d","_c","pac_analytics","_b","visitor","includes","evinaTi","_f","_e","ip","client_ip","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","success","redirect_url","fetch","then","x","json","submitMSISDN","maybeConfig","internationalMSISDN","config","submitMSISDNWithConfig","substr","Object","keys","map","k","join","match","tryGetIPRangeName","sent","message","error","Error","console","mockedMSISDNEntrySuccess","RDS.Success","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","strategy","data","tracker","advancedInFlow","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","productUrl","moRedirFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moRedirFlowReducer","reducer","actions"],"mappings":"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"}
package/dist/pinFlow.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__awaiter as e,__generator as t,__read as r,__assign as n}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,S as s,L as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{c as d,P as l}from"./strategySlice-BuWAS7ua.js";import{searchToObject as p}from"./searchToObject.js";import{s as v}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{b as m}from"./bupperizeCountry-CEtt0MKz.js";import{l as y,r as S,a as w}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-DzB_RpFU.js";import{c as h}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"./formatNumberToE164-Bd0VHMHJ.js";import"pacman-client";import"uuid";var I=function(e){return e((function(e){return e.pinFlow.currentState}))};function _(e){var t=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return t(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var b=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},E=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.msisdn,d=n.rockmanId,l=n.extraParams,p=n.search,v=n.uniqid,f=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,m,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),p=h(p),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",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||""},y=Object.entries(m).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n).concat(p?"&".concat(p):""),[2,fetch(w).then((function(e){return e.json()}))]}))}))},k=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId,d=n.pin,l=n.extraParams,p=n.uniqid,v=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,f,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:m(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,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:v,uniqid:p,antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||""},y=Object.entries(f).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n),[2,fetch(w).then((function(e){return e.json()}))]}))}))},N=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,u=r.rockmanId,d=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,p,v,f;return t(this,(function(t){return e=i.location.href,r=i.pac_analytics.visitor.ip,p=new URLSearchParams(n(n({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:u,client_lpu:e},d&&{operator:d}),l&&{uniqid:l})),r&&p.append("client_ip",r),v=i.DEV_BASE_URL||"",f="".concat(v,"/tallyman/v1/?").concat(p.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function U(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){return!0===(e=n({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,D(r,e,a,e.operators,o)]:[2,P(r,e,a,o)]}))}))}var j="";function P(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,v,f,m,y,S,w,h,I,_,b,k,U;return t(this,(function(t){switch(t.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,"true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,S=-1===r.location.search.indexOf("redirect-back=1")&&r.location.search.substr(1)||"",w=j&&""!==j?"&mcpUniqid=".concat(j):"",h=void 0!==r&&r.tid?r.tid:"",[4,E({window:r,country:f,slug:v,device:m,offer:y,msisdn:d,rockmanId:l,extraParams:s,search:S,uniqid:w,evinaTid:h})];case 1:if(!1!==(I=t.sent()).success)return[3,2];switch((_=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(I.message))).message=I.message,!0){case I.message.includes("ALREADY SUBSCRIBED"):_.type="AlreadySubscribed";break;case I.message.includes("invalid"):_.type="InvalidMSISDN";break;default:_.type=null}throw _.productUrl=I.product_url?I.product_url:"",console.error(_),_;case 2:if(r.operator=I.operator,b={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&I.operator&&(b[f.toLowerCase()]&&b[f.toLowerCase()][I.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];t.label=3;case 3:return t.trys.push([3,5,,6]),[4,N({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:I.operator,uniqid:w})];case 4:return!1===(k=t.sent()).success?console.warn(k.message):(g(k.source),j=k.uniqid),[3,6];case 5:return U=t.sent(),console.warn(U),[3,6];case 6:return I.javascript&&g(I.javascript),[2,n({type:"SingleMSISDNSubmissionResult",pin:I.pin,uniqidResult:j,operator:I.operator,redirectUrl:null==I?void 0:I.redirect_to_url},(null==I?void 0:I.userType)?{userType:null==I?void 0:I.userType}:{})]}}))}))}function D(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return t(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(d,void 0,void 0,(function(){var e,c;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,P(r,i,a,n(n({},s),{operator:o}))];case 1:return e=t.sent(),[2,S(n(n({},e),{operator:o}))];case 2:return c=t.sent(),[2,y(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var t;return"left"===e.type&&"AlreadySubscribed"===(null===(t=e.value)||void 0===t?void 0:t.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function M(n,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,y,S,g,h,I,_,b,E,N;return t(this,(function(U){switch(U.label){case 0:if(n.hostCountry&&n.hostSlug&&(a.country=n.hostCountry,a.slug=n.hostSlug),s=a.slug,c=a.country,u=a.device,d=n.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(n))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=n.pac_analytics.visitor.rockmanId,!i)throw(y=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",y;return S=""!==j?"&mcpUniqid=".concat(j):"",g=void 0!==n&&n.tid?n.tid:"",[4,k({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:S,evinaTid:g})];case 1:if(!1!==(h=U.sent()).success)return[3,2];throw I={"pin does not match":"InvalidPIN","mcp blocked":"SessionBlocked",expired_pin:"ExpiredPIN",insufficient_balance:"InsufficientBalance"}[h.message],(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",E.message=h.message,console.error(E),E;case 2:return!0!==h.async?[3,4]:h.product_url&&""!==h.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:h.product_url}]:(_=function(){return function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,d,l;return t(this,(function(t){return e={action:"check-subscription",country:m(a),slug:o,device:s,offerId:c,rockman_id:u},n=Object.entries(e).filter((function(e){var t=r(e,2);return t[0],null!=t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(n),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,w(_,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(b=U.sent()).success)return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:b.product_url||null,isAlreadySubscribed:N}];throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(b.message))).type="InvalidPIN",E.message=b.message,E;case 4:return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:N}]}}))}))}var A={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},C={currentState:{type:"PINEntry",result:s({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},R={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},F={currentState:{type:"MSISDNEntry",result:o()}},T=function(e){var t=p(e),r=new Event("onPinPage"),n=t["show-pin-entry"]&&"1"===t["show-pin-entry"],i=t["show-thank-you"]&&"1"===t["show-thank-you"],a="1"===(null==t?void 0:t.show_custom_error),c={currentState:{type:"MSISDNEntry",result:u({errorType:"SomethingWentWrong",error:null})}},d={currentState:{type:"PINEntry",result:s({finalUrl:(null==t?void 0:t.product_url)||""}),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}},l={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}};if(n)return null==e||e.dispatchEvent(r),l;if(i)return d;if(a)return c;if(!t["mock-flow"])return F;switch(t["current-state"]){case"msisdn-failure-state":return R;case"pin-state":return null==e||e.dispatchEvent(r),A;case"completed-state":return C;default:return console.error("Mock Flow not supported"),F}}(window),B=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,s=r.msisdn,c=r.extraParams,u=i.getState,p=i.dispatch,m=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,y,S,w,g,h,I,_,b,E,k,N,j;return t(this,(function(t){switch(t.label){case 0:if(e=u(),!(null===(N=null===(k=null===(E=null==e?void 0:e.strategy)||void 0===E?void 0:E.currentState)||void 0===k?void 0:k.data)||void 0===N?void 0:N.config))return[2,m({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(j=e.pinFlow)||void 0===j?void 0:j.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===q(null==i?void 0:i.country,s)&&(s=s.replace("970","972")),f.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,U(a,i,s)];case 2:return w=t.sent(),f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),"SingleMSISDNSubmissionResult"===w.type&&w.redirectUrl&&(f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),f.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:w.redirectUrl}),a.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,v(s).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return g="SingleMSISDNSubmissionResult"===w.type?w.operator:"",h={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},I=new Event("onPinPage"),null==a||a.dispatchEvent(I),[2,n(n({},S),{type:"PINEntry",result:o(),data:n({actualPIN:"SingleMSISDNSubmissionResult"===w.type?w.pin:null,msisdn:s,operator:g,pinMaxLength:""!==g&&h[g]?h[g]:null,isHeaderEnrichmentSuccess:y},"SingleMSISDNSubmissionResult"===w.type&&(null==w?void 0:w.userType)?{userType:w.userType}:{})})];case 5:switch(_=t.sent(),console.warn(_),b=void 0,_.type){case"AlreadySubscribed":b="AlreadySubscribed";break;case"InvalidMSISDN":b="InvalidMSISDN";break;default:b="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl}),y&&p(d({type:l.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,m({errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl})];case 6:return[2]}}))}))})),x=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,c=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,p,m,y,S,w,g,h;return t(this,(function(t){switch(t.label){case 0:if(e=d(),!(null===(g=null===(w=null===(S=null==e?void 0:e.strategy)||void 0===S?void 0:S.currentState)||void 0===w?void 0:w.data)||void 0===g?void 0:g.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(h=e.pinFlow)||void 0===h?void 0:h.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,M(a,c,r,u)];case 2:return p=t.sent(),f.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:c,finalUrl:p.productUrl}),p.gatewayRedirectUrl&&""!==p.gatewayRedirectUrl&&(f.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:c,gatewayRedirectUrl:p.gatewayRedirectUrl}),a.location.href=p.gatewayRedirectUrl),u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,v(o).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return[2,n(n({},i),{type:"PINEntry",result:s({finalUrl:p.productUrl,isAlreadySubscribed:p.isAlreadySubscribed||!1})})];case 5:switch(m=t.sent(),console.warn(m),y=void 0,m.type){case"AlreadySubscribed":y="AlreadySubscribed";break;case"InvalidPIN":y="InvalidPIN";break;case"SessionBlocked":y="SessionBlocked";break;case"ExpiredPIN":y="ExpiredPIN";break;case"InsufficientBalance":y="InsufficientBalance";break;default:y="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl}),setTimeout((function(){m.productUrl&&(a.location.href=m.productUrl)}),0),[2,l({errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl})];case 6:return[2]}}))}))})),L={PS:"970"},q=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=L[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},O=a({name:"pinFlow",initialState:T,reducers:{backToStartAction:function(e){f.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e.currentState={type:"MSISDNEntry",result:o()}}},extraReducers:function(e){e.addCase(B.pending,(function(e){e.currentState={type:"MSISDNEntry",result:c(),data:e.currentState.data}})).addCase(B.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(B.rejected,(function(e,t){e.currentState={type:"MSISDNEntry",result:u(t.payload),data:e.currentState.data}})).addCase(x.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(x.rejected,(function(e,t){e.currentState={type:"PINEntry",result:u(t.payload),data:e.currentState.data}}))}}),V=O.reducer,H=O.actions.backToStartAction;export{H as backToStartAction,_ as pinFlowMatch,V as pinFlowReducer,B as submitMSISDNAction,x as submitPinAction,I as usePinFlowState};
1
+ import{__awaiter as e,__generator as t,__read as r,__assign as n}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,S as s,L as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{c as d,P as l}from"./strategySlice-BuWAS7ua.js";import{searchToObject as p}from"./searchToObject.js";import{s as v}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{b as m}from"./bupperizeCountry-CEtt0MKz.js";import{l as y,r as S,a as w}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-DzB_RpFU.js";import{c as h}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"./formatNumberToE164-Bd0VHMHJ.js";import"pacman-client";import"uuid";var I=function(e){return e((function(e){return e.pinFlow.currentState}))};function _(e){var t=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return t(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var b=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},E=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.msisdn,d=n.rockmanId,l=n.extraParams,p=n.search,v=n.uniqid,f=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,m,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),p=h(p),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",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||""},y=Object.entries(m).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n).concat(p?"&".concat(p):""),[2,fetch(w).then((function(e){return e.json()}))]}))}))},k=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId,d=n.pin,l=n.extraParams,p=n.uniqid,v=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,f,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:m(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,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:v,uniqid:p,antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||""},y=Object.entries(f).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n),[2,fetch(w).then((function(e){return e.json()}))]}))}))},N=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,u=r.rockmanId,d=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,p,v,f;return t(this,(function(t){return e=i.location.href,r=i.pac_analytics.visitor.ip,p=new URLSearchParams(n(n({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:u,client_lpu:e},d&&{operator:d}),l&&{uniqid:l})),r&&p.append("client_ip",r),v=i.DEV_BASE_URL||"",f="".concat(v,"/tallyman/v1/?").concat(p.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function U(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){return!0===(e=n({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,D(r,e,a,e.operators,o)]:[2,P(r,e,a,o)]}))}))}var j="";function P(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,v,f,m,y,S,w,h,I,_,b,k,U;return t(this,(function(t){switch(t.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,"true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,S=r.location.search.substr(1)||"",w=j&&""!==j?"&mcpUniqid=".concat(j):"",h=void 0!==r&&r.tid?r.tid:"",[4,E({window:r,country:f,slug:v,device:m,offer:y,msisdn:d,rockmanId:l,extraParams:s,search:S,uniqid:w,evinaTid:h})];case 1:if(!1!==(I=t.sent()).success)return[3,2];switch((_=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(I.message))).message=I.message,!0){case I.message.includes("ALREADY SUBSCRIBED"):_.type="AlreadySubscribed";break;case I.message.includes("invalid"):_.type="InvalidMSISDN";break;default:_.type=null}throw _.productUrl=I.product_url?I.product_url:"",console.error(_),_;case 2:if(r.operator=I.operator,b={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&I.operator&&(b[f.toLowerCase()]&&b[f.toLowerCase()][I.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];t.label=3;case 3:return t.trys.push([3,5,,6]),[4,N({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:I.operator,uniqid:w})];case 4:return!1===(k=t.sent()).success?console.warn(k.message):(g(k.source),j=k.uniqid),[3,6];case 5:return U=t.sent(),console.warn(U),[3,6];case 6:return I.javascript&&g(I.javascript),[2,n({type:"SingleMSISDNSubmissionResult",pin:I.pin,uniqidResult:j,operator:I.operator,redirectUrl:null==I?void 0:I.redirect_to_url},(null==I?void 0:I.userType)?{userType:null==I?void 0:I.userType}:{})]}}))}))}function D(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return t(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(d,void 0,void 0,(function(){var e,c;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,P(r,i,a,n(n({},s),{operator:o}))];case 1:return e=t.sent(),[2,S(n(n({},e),{operator:o}))];case 2:return c=t.sent(),[2,y(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var t;return"left"===e.type&&"AlreadySubscribed"===(null===(t=e.value)||void 0===t?void 0:t.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function M(n,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,y,S,g,h,I,_,b,E,N;return t(this,(function(U){switch(U.label){case 0:if(n.hostCountry&&n.hostSlug&&(a.country=n.hostCountry,a.slug=n.hostSlug),s=a.slug,c=a.country,u=a.device,d=n.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(n))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=n.pac_analytics.visitor.rockmanId,!i)throw(y=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",y;return S=""!==j?"&mcpUniqid=".concat(j):"",g=void 0!==n&&n.tid?n.tid:"",[4,k({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:S,evinaTid:g})];case 1:if(!1!==(h=U.sent()).success)return[3,2];throw I={"pin does not match":"InvalidPIN","mcp blocked":"SessionBlocked",expired_pin:"ExpiredPIN",insufficient_balance:"InsufficientBalance"}[h.message],(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",E.message=h.message,console.error(E),E;case 2:return!0!==h.async?[3,4]:h.product_url&&""!==h.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:h.product_url}]:(_=function(){return function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,d,l;return t(this,(function(t){return e={action:"check-subscription",country:m(a),slug:o,device:s,offerId:c,rockman_id:u},n=Object.entries(e).filter((function(e){var t=r(e,2);return t[0],null!=t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(n),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,w(_,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(b=U.sent()).success)return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:b.product_url||null,isAlreadySubscribed:N}];throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(b.message))).type="InvalidPIN",E.message=b.message,E;case 4:return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:N}]}}))}))}var A={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},C={currentState:{type:"PINEntry",result:s({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},R={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},F={currentState:{type:"MSISDNEntry",result:o()}},T=function(e){var t=p(e),r=new Event("onPinPage"),n=t["show-pin-entry"]&&"1"===t["show-pin-entry"],i=t["show-thank-you"]&&"1"===t["show-thank-you"],a="1"===(null==t?void 0:t.show_custom_error),c={currentState:{type:"MSISDNEntry",result:u({errorType:"SomethingWentWrong",error:null})}},d={currentState:{type:"PINEntry",result:s({finalUrl:(null==t?void 0:t.product_url)||""}),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}},l={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}};if(n)return null==e||e.dispatchEvent(r),l;if(i)return d;if(a)return c;if(!t["mock-flow"])return F;switch(t["current-state"]){case"msisdn-failure-state":return R;case"pin-state":return null==e||e.dispatchEvent(r),A;case"completed-state":return C;default:return console.error("Mock Flow not supported"),F}}(window),B=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,s=r.msisdn,c=r.extraParams,u=i.getState,p=i.dispatch,m=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,y,S,w,g,h,I,_,b,E,k,N,j;return t(this,(function(t){switch(t.label){case 0:if(e=u(),!(null===(N=null===(k=null===(E=null==e?void 0:e.strategy)||void 0===E?void 0:E.currentState)||void 0===k?void 0:k.data)||void 0===N?void 0:N.config))return[2,m({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(j=e.pinFlow)||void 0===j?void 0:j.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===q(null==i?void 0:i.country,s)&&(s=s.replace("970","972")),f.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,U(a,i,s)];case 2:return w=t.sent(),f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),"SingleMSISDNSubmissionResult"===w.type&&w.redirectUrl&&(f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),f.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:w.redirectUrl}),a.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,v(s).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return g="SingleMSISDNSubmissionResult"===w.type?w.operator:"",h={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},I=new Event("onPinPage"),null==a||a.dispatchEvent(I),[2,n(n({},S),{type:"PINEntry",result:o(),data:n({actualPIN:"SingleMSISDNSubmissionResult"===w.type?w.pin:null,msisdn:s,operator:g,pinMaxLength:""!==g&&h[g]?h[g]:null,isHeaderEnrichmentSuccess:y},"SingleMSISDNSubmissionResult"===w.type&&(null==w?void 0:w.userType)?{userType:w.userType}:{})})];case 5:switch(_=t.sent(),console.warn(_),b=void 0,_.type){case"AlreadySubscribed":b="AlreadySubscribed";break;case"InvalidMSISDN":b="InvalidMSISDN";break;default:b="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl}),y&&p(d({type:l.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,m({errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl})];case 6:return[2]}}))}))})),x=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,c=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,p,m,y,S,w,g,h;return t(this,(function(t){switch(t.label){case 0:if(e=d(),!(null===(g=null===(w=null===(S=null==e?void 0:e.strategy)||void 0===S?void 0:S.currentState)||void 0===w?void 0:w.data)||void 0===g?void 0:g.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(h=e.pinFlow)||void 0===h?void 0:h.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,M(a,c,r,u)];case 2:return p=t.sent(),f.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:c,finalUrl:p.productUrl}),p.gatewayRedirectUrl&&""!==p.gatewayRedirectUrl&&(f.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:c,gatewayRedirectUrl:p.gatewayRedirectUrl}),a.location.href=p.gatewayRedirectUrl),u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,v(o).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return[2,n(n({},i),{type:"PINEntry",result:s({finalUrl:p.productUrl,isAlreadySubscribed:p.isAlreadySubscribed||!1})})];case 5:switch(m=t.sent(),console.warn(m),y=void 0,m.type){case"AlreadySubscribed":y="AlreadySubscribed";break;case"InvalidPIN":y="InvalidPIN";break;case"SessionBlocked":y="SessionBlocked";break;case"ExpiredPIN":y="ExpiredPIN";break;case"InsufficientBalance":y="InsufficientBalance";break;default:y="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl}),setTimeout((function(){m.productUrl&&(a.location.href=m.productUrl)}),0),[2,l({errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl})];case 6:return[2]}}))}))})),L={PS:"970"},q=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=L[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},O=a({name:"pinFlow",initialState:T,reducers:{backToStartAction:function(e){f.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e.currentState={type:"MSISDNEntry",result:o()}}},extraReducers:function(e){e.addCase(B.pending,(function(e){e.currentState={type:"MSISDNEntry",result:c(),data:e.currentState.data}})).addCase(B.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(B.rejected,(function(e,t){e.currentState={type:"MSISDNEntry",result:u(t.payload),data:e.currentState.data}})).addCase(x.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(x.rejected,(function(e,t){e.currentState={type:"PINEntry",result:u(t.payload),data:e.currentState.data}}))}}),V=O.reducer,H=O.actions.backToStartAction;export{H as backToStartAction,_ as pinFlowMatch,V as pinFlowReducer,B as submitMSISDNAction,x as submitPinAction,I as usePinFlowState};
2
2
  //# sourceMappingURL=pinFlow.js.map
@@ -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 };\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}: {\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}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\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_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\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}`;\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 { 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 if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\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 : 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.indexOf('redirect-back=1') === -1 ? window.location.search.substr(1) || '' : '';\n\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.success === false) {\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n error.message = result.message;\n switch (true) {\n case result.message.includes('ALREADY SUBSCRIBED'):\n error.type = 'AlreadySubscribed';\n break;\n case result.message.includes('invalid'):\n error.type = 'InvalidMSISDN';\n break;\n default:\n error.type = null;\n }\n // error.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n error.productUrl = result.product_url ? result.product_url : '';\n console.error(error);\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\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 });\n if (pinResult.success === false) {\n const pinErrorTypeMap: { [key: string]: string } = {\n 'pin does not match': 'InvalidPIN',\n 'mcp blocked': 'SessionBlocked',\n expired_pin: 'ExpiredPIN',\n insufficient_balance: 'InsufficientBalance'\n };\n const errorMessage = pinErrorTypeMap[pinResult.message as string];\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${errorMessage}`) as IError & {\n type: string;\n };\n pinError.type = errorMessage || 'InvalidPIN';\n pinError.message = pinResult.message;\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 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 MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { 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 = 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 msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'SomethingWentWrong',\n error: null\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,\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 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 // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n\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 }\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 } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-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 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}\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 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\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 backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n 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 }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\nexport const { backToStartAction } = pinFlowActions;\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","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","match","indexOf","substr","tid","sent","error","message","includes","productUrl","product_url","console","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","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","errorMessage","expired_pin","insufficient_balance","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","isShowThankYouStep","isShowCustomError","show_custom_error","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","replace","tracker","advancedInFlow","msisdnSubmissionResult","_h","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","recedeInFlow","setStrategyExtraData","PossibleTypes","PIN","submitPinAction","ex_2","setTimeout","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","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 };\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}: {\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}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\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_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\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}`;\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 { 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 if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\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 : 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.success === false) {\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n error.message = result.message;\n switch (true) {\n case result.message.includes('ALREADY SUBSCRIBED'):\n error.type = 'AlreadySubscribed';\n break;\n case result.message.includes('invalid'):\n error.type = 'InvalidMSISDN';\n break;\n default:\n error.type = null;\n }\n // error.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n error.productUrl = result.product_url ? result.product_url : '';\n console.error(error);\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\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 });\n if (pinResult.success === false) {\n const pinErrorTypeMap: { [key: string]: string } = {\n 'pin does not match': 'InvalidPIN',\n 'mcp blocked': 'SessionBlocked',\n expired_pin: 'ExpiredPIN',\n insufficient_balance: 'InsufficientBalance'\n };\n const errorMessage = pinErrorTypeMap[pinResult.message as string];\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${errorMessage}`) as IError & {\n type: string;\n };\n pinError.type = errorMessage || 'InvalidPIN';\n pinError.message = pinResult.message;\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 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 MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { 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 = 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 msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'SomethingWentWrong',\n error: null\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,\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 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 // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n\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 }\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 } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-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 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}\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 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\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 backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n 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 }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\nexport const { backToStartAction } = pinFlowActions;\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","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","match","substr","tid","sent","error","message","includes","productUrl","product_url","console","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","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","errorMessage","expired_pin","insufficient_balance","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","isShowThankYouStep","isShowCustomError","show_custom_error","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","replace","tracker","advancedInFlow","msisdnSubmissionResult","_h","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","recedeInFlow","setStrategyExtraData","PossibleTypes","PIN","submitPinAction","ex_2","setTimeout","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ouisys-engine",
3
- "version": "5.0.69",
3
+ "version": "5.0.71",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "directories": "dist dev-tools",