ouisys-engine 5.0.134 → 5.0.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/moFlow.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__awaiter as e,__generator as r,__read as t,__assign as n}from"tslib";import{createAsyncThunk as a,createSlice as i}from"@reduxjs/toolkit";import{S as o,L as s,F as c,N as d}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as u}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as v}from"./tracker-DaaILhEr.js";import{c as p}from"./cleanSearchParams-Dl7ZDlew.js";import{i as m}from"./strategySlice-BMNt18ck.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.js";var f=function(e){return e((function(e){return e.moFlow.currentState}))};function S(e){var r=e.msisdnEntry;return function(e){return e.type,r(e.result)}}var b=function(n){var a=n.window,i=n.slug,o=n.country,s=n.msisdn,c=n.device,d=n.offer,u=n.rockmanId,l=n.extraParamsQs,v=n.search;return e(void 0,void 0,void 0,(function(){var e,n,m,f,S,b,y;return r(this,(function(r){switch(r.label){case 0:return a.api_ajax_url?[4,fetch(a.api_ajax_url).then((function(e){return e.json()}))]:[3,2];case 1:return n=r.sent(),[3,3];case 2:n=null,r.label=3;case 3:return e=n,v=p(v),m={action:"trigger-message",slug:i,country:o,msisdn:s,device:c,offerId:d,rockman_id:u,page:encodeURIComponent(null===(y=null==a?void 0:a.location)||void 0===y?void 0:y.href),sam_g_token:a.reCaptchaToken||"",language_code:a.languageCode||"",partner_form_action:(null==e?void 0:e.form_action)?encodeURIComponent(null==e?void 0:e.form_action):"",antifraud_id:a.antifraud_id||"",antifraud_id_js_code:a.antifraud_id_js_code||"",antifraud_id_js_link:a.antifraud_id_js_link||""},f=Object.entries(m).filter((function(e){var r=t(e,2);return r[0],r[1]})).map((function(e){var r=t(e,2),n=r[0],a=r[1];return"".concat(n,"=").concat(a)})).join("&"),S=a.DEV_BASE_URL||"",b="".concat(S,"/tallyman/v1/?").concat(f).concat(v?"&".concat(v):"","&").concat(l),[2,fetch(b).then((function(e){return e.json()}))]}}))}))};function y(t,a,i,o){var s,c;return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){return e=n(n({},a||{}),{offer:null===(c=null===(s=t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===c?void 0:c.offer}),[2,k(t,e,i,o)]}))}))}function k(t,a,i,o){var s;return e(this,void 0,void 0,(function(){var e,c,d,u,l,v,p,m,f,S,y;return r(this,(function(r){switch(r.label){case 0:return e=a.slug,c=a.country,d=a.device,u=a.offer,l=t.location.search.substr(1)||"",v=o?"&".concat(Object.keys(o).map((function(e){return"".concat(e,"=").concat(o[e])})).join("&")):"",p=(null===(s=i.match(/\d+/gi))||void 0===s?void 0:s.join(""))||"",m=t.pac_analytics.visitor.rockmanId,[4,b({window:t,slug:e,country:c,msisdn:p,device:d,offer:u,rockmanId:m,search:l,extraParamsQs:v})];case 1:if(!1===(f=r.sent()).success){if(S="ALREADY SUBSCRIBED"===f.message?"AlreadySubscribed":"InvalidMSISDN",y=new Error("".concat(S,":\n").concat(f.message)),null===f.error_code&&""!==f.error_code)switch(f.error_code){case"1":S="Success";break;case"2":S="Pending";break;case"10":S="AlreadySubscribed";break;case"11":S="BlacklistedMsisdn";break;case"12":S="DuplicatedRequest";break;case"21":S="ExpiredPin";break;case"22":S="InvalidPin";break;case"23":S="PinLimitExceeded";break;case"24":S="PinGenerationError";break;case"25":S="PinAlreadyUsed";break;case"31":S="InactiveOperator";break;case"32":S="InvalidMsisdn";break;case"33":S="InvalidSubscriptionId";break;case"34":S="NotEligibleMsisdn";break;case"35":S="ValidationIssue";break;case"36":S="InsufficientBalance";break;case"37":S="AntiFraudError";break;case"38":S="VasBlocked";break;case"39":S="AccountSuspended";break;case"40":S="SalesCapReached";break;case"50":S="SubscriptionApiFailure";break;case"75":S="ReSubscriptionBlocked";break;case"76":S="ReLeadBlocked";break;case"99":S="UnspecifiedError"}throw y.type=S,y.productUrl=f.product_url?f.product_url:"",console.error(y),y}return[2,n(n({},f),{keyword:f.displayKeyword})]}}))}))}var I={currentState:{type:"MSISDNEntry",result:o({keyword:"TEST OK",shortcode:"777"})}},h={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},_={currentState:{type:"MSISDNEntry",result:d()}},w=function(e){var r=u(e);if(!r["mock-flow"])return _;switch(r["current-state"]){case"msisdn-entry-failure-state":return h;case"msisdn-entry-success-state":return I;default:return console.error("Mock Flow not supported"),_}}(window),E=a("moFlow/submitMSISDNAction",(function(t,a){var i=t.window,s=t.msisdn,c=t.extraParams,d=a.getState,u=a.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,a,p,m,f,S,b,k,I,h,_,w,E,g;return r(this,(function(r){switch(r.label){case 0:if(e=d(),!(null===(b=null===(S=null===(f=null==e?void 0:e.strategy)||void 0===f?void 0:f.currentState)||void 0===S?void 0:S.data)||void 0===b?void 0:b.config))return[2,u({errorType:"UnexpectedState"})];t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),v.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:s}),[4,y(i,t,s,c)];case 2:return a=r.sent(),v.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:s}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,l(s).then((function(e){e&&e.data&&e.data.success?v.customEvent("Flow","advance-auto","msisdn-stored-success"):v.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){v.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:o(n({},a))}];case 5:return p=r.sent(),console.warn(p),m=null!==(k={AlreadySubscribed:"AlreadySubscribed",InvalidMSISDN:"InvalidMSISDN",SalesCapReached:"SalesCapReached",BlacklistedMsisdn:"BlacklistedMsisdn",DuplicatedRequest:"DuplicatedRequest",InactiveOperator:"InactiveOperator",InvalidSubscriptionId:"InvalidSubscriptionId",NotEligibleMsisdn:"NotEligibleMsisdn",ValidationIssue:"ValidationIssue",InsufficientBalance:"InsufficientBalance",AntiFraudError:"AntiFraudError",VasBlocked:"VasBlocked",AccountSuspended:"AccountSuspended",SubscriptionApiFailure:"SubscriptionApiFailure",ReSubscriptionBlocked:"ReSubscriptionBlocked",ReLeadBlocked:"ReLeadBlocked"}[p.type])&&void 0!==k?k:"UnknownError",v.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:s,errorType:m||"UnknownError"}),["SalesCapReached","AntiFraudError","BlacklistedMsisdn","VasBlocked","NotEligibleMsisdn"].includes(m)&&(null===(h=null===(I=null==i?void 0:i.pac_analytics)||void 0===I?void 0:I.visitor)||void 0===h?void 0:h.capRedirectUrl)&&(v.customEvent("tallyman.v1-mo","redirect","cap-redirect",{redirect_url:null===(w=null===(_=null==i?void 0:i.pac_analytics)||void 0===_?void 0:_.visitor)||void 0===w?void 0:w.capRedirectUrl,errorType:m}),i.location.href=null===(g=null===(E=null==i?void 0:i.pac_analytics)||void 0===E?void 0:E.visitor)||void 0===g?void 0:g.capRedirectUrl),[2,u({errorType:m,productUrl:p.productUrl})];case 6:return[2]}}))}))})),g=a("moFlow/backToStartAction",(function(t,n){var a=n.dispatch,i=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){return r(this,(function(e){try{v.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),a(m())}catch(e){return console.warn(e),[2,i({errorType:"UnexpectedState"})]}return[2]}))}))})),j=i({name:"moFlow",initialState:w,reducers:{},extraReducers:function(e){e.addCase(E.pending,(function(e){e.currentState={type:"MSISDNEntry",result:s()}})).addCase(E.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(E.rejected,(function(e,r){e.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),M=j.reducer;j.actions;export{g as backToStartAction,S as moFlowMatch,M as moFlowReducer,E as submitMSISDNAction,f 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 i,L as s,F as c,N as u}from"./RemoteDataState-lcf8PfJd.js";import{n as d,r as l}from"./normaliseErrorCode-CcFWuZeI.js";import{searchToObject as m}from"./searchToObject.js";import{s as v}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{c as p}from"./cleanSearchParams-Dl7ZDlew.js";import{i as y}from"./strategySlice-BMNt18ck.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.js";var S=function(t){return t((function(t){return t.moFlow.currentState}))};function _(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var w=function(n){var o=n.window,a=n.slug,i=n.country,s=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,f,y,S,_;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=p(m),v={action:"trigger-message",slug:a,country:i,msisdn:s,device:c,offerId:u,rockman_id:d,page:encodeURIComponent(null===(_=null==o?void 0:o.location)||void 0===_?void 0:_.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||""},f=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("&"),y=o.DEV_BASE_URL||"",S="".concat(y,"/tallyman/v1/?").concat(f).concat(m?"&".concat(m):"","&").concat(l),[2,fetch(S).then((function(t){return t.json()}))]}}))}))};function h(e,o,a,i){var s,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===(s=e.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===c?void 0:c.offer}),[2,j(e,t,a,i)]}))}))}function j(e,o,a,i){var s,c;return t(this,void 0,void 0,(function(){var t,u,l,m,v,f,p,y,S,_,h,j;return r(this,(function(r){switch(r.label){case 0:return t=o.slug,u=o.country,l=o.device,m=o.offer,v=e.location.search.substr(1)||"",f=i?"&".concat(Object.keys(i).map((function(t){return"".concat(t,"=").concat(i[t])})).join("&")):"",p=(null===(s=a.match(/\d+/gi))||void 0===s?void 0:s.join(""))||"",y=e.pac_analytics.visitor.rockmanId,[4,w({window:e,slug:t,country:u,msisdn:p,device:l,offer:m,rockmanId:y,search:v,extraParamsQs:f})];case 1:if(!1===(S=r.sent()).success)throw _="ALREADY SUBSCRIBED"===S.message?"AlreadySubscribed":"InvalidMsisdn",h=S.error_code?d(S.error_code):_,j=new Error("".concat(h,":\n").concat(S.message)),Object.assign(j,{type:h,productUrl:null!==(c=S.product_url)&&void 0!==c?c:""}),j;return[2,n(n({},S),{keyword:S.displayKeyword})]}}))}))}var g={currentState:{type:"MSISDNEntry",result:i({keyword:"TEST OK",shortcode:"777"})}},b={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},I={currentState:{type:"MSISDNEntry",result:u()}},E=function(t){var r=m(t);if(!r["mock-flow"])return I;switch(r["current-state"]){case"msisdn-entry-failure-state":return b;case"msisdn-entry-success-state":return g;default:return console.error("Mock Flow not supported"),I}}(window),k=o("moFlow/submitMSISDNAction",(function(e,o){var a=e.window,s=e.msisdn,c=e.extraParams,u=o.getState,d=o.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,o,m,p,y,S,_,w,j,g,b,I,E;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(_=null===(S=null===(y=null==t?void 0:t.strategy)||void 0===y?void 0:y.currentState)||void 0===S?void 0:S.data)||void 0===_?void 0:_.config))return[2,d({errorType:"UnexpectedState"})];e=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:s}),[4,h(a,e,s,c)];case 2:return o=r.sent(),f.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:s}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,v(s).then((function(t){t&&t.data&&t.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){f.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:i(n({},o))}];case 5:return m=r.sent(),console.warn(m),p=m.type,f.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:s,errorType:p}),l.includes(p)&&(null===(j=null===(w=null==a?void 0:a.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===j?void 0:j.waterFallRedirectUrl)&&(f.customEvent("tallyman.v1-mo","redirect","waterfall-redirect",{redirect_url:null===(b=null===(g=null==a?void 0:a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===b?void 0:b.waterFallRedirectUrl,errorType:p}),a.location.href=null===(E=null===(I=null==a?void 0:a.pac_analytics)||void 0===I?void 0:I.visitor)||void 0===E?void 0:E.waterFallRedirectUrl),[2,d({errorType:p,productUrl:m.productUrl})];case 6:return[2]}}))}))})),F=o("moFlow/backToStartAction",(function(e,n){var o=n.dispatch,a=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){return r(this,(function(t){try{f.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),o(y())}catch(t){return console.warn(t),[2,a({errorType:"UnexpectedState"})]}return[2]}))}))})),M=a({name:"moFlow",initialState:E,reducers:{},extraReducers:function(t){t.addCase(k.pending,(function(t){t.currentState={type:"MSISDNEntry",result:s()}})).addCase(k.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(k.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),D=M.reducer;M.actions;export{F as backToStartAction,_ as moFlowMatch,D as moFlowReducer,k as submitMSISDNAction,S 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}${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 let type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string; productUrl: string };\n if (result.error_code === null && result.error_code !== '') {\n switch (result.error_code) {\n case '1': // success\n type = 'Success';\n break;\n case '2': // pending\n type = 'Pending';\n break;\n case '10': // ALREADY SUBSCRIBED\n type = 'AlreadySubscribed';\n break;\n case '11': // blacklisted_msisdn\n type = 'BlacklistedMsisdn';\n break;\n case '12': // duplicated_request\n type = 'DuplicatedRequest';\n break;\n case '21': // expired_pin\n type = 'ExpiredPin';\n break;\n case '22': // invalid_pin\n type = 'InvalidPin';\n break;\n case '23': // pin_limit_exceeded\n type = 'PinLimitExceeded';\n break;\n case '24': // pin_generation_error\n type = 'PinGenerationError';\n break;\n case '25': // pin_already_used\n type = 'PinAlreadyUsed';\n break;\n case '31': // inactive_operator\n type = 'InactiveOperator';\n break;\n case '32': // invalid_msisdn\n type = 'InvalidMsisdn';\n break;\n case '33': // invalid_subscription_id\n type = 'InvalidSubscriptionId';\n break;\n case '34': // not_eligible_msisdn\n type = 'NotEligibleMsisdn';\n break;\n case '35': // validation_issue\n type = 'ValidationIssue';\n break;\n case '36': // insufficient_balance\n type = 'InsufficientBalance';\n break;\n case '37': // anti_fraud_error\n type = 'AntiFraudError';\n break;\n case '38': // vas_blocked\n type = 'VasBlocked';\n break;\n case '39': // account_suspended\n type = 'AccountSuspended';\n break;\n case '40': // sales cap reached\n type = 'SalesCapReached';\n break;\n case '50': // subscription_api_failure\n type = 'SubscriptionApiFailure';\n break;\n case '75': // re-subscription blocked\n type = 'ReSubscriptionBlocked';\n break;\n case '76': // re lead blocked\n type = 'ReLeadBlocked';\n break;\n case '99': // unspecified_error\n type = 'UnspecifiedError';\n break;\n default:\n // Handle any error codes not explicitly covered above\n break;\n }\n }\n\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 { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n 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 const errorTypeMap: Record<string, MSISDNEntryErrorTypes> = {\n AlreadySubscribed: 'AlreadySubscribed',\n InvalidMSISDN: 'InvalidMSISDN',\n SalesCapReached: 'SalesCapReached',\n BlacklistedMsisdn: 'BlacklistedMsisdn',\n DuplicatedRequest: 'DuplicatedRequest',\n InactiveOperator: 'InactiveOperator',\n InvalidSubscriptionId: 'InvalidSubscriptionId',\n NotEligibleMsisdn: 'NotEligibleMsisdn',\n ValidationIssue: 'ValidationIssue',\n InsufficientBalance: 'InsufficientBalance',\n AntiFraudError: 'AntiFraudError',\n VasBlocked: 'VasBlocked',\n AccountSuspended: 'AccountSuspended',\n SubscriptionApiFailure: 'SubscriptionApiFailure',\n ReSubscriptionBlocked: 'ReSubscriptionBlocked',\n ReLeadBlocked: 'ReLeadBlocked'\n // If needed, add more error mappings here...\n };\n\n const errorType: MSISDNEntryErrorTypes = errorTypeMap[ex.type] ?? 'UnknownError';\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType: errorType || 'UnknownError'\n });\n\n // Define which error types should trigger a chain redirect\n const redirectErrorTypes: MSISDNEntryErrorTypes[] = [\n 'SalesCapReached',\n 'AntiFraudError',\n 'BlacklistedMsisdn',\n 'VasBlocked',\n 'NotEligibleMsisdn'\n ];\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.capRedirectUrl) {\n tracker.customEvent('tallyman.v1-mo', 'redirect', 'cap-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.capRedirectUrl,\n errorType\n });\n window.location.href = window?.pac_analytics?.visitor?.capRedirectUrl;\n }\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('moFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","search","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","cleanSearchParams","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","language_code","languageCode","partner_form_action","form_action","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","substr","keys","k","match","sent","success","message","error","Error","error_code","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","_o","storeMsisdn","customEvent","catch","warn","ex_1","_f","AlreadySubscribed","InvalidMSISDN","SalesCapReached","BlacklistedMsisdn","DuplicatedRequest","InactiveOperator","InvalidSubscriptionId","NotEligibleMsisdn","ValidationIssue","InsufficientBalance","AntiFraudError","VasBlocked","AccountSuspended","SubscriptionApiFailure","ReSubscriptionBlocked","ReLeadBlocked","recedeInFlow","includes","_g","_h","capRedirectUrl","redirect_url","_k","_j","_m","backToStartAction","_","dispatch","identifyStrategy","ex","moFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs,\n search\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${search ? `&${search}` : ''}&${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { normaliseErrorCode } from '../../utilities/normaliseErrorCode';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n // pick a default based on message, then override with error_code if available\n const defaultType = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMsisdn';\n\n const type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;\n\n // build, augment, log and throw\n const error = new Error(`${type}:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n\n Object.assign(error, {\n type,\n productUrl: result.product_url ?? ''\n });\n\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = 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 { redirectErrorTypes } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n\n const errorType = ex.type as MSISDNEntryErrorTypes;\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType\n });\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.waterFallRedirectUrl) {\n tracker.customEvent('tallyman.v1-mo', 'redirect', 'waterfall-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.waterFallRedirectUrl,\n errorType\n });\n window.location.href = window?.pac_analytics?.visitor?.waterFallRedirectUrl;\n }\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('moFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","search","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","cleanSearchParams","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","language_code","languageCode","partner_form_action","form_action","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","substr","keys","k","match","sent","success","defaultType","message","error_code","normaliseErrorCode","error","Error","assign","productUrl","product_url","__assign","keyword","displayKeyword","mockedMSISDNEntrySuccess","RDS.Success","shortcode","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","console","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_e","strategy","data","tracker","advancedInFlow","keywordAndShortcode","_m","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","redirectErrorTypes","includes","_f","_g","waterFallRedirectUrl","redirect_url","_j","_h","_l","backToStartAction","_","dispatch","identifyStrategy","ex","moFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e={1:"Success",2:"Pending",10:"AlreadySubscribed",11:"BlacklistedMsisdn",12:"DuplicatedRequest",21:"ExpiredPin",22:"InvalidPin",23:"PinLimitExceeded",24:"PinGenerationError",25:"PinAlreadyUsed",31:"InactiveOperator",32:"InvalidMSISDN",33:"InvalidSubscriptionId",34:"NotEligibleMsisdn",35:"ValidationIssue",36:"InsufficientBalance",37:"AntiFraudError",38:"VasBlocked",39:"AccountSuspended",40:"SalesCapReached",50:"SubscriptionApiFailure",75:"ReSubscriptionBlocked",76:"ReLeadBlocked",99:"UnspecifiedError"},i=function(i){var n;return null!==(n=e[i])&&void 0!==n?n:"UnknownError"},n=["AlreadySubscribed","SalesCapReached","AntiFraudError","BlacklistedMsisdn","VasBlocked","NotEligibleMsisdn"];export{i as n,n as r};
2
+ //# sourceMappingURL=normaliseErrorCode-CcFWuZeI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normaliseErrorCode-CcFWuZeI.js","sources":["../src/utilities/normaliseErrorCode.ts"],"sourcesContent":["// Define the allowed return values as a union (optional, but gives you autocomplete/validation)\nexport type ErrorType =\n | 'Success'\n | 'Pending'\n | 'AlreadySubscribed'\n | 'BlacklistedMsisdn'\n | 'DuplicatedRequest'\n | 'ExpiredPin'\n | 'InvalidPin'\n | 'PinLimitExceeded'\n | 'PinGenerationError'\n | 'PinAlreadyUsed'\n | 'InactiveOperator'\n | 'InvalidMSISDN'\n | 'InvalidSubscriptionId'\n | 'NotEligibleMsisdn'\n | 'ValidationIssue'\n | 'InsufficientBalance'\n | 'AntiFraudError'\n | 'VasBlocked'\n | 'AccountSuspended'\n | 'SalesCapReached'\n | 'SubscriptionApiFailure'\n | 'ReSubscriptionBlocked'\n | 'ReLeadBlocked'\n | 'UnspecifiedError'\n | 'UnexpectedState'\n | 'SomethingWentWrong'\n | 'TPayConfirmError'\n | 'UnknownError'\n | string;\n// Map of code → type\nconst ERROR_CODE_MAP: Record<string, ErrorType> = {\n '1': 'Success',\n '2': 'Pending',\n '10': 'AlreadySubscribed',\n '11': 'BlacklistedMsisdn',\n '12': 'DuplicatedRequest',\n '21': 'ExpiredPin',\n '22': 'InvalidPin',\n '23': 'PinLimitExceeded',\n '24': 'PinGenerationError',\n '25': 'PinAlreadyUsed',\n '31': 'InactiveOperator',\n '32': 'InvalidMSISDN',\n '33': 'InvalidSubscriptionId',\n '34': 'NotEligibleMsisdn',\n '35': 'ValidationIssue',\n '36': 'InsufficientBalance',\n '37': 'AntiFraudError',\n '38': 'VasBlocked',\n '39': 'AccountSuspended',\n '40': 'SalesCapReached',\n '50': 'SubscriptionApiFailure',\n '75': 'ReSubscriptionBlocked',\n '76': 'ReLeadBlocked',\n '99': 'UnspecifiedError'\n};\n\n/**\n * Normalise a raw error code string into its semantic ErrorType.\n * Falls back to 'Unknown' if the code isn’t in the map.\n */\nexport const normaliseErrorCode = (errorCode: string): ErrorType => ERROR_CODE_MAP[errorCode] ?? 'UnknownError';\n\nexport const redirectErrorTypes: ErrorType[] = [\n 'AlreadySubscribed',\n 'SalesCapReached',\n 'AntiFraudError',\n 'BlacklistedMsisdn',\n 'VasBlocked',\n 'NotEligibleMsisdn'\n];\n"],"names":["ERROR_CODE_MAP","normaliseErrorCode","errorCode","_a","redirectErrorTypes"],"mappings":"AAgCA,IAAMA,EAA4C,CAChD,EAAK,UACL,EAAK,UACL,GAAM,oBACN,GAAM,oBACN,GAAM,oBACN,GAAM,aACN,GAAM,aACN,GAAM,mBACN,GAAM,qBACN,GAAM,iBACN,GAAM,mBACN,GAAM,gBACN,GAAM,wBACN,GAAM,oBACN,GAAM,kBACN,GAAM,sBACN,GAAM,iBACN,GAAM,aACN,GAAM,mBACN,GAAM,kBACN,GAAM,yBACN,GAAM,wBACN,GAAM,gBACN,GAAM,oBAOKC,EAAqB,SAACC,GAAiC,IAAAC,EAAA,eAAAA,EAAAH,EAAeE,kBAAc,cAAe,EAEnGE,EAAkC,CAC7C,oBACA,kBACA,iBACA,oBACA,aACA"}
@@ -1,2 +1,2 @@
1
- import{__awaiter as r,__generator as e,__assign as t,__read as n}from"tslib";import{createAsyncThunk as o,createSlice as c}from"@reduxjs/toolkit";import{S as i,N as a,L as u,F as s}from"./RemoteDataState-lcf8PfJd.js";import{u as d,t as l}from"./tracker-DaaILhEr.js";import{searchToObject as v}from"./searchToObject.js";import{c as f,f as p}from"./strategySlice-BMNt18ck.js";import{b as _}from"./api-geirVksI.js";import{l as m}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as w}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";var y=function(r){return r((function(r){return r.oneClickFlow.currentState}))};function g(r){var e=r.getRedirectUrl,t=r.subscribe;return function(r){switch(r.type){case"GET_REDIRECT_URL":default:return e(r.result);case"SUBCRIBE_AJAX":return t(r.result)}}}function h(t){var n=t.currentRedirectUrl,o=t.country;return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){switch(e.label){case 0:return"pe"!==o.toLowerCase()?[3,3]:[4,new Promise((function(r){var e=setInterval((function(){window.Empello&&(clearInterval(e),r())}),100)}))];case 1:return e.sent(),"undefined"!=typeof window&&window.Empello?[4,new Promise((function(r){var e;null===(e=window.Empello)||void 0===e||e.getToken((function(e){r(e)}))}))]:[3,3];case 2:return r=e.sent(),[2,d(n,"empello_token",r)];case 3:return[2,n]}}))}))}var E=function(o){var c=o.window,i=o.extraParams,a=o.search,u=o.url;return r(void 0,void 0,void 0,(function(){var r,o,s,d,l;return e(this,(function(e){switch(e.label){case 0:a=w(a),r=(null==c?void 0:c.tid)||"",o=(null==c?void 0:c.shouldBlock)?"false":"true",s=Object.entries(i||{}).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(encodeURIComponent(o))})).join("&"),e.label=1;case 1:return e.trys.push([1,4,,5]),v=u,f=t({sam_evina_tid:r,antifraud_id:c.antifraud_id||"",antifraud_id_js_code:c.antifraud_id_js_code||"",antifraud_id_js_link:c.antifraud_id_js_link||"","is-clean-traffic":o},Object.fromEntries(new URLSearchParams(s))),p=new URLSearchParams(f).toString(),d="".concat(v,"&").concat(p),[4,fetch("".concat(d).concat(a?"&".concat(a):""))];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw l=e.sent(),console.error("Error fetching subscription:",l),l;case 5:return[2]}var v,f,p}))}))},R=function(t){var o=t.window,c=t.country,i=t.slug,a=t.device,u=t.offer,s=t.msisdn,d=t.operator,l=t.rockmanId,v=t.extraParams,f=t.search,p=t.evinaTid;return r(void 0,void 0,void 0,(function(){var r,t,_,m,y,g;return e(this,(function(e){return r="&".concat(Object.keys(v).map((function(r){return v[r]?"".concat(r,"=").concat(v[r]):""})).filter(Boolean).join("&")),f=w(f),t={action:"one-click-subscribe",country:c,slug:i,device:a,offerId:u,msisdn:s,operator:d,rockman_id:l,sam_evina_tid:p,page:encodeURIComponent(null===(g=null==o?void 0:o.location)||void 0===g?void 0:g.href),language_code:o.languageCode||"",partner_transaction_id:o.partner_transaction_id||"",partner_timestamp:o.partner_timestamp||"",partner_cid:o.partner_cid||"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||"",zain_antifraud_id:o.zain_antifraud_id||"",korek_antifraud_id:o.korek_antifraud_id||""},_=Object.entries(t).filter((function(r){var e=n(r,2);return e[0],e[1]})).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)})).join("&"),m=o.DEV_BASE_URL||"",y="".concat(m,"/tallyman/v1/?").concat(_).concat(r).concat(f?"&".concat(f):""),[2,fetch(y).then((function(r){return r.json()}))]}))}))},b=function(r){var e=r,t="ouisys_callback_function".concat(Math.floor(1e4*Math.random()));return new Promise((function(n,o){window[t]=function(r){n(r)},e+=-1===e.indexOf("?")?"?":"&",e+="jsonp=".concat(t);var c=document.createElement("script");c.src=e,c.id=t,document.body.appendChild(c),c.onerror=function(){o(new Error("JSONP request to ".concat(r," failed")))}}))},k=function(o){var c=o.window,i=o.maybeConfig,a=o.extraParams;return r(void 0,void 0,void 0,(function(){var r,o,u,s,d,l,f,p,w,y,g,h,E,R,k,U,j,I,C,T,A,B;return e(this,(function(e){switch(e.label){case 0:if(void 0!==c)return[3,1];throw"javascript: console.error('SSR'); void 6";case 1:return r=i.country,o=i.slug,u=i.queryString,s=i.apiAction,d=void 0!==c&&c.tid?c.tid:"",l=c.pac_analytics.visitor.offer,f=c.location.search.substr(1),p=(f&&f.length>0?[f]:[]).concat((u||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),Object.keys(a).forEach((function(r,e){p.length>0&&(p+="&"),p="".concat(function(r,e,t){void 0===t&&(t="");var n=new RegExp("\\b(".concat(e,"=).*?(&|#|$)"));if(r.search(n)>=0)return r.replace(n,"$1".concat(t,"$2"));var o=r.replace(/[?#]$/,"");return"".concat(o+e,"=").concat(t,"&")}(p,r,a[r])).concat(1===e?"&":"")})),w=c.pac_analytics.visitor.rockmanId,"identify-user"!==s?[3,3]:(h=c.DEV_BASE_URL||"",R="".concat(h,"/tallyman/v1/?action=identify-user&country=").concat(_(r),"&slug=").concat(o,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(w,"&sam_evina_tid=").concat(d,"&").concat(p),[4,b(R)]);case 2:if(!1===(y=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(y.message))).type="NotOn3g",U;return[2,{subscription_url:y.subscription_url||y.redirect_url,action:function(){return S(y.subscription_url,i)}}];case 3:return"he"!==s?[3,5]:(h=c.DEV_BASE_URL||"",R="".concat(h,"/tallyman/v1/?action=he&country=").concat(_(r),"&slug=").concat(o,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(w,"&sam_evina_tid=").concat(d,"&").concat(p),[4,fetch(R).then((function(r){return r.json()}))]);case 4:if(!1===(k=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(k.message))).type="NotOn3g",U;return m(k.source),[2,{redirect_url:k.redirectUrlWithReplacedUniqid}];case 5:if("om"===r.toLowerCase()){if("false"===(g=v(c)).success)throw(U=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",U;return[2,{redirect_url:g.redirect_url||g.url}]}return h=c.DEV_BASE_URL||"",E=new URLSearchParams(t(t({action:"redirect",device:"smart",slug:o,offerId:l,country:_(r),rockman_id:w,sam_evina_tid:d},(null===(j=null==c?void 0:c.location)||void 0===j?void 0:j.href)&&{page:encodeURIComponent(null===(I=null==c?void 0:c.location)||void 0===I?void 0:I.href)}),(null===(T=null===(C=null==c?void 0:c.pac_analytics)||void 0===C?void 0:C.visitor)||void 0===T?void 0:T.ip)&&{ip_address:null===(B=null===(A=null==c?void 0:c.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===B?void 0:B.ip})),R="".concat(h,"/tallyman/v1/?").concat(E.toString()).concat(p?"&".concat(p):""),[4,fetch(R).then((function(r){return r.json()}))];case 6:if(!1===(k=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(k.message))).type="NotOn3g",U;return[2,{redirect_url:k.redirect_url}];case 7:return[2]}}))}))},S=function(o,c,i){return r(void 0,void 0,void 0,(function(){var r,a,u,s,d,l,v,f,p,_,m,w,y,g,h,b,k,S,U,j,I,C,T,A;return e(this,(function(e){switch(e.label){case 0:return r=null,o&&""!==o?(a=c.queryString,u=window.location.search.substr(1),y=(u&&u.length>0?[u]:[]).concat((a||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),[4,E({window:window,extraParams:i,search:y,url:o})]):[3,2];case 1:return e.sent(),[3,4];case 2:return s=t({offer:window.pac_analytics.visitor.offer},c||{}),d=i||{},!1===(null===(S=null===(k=null===(b=null===window||void 0===window?void 0:window.pac_analytics)||void 0===b?void 0:b.visitor)||void 0===k?void 0:k.heMsisdnDecryptedByApiResult)||void 0===S?void 0:S.validateMsisdn)&&(d["skip-validation"]="1"),l=null===(I=null===(j=null===(U=null===window||void 0===window?void 0:window.pac_analytics)||void 0===U?void 0:U.visitor)||void 0===j?void 0:j.heMsisdnDecryptedByApiResult)||void 0===I?void 0:I.msisdn,v=null===(A=null===(T=null===(C=null===window||void 0===window?void 0:window.pac_analytics)||void 0===C?void 0:C.visitor)||void 0===T?void 0:T.heMsisdnDecryptedByApiResult)||void 0===A?void 0:A.operator,f=window.pac_analytics.visitor.rockmanId,p=s.slug,_=s.country,m=s.device,w=s.offer,y=window.location.search.substr(1)||"",g="undefined"!=typeof window&&window.tid?window.tid:"",[4,R({window:window,country:_,slug:p,device:m,offer:w,msisdn:l,operator:v,rockmanId:f,extraParams:d,search:y,evinaTid:g})];case 3:r=e.sent(),e.label=4;case 4:if(!1===r.success)throw(h=new Error("Error in subscribe() one-click-subscribe action:\n".concat(r.message))).type="ALREADY SUBSCRIBED"===r.message?"AlreadySubscribed":"SubscriptionError",h.productUrl=r.product_url?r.product_url:"",h.message=r.message,h;return[2,r.product_url||r.redirect_url]}}))}))},U=function(t,o,c){return r(void 0,void 0,void 0,(function(){var r,i,a,u,s,d,l,v,f,p,m,w,y,g,h;return e(this,(function(e){return void 0===t?[2,"javascript: console.error('SSR'); void 6"]:(r=o.country,i=o.slug,a=o.queryString,u=t.pac_analytics.visitor.offer,s=t.location.search.substr(1),d=(s&&s.length>0?[s]:[]).concat((a||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),l=c?"&".concat(Object.keys(c).map((function(r){return"".concat(r,"=").concat(c[r])})).join("&")):"",v=t.location.href.split("/")[3].split("?")[0],f=void 0!==t&&t.tid?t.tid:"",p=(null===(y=null===(w=null==t?void 0:t.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===y?void 0:y.bupperRedirectHost)?t.atob(null===(h=null===(g=null==t?void 0:t.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===h?void 0:h.bupperRedirectHost):null,m=p||t.DEV_BASE_URL_BUPPER||"",[2,"".concat(m,"/").concat(_(r),"/").concat(i,"?offer=").concat(u,"&atmobirun=1&rockman_id=").concat(t.pac_analytics.visitor.rockmanId,"&redirPixels=").concat(t.location.host,"&sam_evina_tid=").concat(f,"&x-xcid=").concat(v).concat(l,"&").concat(d)])}))}))},j={currentState:{type:"GET_REDIRECT_URL",result:i({redirectUrl:"/product"})}},I={currentState:{type:"SUBCRIBE_AJAX",result:a()}},C={currentState:{type:"GET_REDIRECT_URL",result:a()}},T=function(r){var e=v(r);if(!e["mock-flow"])return C;switch(e["current-state"]){case"redirect-url-success-state":return j;case"subscribe-ajax-state":return I;default:return console.error("Mock Flow not supported"),C}}(window),A=o("oneClickFlow/getRedirectUrlAction",(function(n,o){var c=n.window,u=n.isGetRedirectBupperWay,s=n.extraParams,d=n.autoRedirect,_=o.getState,m=o.dispatch,w=o.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,o,y,g,E,R,b,S,j,I,C,A,B,F,D,L,x,P,O,G;return e(this,(function(e){switch(e.label){case 0:if(r=_(),v(c)["mock-flow"])return[2,T.currentState];if(!(null===(x=null===(L=null===(D=null==r?void 0:r.strategy)||void 0===D?void 0:D.currentState)||void 0===L?void 0:L.data)||void 0===x?void 0:x.config))return[2,w({errorType:"UnexpectedState"})];n=r.strategy.currentState.data,o=n.config,y=n.subscription_url,g=n.redirect_url,E=n.operator,R=n.strategy,b=n.defaultConfig,S=n.defaultFlowType,e.label=1;case 1:return e.trys.push([1,10,,11]),!0!==u?[3,4]:[4,U(c,o,t(t({},E&&{operator:E}),s))];case 2:return[4,h({currentRedirectUrl:e.sent(),country:o.country})];case 3:return j=e.sent(),l.customEvent("Flow","advance-auto","redirect-success",{redirect_url:j}),!0!==c.isAutoFraudScreener?!0===d?(l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:j}),setTimeout((function(){c.location.href=j}),0),[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:j})}]):[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:j})}]:(I=setInterval((function(){c.isEvinaSessionChecked&&(clearInterval(I),l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:j}),setTimeout((function(){c.location.href=j}),0))}),100),[3,9]);case 4:return y&&null!=y||(null===(G=null===(O=null===(P=null==c?void 0:c.pac_analytics)||void 0===P?void 0:P.visitor)||void 0===O?void 0:O.heMsisdnDecryptedByApiResult)||void 0===G?void 0:G.msisdn)?[2,{type:"SUBCRIBE_AJAX",result:a()}]:g?(l.customEvent("Flow","advance-auto","redirect-success",{redirect_url:g}),[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:g})}]):(l.advancedInFlow("tallyman.v1-one-click","get-redirect-url"),[4,k({window:c,maybeConfig:o,extraParams:t(t({},E&&{operator:E}),s)})]);case 5:return C=e.sent().redirect_url,l.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),C?[4,h({currentRedirectUrl:C,country:o.country})]:[3,7];case 6:return B=e.sent(),[3,8];case 7:B=null,e.label=8;case 8:if(!(A=B))return l.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),"one-click"!==R&&m(f({type:p[S],data:{config:b.flowConfig}})),[2,w({errorType:"UnknownError",message:"Could not get rediredt url",error:"Could not get rediredt url"})];if(l.customEvent("Flow","advance-auto","redirect-success",{updated_redirect_url:A}),!(!0===d||!0===c.isAutoFraudScreener&&A))return[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:A})}];l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{updated_redirect_url:A}),setTimeout((function(){c.location.href=A}),0),e.label=9;case 9:return[3,11];case 10:return F=e.sent(),console.warn(F),l.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),"one-click"!==R&&m(f({type:p[S],data:{config:b.flowConfig}})),[2,w({errorType:"UnknownError",message:F.message,error:F.toString()})];case 11:return[2]}}))}))})),B=o("oneClickFlow/subscribeUrlAction",(function(t,n){var o=t.window,c=t.autoRedirect,a=t.extraParams,u=n.getState,s=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,d,v,f,p,_,m;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(m=null===(_=null===(p=null==r?void 0:r.strategy)||void 0===p?void 0:p.currentState)||void 0===_?void 0:_.data)||void 0===m?void 0:m.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data,n=t.subscription_url,d=t.config,e.label=1;case 1:return e.trys.push([1,3,,4]),l.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,S(n,d,a)];case 2:return v=e.sent(),l.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:v}),!0===c&&(l.customEvent("Flow","advance-auto","click-product-url",{product_url:v}),o.location.href=v),[2,{type:"SUBCRIBE_AJAX",result:i({productUrl:v})}];case 3:return f=e.sent(),console.warn(f),l.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:f.toString()}),[2,s({errorType:"UnknownError",error:f.toString(),productUrl:f.productUrl,message:f.message||""})];case 4:return[2]}}))}))})),F=c({name:"oneClickFlow",initialState:T,reducers:{},extraReducers:function(r){r.addCase(A.pending,(function(r){r.currentState={type:"GET_REDIRECT_URL",result:u()}})).addCase(A.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(A.rejected,(function(r,e){r.currentState={type:"GET_REDIRECT_URL",result:s(e.payload)}})).addCase(B.pending,(function(r){r.currentState={type:"SUBCRIBE_AJAX",result:u()}})).addCase(B.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(B.rejected,(function(r,e){r.currentState={type:"SUBCRIBE_AJAX",result:s(e.payload)}}))}}),D=F.reducer;F.actions;export{A as getRedirectUrlAction,g as oneClickFlowMatch,D as oneClickFlowReducer,B as subscribeUrlAction,y as useOneClickFlowState};
1
+ import{__awaiter as r,__generator as e,__assign as t,__read as n}from"tslib";import{createAsyncThunk as o,createSlice as i}from"@reduxjs/toolkit";import{S as c,N as a,L as u,F as l}from"./RemoteDataState-lcf8PfJd.js";import{u as s,t as d}from"./tracker-DaaILhEr.js";import{searchToObject as v}from"./searchToObject.js";import{c as f,f as p}from"./strategySlice-BMNt18ck.js";import{b as _}from"./api-geirVksI.js";import{l as m}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as w}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";var y=function(r){return r((function(r){return r.oneClickFlow.currentState}))};function g(r){var e=r.getRedirectUrl,t=r.subscribe;return function(r){switch(r.type){case"GET_REDIRECT_URL":default:return e(r.result);case"SUBCRIBE_AJAX":return t(r.result)}}}function h(t){var n=t.currentRedirectUrl,o=t.country;return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){switch(e.label){case 0:return"pe"!==o.toLowerCase()?[3,3]:[4,new Promise((function(r){var e=setInterval((function(){window.Empello&&(clearInterval(e),r())}),100)}))];case 1:return e.sent(),"undefined"!=typeof window&&window.Empello?[4,new Promise((function(r){var e;null===(e=window.Empello)||void 0===e||e.getToken((function(e){r(e)}))}))]:[3,3];case 2:return r=e.sent(),[2,s(n,"empello_token",r)];case 3:return[2,n]}}))}))}var E=function(o){var i=o.window,c=o.extraParams,a=o.search,u=o.url;return r(void 0,void 0,void 0,(function(){var r,o,l,s,d;return e(this,(function(e){switch(e.label){case 0:a=w(a),r=(null==i?void 0:i.tid)||"",o=(null==i?void 0:i.shouldBlock)?"false":"true",l=Object.entries(c||{}).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(encodeURIComponent(o))})).join("&"),e.label=1;case 1:return e.trys.push([1,4,,5]),v=u,f=t({sam_evina_tid:r,antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"","is-clean-traffic":o},Object.fromEntries(new URLSearchParams(l))),p=new URLSearchParams(f).toString(),s="".concat(v,"&").concat(p),[4,fetch("".concat(s).concat(a?"&".concat(a):""))];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw d=e.sent(),console.error("Error fetching subscription:",d),d;case 5:return[2]}var v,f,p}))}))},R=function(t){var o=t.window,i=t.country,c=t.slug,a=t.device,u=t.offer,l=t.msisdn,s=t.operator,d=t.rockmanId,v=t.extraParams,f=t.search,p=t.evinaTid;return r(void 0,void 0,void 0,(function(){var r,t,_,m,y,g;return e(this,(function(e){return r="&".concat(Object.keys(v).map((function(r){return v[r]?"".concat(r,"=").concat(v[r]):""})).filter(Boolean).join("&")),f=w(f),t={action:"one-click-subscribe",country:i,slug:c,device:a,offerId:u,msisdn:l,operator:s,rockman_id:d,sam_evina_tid:p,page:encodeURIComponent(null===(g=null==o?void 0:o.location)||void 0===g?void 0:g.href),language_code:o.languageCode||"",partner_transaction_id:o.partner_transaction_id||"",partner_timestamp:o.partner_timestamp||"",partner_cid:o.partner_cid||"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||"",zain_antifraud_id:o.zain_antifraud_id||"",korek_antifraud_id:o.korek_antifraud_id||""},_=Object.entries(t).filter((function(r){var e=n(r,2);return e[0],e[1]})).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)})).join("&"),m=o.DEV_BASE_URL||"",y="".concat(m,"/tallyman/v1/?").concat(_).concat(r).concat(f?"&".concat(f):""),[2,fetch(y).then((function(r){return r.json()}))]}))}))},b=function(r){var e=r,t="ouisys_callback_function".concat(Math.floor(1e4*Math.random()));return new Promise((function(n,o){window[t]=function(r){n(r)},e+=-1===e.indexOf("?")?"?":"&",e+="jsonp=".concat(t);var i=document.createElement("script");i.src=e,i.id=t,document.body.appendChild(i),i.onerror=function(){o(new Error("JSONP request to ".concat(r," failed")))}}))},k=function(o){var i=o.window,c=o.maybeConfig,a=o.extraParams;return r(void 0,void 0,void 0,(function(){var r,o,u,l,s,d,f,p,w,y,g,h,E,R,k,U,j,I,C,T,A,B,F,D,L,x;return e(this,(function(e){switch(e.label){case 0:if(void 0!==i)return[3,1];throw"javascript: console.error('SSR'); void 6";case 1:return r=c.country,o=c.slug,u=c.queryString,l=c.apiAction,s=void 0!==i&&i.tid?i.tid:"",d=i.pac_analytics.visitor.offer,f=i.location.search.substr(1),p=(f&&f.length>0?[f]:[]).concat((u||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),Object.keys(a).forEach((function(r,e){p.length>0&&(p+="&"),p="".concat(function(r,e,t){void 0===t&&(t="");var n=new RegExp("\\b(".concat(e,"=).*?(&|#|$)"));if(r.search(n)>=0)return r.replace(n,"$1".concat(t,"$2"));var o=r.replace(/[?#]$/,"");return"".concat(o+e,"=").concat(t,"&")}(p,r,a[r])).concat(1===e?"&":"")})),w=i.pac_analytics.visitor.rockmanId,"identify-user"!==l?[3,3]:(h=i.DEV_BASE_URL||"",R="".concat(h,"/tallyman/v1/?action=identify-user&country=").concat(_(r),"&slug=").concat(o,"&device=").concat("smart","&offerId=").concat(d,"&rockman_id=").concat(w,"&sam_evina_tid=").concat(s,"&").concat(p),[4,b(R)]);case 2:if(!1===(y=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(y.message))).type="NotOn3g",U;return[2,{subscription_url:y.subscription_url||y.redirect_url,action:function(){return S(y.subscription_url,c)}}];case 3:return"he"!==l?[3,5]:(h=i.DEV_BASE_URL||"",R="".concat(h,"/tallyman/v1/?action=he&country=").concat(_(r),"&slug=").concat(o,"&device=").concat("smart","&offerId=").concat(d,"&rockman_id=").concat(w,"&sam_evina_tid=").concat(s,"&").concat(p),[4,fetch(R).then((function(r){return r.json()}))]);case 4:if(!1===(k=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(k.message))).type="NotOn3g",U;return m(k.source),[2,{redirect_url:k.redirectUrlWithReplacedUniqid}];case 5:if("om"===r.toLowerCase()){if("false"===(g=v(i)).success)throw(U=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",U;return[2,{redirect_url:g.redirect_url||g.url}]}return h=i.DEV_BASE_URL||"",E=new URLSearchParams(t(t(t({action:"redirect",device:"smart",slug:o,offerId:d,country:_(r),rockman_id:w,sam_evina_tid:s},(null===(j=null==i?void 0:i.location)||void 0===j?void 0:j.href)&&{page:encodeURIComponent(null===(I=null==i?void 0:i.location)||void 0===I?void 0:I.href)}),(null===(T=null===(C=null==i?void 0:i.pac_analytics)||void 0===C?void 0:C.visitor)||void 0===T?void 0:T.ip)&&{ip_address:null===(B=null===(A=null==i?void 0:i.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===B?void 0:B.ip}),(null===(D=null===(F=null==i?void 0:i.pac_analytics)||void 0===F?void 0:F.visitor)||void 0===D?void 0:D.ipRangeOperator)&&{ip_range_operator:null===(x=null===(L=null==i?void 0:i.pac_analytics)||void 0===L?void 0:L.visitor)||void 0===x?void 0:x.ipRangeOperator})),R="".concat(h,"/tallyman/v1/?").concat(E.toString()).concat(p?"&".concat(p):""),[4,fetch(R).then((function(r){return r.json()}))];case 6:if(!1===(k=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(k.message))).type="NotOn3g",U;return[2,{redirect_url:k.redirect_url}];case 7:return[2]}}))}))},S=function(o,i,c){return r(void 0,void 0,void 0,(function(){var r,a,u,l,s,d,v,f,p,_,m,w,y,g,h,b,k,S,U,j,I,C,T,A;return e(this,(function(e){switch(e.label){case 0:return r=null,o&&""!==o?(a=i.queryString,u=window.location.search.substr(1),y=(u&&u.length>0?[u]:[]).concat((a||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),[4,E({window:window,extraParams:c,search:y,url:o})]):[3,2];case 1:return e.sent(),[3,4];case 2:return l=t({offer:window.pac_analytics.visitor.offer},i||{}),s=c||{},!1===(null===(S=null===(k=null===(b=null===window||void 0===window?void 0:window.pac_analytics)||void 0===b?void 0:b.visitor)||void 0===k?void 0:k.heMsisdnDecryptedByApiResult)||void 0===S?void 0:S.validateMsisdn)&&(s["skip-validation"]="1"),d=null===(I=null===(j=null===(U=null===window||void 0===window?void 0:window.pac_analytics)||void 0===U?void 0:U.visitor)||void 0===j?void 0:j.heMsisdnDecryptedByApiResult)||void 0===I?void 0:I.msisdn,v=null===(A=null===(T=null===(C=null===window||void 0===window?void 0:window.pac_analytics)||void 0===C?void 0:C.visitor)||void 0===T?void 0:T.heMsisdnDecryptedByApiResult)||void 0===A?void 0:A.operator,f=window.pac_analytics.visitor.rockmanId,p=l.slug,_=l.country,m=l.device,w=l.offer,y=window.location.search.substr(1)||"",g="undefined"!=typeof window&&window.tid?window.tid:"",[4,R({window:window,country:_,slug:p,device:m,offer:w,msisdn:d,operator:v,rockmanId:f,extraParams:s,search:y,evinaTid:g})];case 3:r=e.sent(),e.label=4;case 4:if(!1===r.success)throw(h=new Error("Error in subscribe() one-click-subscribe action:\n".concat(r.message))).type="ALREADY SUBSCRIBED"===r.message?"AlreadySubscribed":"SubscriptionError",h.productUrl=r.product_url?r.product_url:"",h.message=r.message,h;return[2,r.product_url||r.redirect_url]}}))}))},U=function(t,o,i){return r(void 0,void 0,void 0,(function(){var r,c,a,u,l,s,d,v,f,p,m,w,y,g,h;return e(this,(function(e){return void 0===t?[2,"javascript: console.error('SSR'); void 6"]:(r=o.country,c=o.slug,a=o.queryString,u=t.pac_analytics.visitor.offer,l=t.location.search.substr(1),s=(l&&l.length>0?[l]:[]).concat((a||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),d=i?"&".concat(Object.keys(i).map((function(r){return"".concat(r,"=").concat(i[r])})).join("&")):"",v=t.location.href.split("/")[3].split("?")[0],f=void 0!==t&&t.tid?t.tid:"",p=(null===(y=null===(w=null==t?void 0:t.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===y?void 0:y.bupperRedirectHost)?t.atob(null===(h=null===(g=null==t?void 0:t.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===h?void 0:h.bupperRedirectHost):null,m=p||t.DEV_BASE_URL_BUPPER||"",[2,"".concat(m,"/").concat(_(r),"/").concat(c,"?offer=").concat(u,"&atmobirun=1&rockman_id=").concat(t.pac_analytics.visitor.rockmanId,"&redirPixels=").concat(t.location.host,"&sam_evina_tid=").concat(f,"&x-xcid=").concat(v).concat(d,"&").concat(s)])}))}))},j={currentState:{type:"GET_REDIRECT_URL",result:c({redirectUrl:"/product"})}},I={currentState:{type:"SUBCRIBE_AJAX",result:a()}},C={currentState:{type:"GET_REDIRECT_URL",result:a()}},T=function(r){var e=v(r);if(!e["mock-flow"])return C;switch(e["current-state"]){case"redirect-url-success-state":return j;case"subscribe-ajax-state":return I;default:return console.error("Mock Flow not supported"),C}}(window),A=o("oneClickFlow/getRedirectUrlAction",(function(n,o){var i=n.window,u=n.isGetRedirectBupperWay,l=n.extraParams,s=n.autoRedirect,_=o.getState,m=o.dispatch,w=o.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,o,y,g,E,R,b,S,j,I,C,A,B,F,D,L,x,P,O,G;return e(this,(function(e){switch(e.label){case 0:if(r=_(),v(i)["mock-flow"])return[2,T.currentState];if(!(null===(x=null===(L=null===(D=null==r?void 0:r.strategy)||void 0===D?void 0:D.currentState)||void 0===L?void 0:L.data)||void 0===x?void 0:x.config))return[2,w({errorType:"UnexpectedState"})];n=r.strategy.currentState.data,o=n.config,y=n.subscription_url,g=n.redirect_url,E=n.operator,R=n.strategy,b=n.defaultConfig,S=n.defaultFlowType,e.label=1;case 1:return e.trys.push([1,10,,11]),!0!==u?[3,4]:[4,U(i,o,t(t({},E&&{operator:E}),l))];case 2:return[4,h({currentRedirectUrl:e.sent(),country:o.country})];case 3:return j=e.sent(),d.customEvent("Flow","advance-auto","redirect-success",{redirect_url:j}),!0!==i.isAutoFraudScreener?!0===s?(d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:j}),setTimeout((function(){i.location.href=j}),0),[2,{type:"GET_REDIRECT_URL",result:c({redirectUrl:j})}]):[2,{type:"GET_REDIRECT_URL",result:c({redirectUrl:j})}]:(I=setInterval((function(){i.isEvinaSessionChecked&&(clearInterval(I),d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:j}),setTimeout((function(){i.location.href=j}),0))}),100),[3,9]);case 4:return y&&null!=y||(null===(G=null===(O=null===(P=null==i?void 0:i.pac_analytics)||void 0===P?void 0:P.visitor)||void 0===O?void 0:O.heMsisdnDecryptedByApiResult)||void 0===G?void 0:G.msisdn)?[2,{type:"SUBCRIBE_AJAX",result:a()}]:g?(d.customEvent("Flow","advance-auto","redirect-success",{redirect_url:g}),[2,{type:"GET_REDIRECT_URL",result:c({redirectUrl:g})}]):(d.advancedInFlow("tallyman.v1-one-click","get-redirect-url"),[4,k({window:i,maybeConfig:o,extraParams:t(t({},E&&{operator:E}),l)})]);case 5:return C=e.sent().redirect_url,d.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),C?[4,h({currentRedirectUrl:C,country:o.country})]:[3,7];case 6:return B=e.sent(),[3,8];case 7:B=null,e.label=8;case 8:if(!(A=B))return d.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),"one-click"!==R&&m(f({type:p[S],data:{config:b.flowConfig}})),[2,w({errorType:"UnknownError",message:"Could not get rediredt url",error:"Could not get rediredt url"})];if(d.customEvent("Flow","advance-auto","redirect-success",{updated_redirect_url:A}),!(!0===s||!0===i.isAutoFraudScreener&&A))return[2,{type:"GET_REDIRECT_URL",result:c({redirectUrl:A})}];d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{updated_redirect_url:A}),setTimeout((function(){i.location.href=A}),0),e.label=9;case 9:return[3,11];case 10:return F=e.sent(),console.warn(F),d.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),"one-click"!==R&&m(f({type:p[S],data:{config:b.flowConfig}})),[2,w({errorType:"UnknownError",message:F.message,error:F.toString()})];case 11:return[2]}}))}))})),B=o("oneClickFlow/subscribeUrlAction",(function(t,n){var o=t.window,i=t.autoRedirect,a=t.extraParams,u=n.getState,l=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,s,v,f,p,_,m;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(m=null===(_=null===(p=null==r?void 0:r.strategy)||void 0===p?void 0:p.currentState)||void 0===_?void 0:_.data)||void 0===m?void 0:m.config))return[2,l({errorType:"UnexpectedState"})];t=r.strategy.currentState.data,n=t.subscription_url,s=t.config,e.label=1;case 1:return e.trys.push([1,3,,4]),d.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,S(n,s,a)];case 2:return v=e.sent(),d.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:v}),!0===i&&(d.customEvent("Flow","advance-auto","click-product-url",{product_url:v}),o.location.href=v),[2,{type:"SUBCRIBE_AJAX",result:c({productUrl:v})}];case 3:return f=e.sent(),console.warn(f),d.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:f.toString()}),[2,l({errorType:"UnknownError",error:f.toString(),productUrl:f.productUrl,message:f.message||""})];case 4:return[2]}}))}))})),F=i({name:"oneClickFlow",initialState:T,reducers:{},extraReducers:function(r){r.addCase(A.pending,(function(r){r.currentState={type:"GET_REDIRECT_URL",result:u()}})).addCase(A.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(A.rejected,(function(r,e){r.currentState={type:"GET_REDIRECT_URL",result:l(e.payload)}})).addCase(B.pending,(function(r){r.currentState={type:"SUBCRIBE_AJAX",result:u()}})).addCase(B.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(B.rejected,(function(r,e){r.currentState={type:"SUBCRIBE_AJAX",result:l(e.payload)}}))}}),D=F.reducer;F.actions;export{A as getRedirectUrlAction,g as oneClickFlowMatch,D as oneClickFlowReducer,B as subscribeUrlAction,y as useOneClickFlowState};
2
2
  //# sourceMappingURL=oneClickFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oneClickFlow.js","sources":["../src/flows/oneClickFlow/hooks/useOneClickFlowState.ts","../src/flows/oneClickFlow/match.ts","../src/utilities/addEmpelloToken.ts","../src/utilities/replaceUrlParam.ts","../src/flows/oneClickFlow/api.ts","../src/flows/oneClickFlow/main.ts","../src/flows/oneClickFlow/oneClickFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useOneClickFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.oneClickFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IGETREDIRECTURLFailure,\n IGETREDIRECTURLSuccess,\n OneClickFlowCurrentState,\n SubscribeFailure,\n SubscribeSuccess\n} from '../../sharedFlowTypes/OneClickTypes';\n\nfunction oneClickFlowMatch<R>({\n getRedirectUrl,\n subscribe\n}: {\n getRedirectUrl: (rds: RDS.RemoteDataState<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>) => R;\n subscribe?: (rds: RDS.RemoteDataState<SubscribeFailure, SubscribeSuccess>) => R;\n}): (state: OneClickFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'GET_REDIRECT_URL':\n return getRedirectUrl(state.result);\n case 'SUBCRIBE_AJAX':\n return subscribe(state.result);\n default:\n // TODO - this should be an error or something\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return getRedirectUrl(state.result);\n }\n };\n}\n\nexport { oneClickFlowMatch };\n","import { updateUrlParameter } from '../pacman/queryString';\n\nexport async function addEmpelloToken({\n currentRedirectUrl,\n country\n}: {\n currentRedirectUrl: string;\n country: string;\n}) {\n if (country.toLowerCase() === 'pe') {\n // Empello script is added on server\n\n await new Promise<void>((resolve) => {\n // check if empello script is loaded and available\n const checkEmpelloAvailability = setInterval(() => {\n if (window.Empello) {\n clearInterval((checkEmpelloAvailability as unknown) as number);\n resolve();\n }\n }, 100);\n });\n if (typeof window !== 'undefined' && window.Empello) {\n // call getToken function from empello\n const token = await new Promise<string>((resolve) => {\n window.Empello?.getToken((empelloToken: string) => {\n resolve(empelloToken);\n });\n });\n\n const url = updateUrlParameter(currentRedirectUrl, 'empello_token', token);\n return url;\n }\n }\n\n return currentRedirectUrl;\n}\n","export const replaceUrlParam = (url: string, paramName: string, paramValue = '') => {\n const pattern = new RegExp(`\\\\b(${paramName}=).*?(&|#|$)`);\n if (url.search(pattern) >= 0) {\n return url.replace(pattern, `$1${paramValue}$2`);\n }\n const newUrl = url.replace(/[?#]$/, '');\n return `${newUrl + paramName}=${paramValue}&`;\n};\n","import { IHash } from '../../common-types/IHash';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const getRedirectAPI = () => {};\n\nconst getUrlWithParams = (baseURL: string, params: IHash) => {\n const queryParams = new URLSearchParams(params).toString();\n return `${baseURL}&${queryParams}`;\n};\n\nexport const oneClickSubscribeByUrlFromParams = async ({\n window,\n extraParams,\n search,\n url\n}: {\n window: Window;\n extraParams?: IHash;\n search: string;\n url: string;\n}) => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const evinaTid = window?.tid || '';\n const isCleanTraffic = window?.shouldBlock ? 'false' : 'true';\n\n const extraParamsQs = Object.entries(extraParams || {})\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n try {\n const resultUrl = getUrlWithParams(url, {\n sam_evina_tid: evinaTid,\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 'is-clean-traffic': isCleanTraffic,\n ...Object.fromEntries(new URLSearchParams(extraParamsQs))\n });\n\n const response = await fetch(`${resultUrl}${search ? `&${search}` : ''}`);\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error fetching subscription:', error);\n throw error; // Rethrow or handle error as needed\n }\n};\n\nexport const oneClickSubscribe = async ({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n operator,\n rockmanId,\n extraParams,\n search,\n evinaTid\n}: {\n window?: Window;\n country: string;\n slug: string;\n device: 'smart' | 'feature';\n offer: string;\n msisdn: string;\n operator: string;\n rockmanId: string;\n extraParams: IHash;\n search: string;\n evinaTid?: string;\n}): Promise<any> => {\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: 'one-click-subscribe',\n country,\n slug,\n device,\n offerId: offer,\n msisdn,\n operator,\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\n antifraud_id: window.antifraud_id || '',\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n","import { IError } from '../../common-types/IError';\nimport { IHash } from '../../common-types/IHash';\nimport { IIDentifyUserResult, ILinkExtraParams, ISubscribeResult } from '../../sharedFlowTypes/OneClickTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { replaceUrlParam } from '../../utilities/replaceUrlParam';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { oneClickSubscribe, oneClickSubscribeByUrlFromParams } from './api';\n\nexport const additionalQueryString = `msisdnSubmitted=Y&legalCheckbox=Y&incentivizedCheckbox=Y&op_confirmCheckbox=N`;\n\nconst fetchJsonp: <T>(_url: string) => Promise<T> = (_url: string) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n // @ts-ignore\n window[ouisys_callback_function] = (arg) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\n\nexport const getRedirectUrl = async ({\n window,\n maybeConfig,\n extraParams\n}: {\n window: Window;\n maybeConfig: IConfig;\n extraParams?: ILinkExtraParams;\n}): Promise<{\n subscription_url?: string;\n redirect_url?: string;\n action?: () => Promise<string>;\n}> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-throw-literal, no-script-url\n throw \"javascript: console.error('SSR'); void 6\";\n } else {\n const { country, slug, queryString, apiAction } = maybeConfig;\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n let search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n Object.keys(extraParams).forEach((element, index) => {\n // Check if search already has query parameters\n if (search.length > 0) {\n // If there are existing parameters, add '&' before appending the new one\n search += '&';\n }\n search = `${replaceUrlParam(search, element, extraParams[element])}${index === 1 ? '&' : ''}`;\n });\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (apiAction === 'identify-user') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=identify-user&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetchJsonp<IIDentifyUserResult>(url);\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n action: () => subscribe(result.subscription_url, maybeConfig)\n };\n }\n } else if (apiAction === 'he') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=he&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n loadScriptInnerHtml(result.source);\n return { redirect_url: result.redirectUrlWithReplacedUniqid };\n }\n } else {\n if (country.toLowerCase() === 'om') {\n const searchObj = searchToObject(window) as {\n redirect_url: string;\n url: string;\n msisdn: string;\n success: 'true' | 'false';\n };\n if (searchObj.success === 'false') {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: searchObj.redirect_url || searchObj.url };\n }\n }\n const host = (window as Window).DEV_BASE_URL || '';\n\n const params = new URLSearchParams({\n action: 'redirect',\n device: 'smart',\n slug,\n offerId: offer,\n country: bupperizeCountry(country),\n rockman_id: rockmanId,\n sam_evina_tid: evinaTid,\n ...(window?.location?.href && { page: encodeURIComponent(window?.location?.href) }),\n ...(window?.pac_analytics?.visitor?.ip && { ip_address: window?.pac_analytics?.visitor?.ip })\n });\n\n const url = `${host}/tallyman/v1/?${params.toString()}${search ? `&${search}` : ''}`;\n const result = await fetch(url).then((x) => x.json());\n\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: result.redirect_url };\n }\n }\n }\n};\n\nexport const subscribe: (url: string, maybeConfig: IConfig, extraParams?: IHash) => Promise<string> = async (\n url: string,\n maybeConfig: IConfig,\n extraParams?: IHash\n) => {\n let result: ISubscribeResult = null;\n\n if (url && url !== '') {\n const { queryString } = maybeConfig;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n await oneClickSubscribeByUrlFromParams({\n window,\n extraParams,\n search,\n url\n });\n } else {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n const newExtraParams = extraParams || {};\n const isSkipValidation = window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.validateMsisdn === false;\n // @ts-ignore\n if (isSkipValidation) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n const msisdn = window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.msisdn;\n const operator = window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.operator;\n\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 evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n result = await oneClickSubscribe({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n operator,\n rockmanId,\n extraParams: newExtraParams,\n search,\n evinaTid\n });\n }\n\n if (result.success === false) {\n const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as {\n productUrl: string;\n } & IError;\n subscribeError.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'SubscriptionError';\n subscribeError.productUrl = result.product_url ? result.product_url : '';\n subscribeError.message = result.message;\n throw subscribeError;\n } else {\n return result.product_url || result.redirect_url;\n }\n};\n\nexport const getRedirectUrlBupperWay = async (\n window: Window,\n maybeConfig: IConfig,\n extraParams?: ILinkExtraParams\n): Promise<string> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-script-url\n return \"javascript: console.error('SSR'); void 6\";\n }\n const { country, slug, queryString } = maybeConfig;\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // one click flow must use http not https\n const xcid = window.location.href.split('/')[3].split('?')[0];\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const baseHostBupper = window?.pac_analytics?.visitor?.bupperRedirectHost\n ? window.atob(window?.pac_analytics?.visitor?.bupperRedirectHost)\n : null;\n const host = baseHostBupper || (window as Window).DEV_BASE_URL_BUPPER || '';\n\n return `${host}/${bupperizeCountry(country)}/${slug}?offer=${offer}&atmobirun=1&rockman_id=${\n window.pac_analytics.visitor.rockmanId\n }&redirPixels=${window.location.host}&sam_evina_tid=${evinaTid}&x-xcid=${xcid}${extraParamsQs}&${search}`;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n AJAXSUBSCRIBEState,\n GETREDIRECTUrlState,\n IGETREDIRECTURLFailure,\n OneClickFlowState,\n SubscribeFailure\n} from '../../sharedFlowTypes/OneClickTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { addEmpelloToken } from '../../utilities/addEmpelloToken';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { flowMapping } from '../strategy/main';\nimport { setStrategyExtraData } from '../strategy/strategySlice';\nimport { getRedirectUrl, getRedirectUrlBupperWay, subscribe } from './main';\n\nexport const mockedRedirectUrlSuccessState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n // @ts-ignore\n result: RDS.Success<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>({ redirectUrl: '/product' })\n }\n};\n\nexport const mockedSubscribeAjaxState: OneClickFlowState = {\n currentState: {\n type: 'SUBCRIBE_AJAX',\n // @ts-ignore\n result: RDS.NothingYet()\n }\n};\n\nconst defaultInitialState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\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 'redirect-url-success-state':\n return mockedRedirectUrlSuccessState;\n case 'subscribe-ajax-state':\n return mockedSubscribeAjaxState;\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 GetRedirectUrlArgs {\n window: Window;\n extraParams?: IHash;\n autoRedirect?: boolean;\n isGetRedirectBupperWay?: boolean;\n ignoreUrlParams?: boolean;\n}\n/**\n * getRedirectUrlAction\n * @returns {type: ' 'oneClickFlow/getRedirectUrlAction', payload: {type: PossibleTypes, result: GETREDIRECTUrlState}}\n \n * Calls redirect api to get a redirect url for the user to be redirected to\n * Can also create a bupper redirect url\n */\nexport const getRedirectUrlAction = createAsyncThunk<\n GETREDIRECTUrlState,\n GetRedirectUrlArgs,\n {\n rejectValue: IGETREDIRECTURLFailure;\n }\n>(\n 'oneClickFlow/getRedirectUrlAction',\n // @ts-ignore\n async ({ window, isGetRedirectBupperWay, extraParams, autoRedirect }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n return initialState.currentState;\n }\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n\n const {\n config,\n subscription_url,\n redirect_url,\n operator,\n strategy,\n defaultConfig,\n defaultFlowType\n } = state.strategy.currentState.data;\n try {\n if (isGetRedirectBupperWay === true) {\n const redirectUrl = await getRedirectUrlBupperWay(window, config, {\n ...(operator && { operator }),\n ...extraParams\n });\n\n // add empellow token for specific country\n const updatedRedirectUrl = await addEmpelloToken({\n currentRedirectUrl: redirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: updatedRedirectUrl });\n if (window.isAutoFraudScreener === true) {\n // Wait for Evina to Check Fraud First\n const timer = setInterval(() => {\n if (window.isEvinaSessionChecked) {\n clearInterval(timer);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', {\n redirect_url: updatedRedirectUrl\n });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n }\n }, 100);\n } else if (autoRedirect === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { redirect_url: updatedRedirectUrl });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n }\n } else {\n if (\n (subscription_url && subscription_url != null) ||\n window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.msisdn\n ) {\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.NothingYet()\n };\n }\n if (redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url });\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: redirect_url\n })\n };\n }\n\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url');\n const { redirect_url: newRedirectUrl } = await getRedirectUrl({\n window,\n maybeConfig: config,\n extraParams: {\n ...(operator && { operator }),\n ...extraParams\n }\n });\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url-success');\n\n // add empellow token for specific country\n const updated_redirect_url = newRedirectUrl\n ? await addEmpelloToken({\n currentRedirectUrl: newRedirectUrl,\n country: config.country\n })\n : null;\n\n if (updated_redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { updated_redirect_url });\n\n if (autoRedirect === true || (window.isAutoFraudScreener === true && updated_redirect_url)) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { updated_redirect_url });\n\n setTimeout(() => {\n // eslint-disable-next-line camelcase\n window.location.href = updated_redirect_url;\n }, 0);\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updated_redirect_url\n })\n };\n }\n } else {\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n\n if (strategy !== 'one-click') {\n dispatch(\n setStrategyExtraData({\n type: flowMapping[defaultFlowType],\n data: {\n config: defaultConfig.flowConfig\n }\n })\n );\n }\n\n return rejectWithValue({\n errorType: 'UnknownError',\n message: 'Could not get rediredt url',\n error: 'Could not get rediredt url'\n });\n }\n }\n } catch (ex) {\n console.warn(ex);\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n if (strategy !== 'one-click') {\n dispatch(\n setStrategyExtraData({\n type: flowMapping[defaultFlowType],\n data: {\n config: defaultConfig.flowConfig\n }\n })\n );\n }\n return rejectWithValue({\n errorType: 'UnknownError',\n message: ex.message,\n error: ex.toString()\n });\n }\n }\n);\n\n/**\n * subscribeUrlAction\n * @returns {type: ' 'oneClickFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls oneclick subscripe api to subscribe the user\n * Returns a product url\n */\ninterface OneClickSubscribeArgs {\n window: Window;\n autoRedirect?: boolean;\n extraParams?: IHash;\n}\nexport const subscribeUrlAction = createAsyncThunk<\n AJAXSUBSCRIBEState,\n OneClickSubscribeArgs,\n {\n rejectValue: SubscribeFailure;\n }\n>('oneClickFlow/subscribeUrlAction', async ({ window, autoRedirect, 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 { subscription_url, config } = state.strategy.currentState.data;\n try {\n // Start Call to Subscribe ajax\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe');\n const product_url = await subscribe(subscription_url, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe-success', { product_url });\n // End Call to Subscribe ajax\n\n if (autoRedirect === true) {\n tracker.customEvent('Flow', 'advance-auto', 'click-product-url', { product_url });\n window.location.href = product_url;\n }\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Success({\n productUrl: product_url\n })\n };\n } catch (ex) {\n console.warn(ex);\n\n tracker.recedeInFlow('tallyman.v1-one-click', 'click-subscribe-failure', { error: ex.toString() });\n\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString(),\n productUrl: ex.productUrl,\n message: ex.message || ''\n });\n }\n});\n\nconst oneClickFlowSlice = createSlice({\n name: 'oneClickFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getRedirectUrlAction.pending, (state) => {\n state.currentState = { type: 'GET_REDIRECT_URL', result: RDS.Loading() };\n })\n .addCase(getRedirectUrlAction.fulfilled, (state, action: PayloadAction<GETREDIRECTUrlState>) => {\n state.currentState = action.payload;\n })\n .addCase(getRedirectUrlAction.rejected, (state, action: PayloadAction<IGETREDIRECTURLFailure>) => {\n state.currentState = {\n type: 'GET_REDIRECT_URL',\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(subscribeUrlAction.pending, (state) => {\n state.currentState = { type: 'SUBCRIBE_AJAX', result: RDS.Loading() };\n })\n .addCase(subscribeUrlAction.fulfilled, (state, action: PayloadAction<AJAXSUBSCRIBEState>) => {\n state.currentState = action.payload;\n })\n .addCase(subscribeUrlAction.rejected, (state, action: PayloadAction<SubscribeFailure>) => {\n state.currentState = {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: oneClickFlowReducer, actions: oneClickFlowActions } = oneClickFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectOneClickFlowState = (state: any) => state.oneClickFlow;\n"],"names":["useOneClickFlowState","useSelector","state","oneClickFlow","currentState","oneClickFlowMatch","_a","getRedirectUrl","subscribe","type","result","addEmpelloToken","currentRedirectUrl","country","toLowerCase","Promise","resolve","checkEmpelloAvailability","setInterval","window","Empello","clearInterval","_b","sent","getToken","empelloToken","token","updateUrlParameter","oneClickSubscribeByUrlFromParams","extraParams","search","url","cleanSearchParams","evinaTid","tid","isCleanTraffic","shouldBlock","extraParamsQs","Object","entries","map","__read","key","value","concat","encodeURIComponent","join","baseURL","params","sam_evina_tid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","fromEntries","URLSearchParams","queryParams","toString","resultUrl","fetch","json","console","error","error_1","oneClickSubscribe","slug","device","offer","msisdn","operator","rockmanId","keys","k","filter","Boolean","action","offerId","rockman_id","page","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","zain_antifraud_id","korek_antifraud_id","queryString","host","DEV_BASE_URL","then","x","fetchJsonp","_url","ouisys_callback_function","Math","floor","random","reject","arg","indexOf","script","document","createElement","src","id","body","appendChild","onerror","Error","maybeConfig","apiAction","pac_analytics","visitor","s","substr","search_1","length","v","forEach","element","index","paramName","paramValue","pattern","RegExp","replace","newUrl","replaceUrlParam","bupperizeCountry","result_1","_h","success","identifyError","message","subscription_url","redirect_url","loadScriptInnerHtml","source","redirectUrlWithReplacedUniqid","searchObj","searchToObject","__assign","_c","_e","_d","ip","ip_address","_g","_f","__awaiter","_k","config","newExtraParams","heMsisdnDecryptedByApiResult","validateMsisdn","_j","subscribeError","productUrl","product_url","getRedirectUrlBupperWay","xcid","split","baseHostBupper","bupperRedirectHost","atob","DEV_BASE_URL_BUPPER","mockedRedirectUrlSuccessState","RDS.Success","redirectUrl","mockedSubscribeAjaxState","RDS.NothingYet","defaultInitialState","initialState","setInitialState","getRedirectUrlAction","createAsyncThunk","isGetRedirectBupperWay","autoRedirect","getState","dispatch","rejectWithValue","strategy","data","errorType","defaultConfig","defaultFlowType","_l","updatedRedirectUrl_1","tracker","customEvent","isAutoFraudScreener","advancedInFlow","setTimeout","timer_1","isEvinaSessionChecked","newRedirectUrl","updated_redirect_url_1","recedeInFlow","setStrategyExtraData","flowMapping","flowConfig","updated_redirect_url","warn","ex_1","subscribeUrlAction","ex_2","oneClickFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","oneClickFlowReducer","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"oneClickFlow.js","sources":["../src/flows/oneClickFlow/hooks/useOneClickFlowState.ts","../src/flows/oneClickFlow/match.ts","../src/utilities/addEmpelloToken.ts","../src/utilities/replaceUrlParam.ts","../src/flows/oneClickFlow/api.ts","../src/flows/oneClickFlow/main.ts","../src/flows/oneClickFlow/oneClickFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useOneClickFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.oneClickFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IGETREDIRECTURLFailure,\n IGETREDIRECTURLSuccess,\n OneClickFlowCurrentState,\n SubscribeFailure,\n SubscribeSuccess\n} from '../../sharedFlowTypes/OneClickTypes';\n\nfunction oneClickFlowMatch<R>({\n getRedirectUrl,\n subscribe\n}: {\n getRedirectUrl: (rds: RDS.RemoteDataState<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>) => R;\n subscribe?: (rds: RDS.RemoteDataState<SubscribeFailure, SubscribeSuccess>) => R;\n}): (state: OneClickFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'GET_REDIRECT_URL':\n return getRedirectUrl(state.result);\n case 'SUBCRIBE_AJAX':\n return subscribe(state.result);\n default:\n // TODO - this should be an error or something\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return getRedirectUrl(state.result);\n }\n };\n}\n\nexport { oneClickFlowMatch };\n","import { updateUrlParameter } from '../pacman/queryString';\n\nexport async function addEmpelloToken({\n currentRedirectUrl,\n country\n}: {\n currentRedirectUrl: string;\n country: string;\n}) {\n if (country.toLowerCase() === 'pe') {\n // Empello script is added on server\n\n await new Promise<void>((resolve) => {\n // check if empello script is loaded and available\n const checkEmpelloAvailability = setInterval(() => {\n if (window.Empello) {\n clearInterval((checkEmpelloAvailability as unknown) as number);\n resolve();\n }\n }, 100);\n });\n if (typeof window !== 'undefined' && window.Empello) {\n // call getToken function from empello\n const token = await new Promise<string>((resolve) => {\n window.Empello?.getToken((empelloToken: string) => {\n resolve(empelloToken);\n });\n });\n\n const url = updateUrlParameter(currentRedirectUrl, 'empello_token', token);\n return url;\n }\n }\n\n return currentRedirectUrl;\n}\n","export const replaceUrlParam = (url: string, paramName: string, paramValue = '') => {\n const pattern = new RegExp(`\\\\b(${paramName}=).*?(&|#|$)`);\n if (url.search(pattern) >= 0) {\n return url.replace(pattern, `$1${paramValue}$2`);\n }\n const newUrl = url.replace(/[?#]$/, '');\n return `${newUrl + paramName}=${paramValue}&`;\n};\n","import { IHash } from '../../common-types/IHash';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const getRedirectAPI = () => {};\n\nconst getUrlWithParams = (baseURL: string, params: IHash) => {\n const queryParams = new URLSearchParams(params).toString();\n return `${baseURL}&${queryParams}`;\n};\n\nexport const oneClickSubscribeByUrlFromParams = async ({\n window,\n extraParams,\n search,\n url\n}: {\n window: Window;\n extraParams?: IHash;\n search: string;\n url: string;\n}) => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const evinaTid = window?.tid || '';\n const isCleanTraffic = window?.shouldBlock ? 'false' : 'true';\n\n const extraParamsQs = Object.entries(extraParams || {})\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n try {\n const resultUrl = getUrlWithParams(url, {\n sam_evina_tid: evinaTid,\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 'is-clean-traffic': isCleanTraffic,\n ...Object.fromEntries(new URLSearchParams(extraParamsQs))\n });\n\n const response = await fetch(`${resultUrl}${search ? `&${search}` : ''}`);\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error fetching subscription:', error);\n throw error; // Rethrow or handle error as needed\n }\n};\n\nexport const oneClickSubscribe = async ({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n operator,\n rockmanId,\n extraParams,\n search,\n evinaTid\n}: {\n window?: Window;\n country: string;\n slug: string;\n device: 'smart' | 'feature';\n offer: string;\n msisdn: string;\n operator: string;\n rockmanId: string;\n extraParams: IHash;\n search: string;\n evinaTid?: string;\n}): Promise<any> => {\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: 'one-click-subscribe',\n country,\n slug,\n device,\n offerId: offer,\n msisdn,\n operator,\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\n antifraud_id: window.antifraud_id || '',\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n","import { IError } from '../../common-types/IError';\nimport { IHash } from '../../common-types/IHash';\nimport { IIDentifyUserResult, ILinkExtraParams, ISubscribeResult } from '../../sharedFlowTypes/OneClickTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { replaceUrlParam } from '../../utilities/replaceUrlParam';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { oneClickSubscribe, oneClickSubscribeByUrlFromParams } from './api';\n\nexport const additionalQueryString = `msisdnSubmitted=Y&legalCheckbox=Y&incentivizedCheckbox=Y&op_confirmCheckbox=N`;\n\nconst fetchJsonp: <T>(_url: string) => Promise<T> = (_url: string) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n // @ts-ignore\n window[ouisys_callback_function] = (arg) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\n\nexport const getRedirectUrl = async ({\n window,\n maybeConfig,\n extraParams\n}: {\n window: Window;\n maybeConfig: IConfig;\n extraParams?: ILinkExtraParams;\n}): Promise<{\n subscription_url?: string;\n redirect_url?: string;\n action?: () => Promise<string>;\n}> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-throw-literal, no-script-url\n throw \"javascript: console.error('SSR'); void 6\";\n } else {\n const { country, slug, queryString, apiAction } = maybeConfig;\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n let search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n Object.keys(extraParams).forEach((element, index) => {\n // Check if search already has query parameters\n if (search.length > 0) {\n // If there are existing parameters, add '&' before appending the new one\n search += '&';\n }\n search = `${replaceUrlParam(search, element, extraParams[element])}${index === 1 ? '&' : ''}`;\n });\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (apiAction === 'identify-user') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=identify-user&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetchJsonp<IIDentifyUserResult>(url);\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n action: () => subscribe(result.subscription_url, maybeConfig)\n };\n }\n } else if (apiAction === 'he') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=he&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n loadScriptInnerHtml(result.source);\n return { redirect_url: result.redirectUrlWithReplacedUniqid };\n }\n } else {\n if (country.toLowerCase() === 'om') {\n const searchObj = searchToObject(window) as {\n redirect_url: string;\n url: string;\n msisdn: string;\n success: 'true' | 'false';\n };\n if (searchObj.success === 'false') {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: searchObj.redirect_url || searchObj.url };\n }\n }\n const host = (window as Window).DEV_BASE_URL || '';\n\n const params = new URLSearchParams({\n action: 'redirect',\n device: 'smart',\n slug,\n offerId: offer,\n country: bupperizeCountry(country),\n rockman_id: rockmanId,\n sam_evina_tid: evinaTid,\n ...(window?.location?.href && { page: encodeURIComponent(window?.location?.href) }),\n ...(window?.pac_analytics?.visitor?.ip && { ip_address: window?.pac_analytics?.visitor?.ip }),\n ...(window?.pac_analytics?.visitor?.ipRangeOperator && {\n ip_range_operator: window?.pac_analytics?.visitor?.ipRangeOperator\n })\n });\n\n const url = `${host}/tallyman/v1/?${params.toString()}${search ? `&${search}` : ''}`;\n const result = await fetch(url).then((x) => x.json());\n\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: result.redirect_url };\n }\n }\n }\n};\n\nexport const subscribe: (url: string, maybeConfig: IConfig, extraParams?: IHash) => Promise<string> = async (\n url: string,\n maybeConfig: IConfig,\n extraParams?: IHash\n) => {\n let result: ISubscribeResult = null;\n\n if (url && url !== '') {\n const { queryString } = maybeConfig;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n await oneClickSubscribeByUrlFromParams({\n window,\n extraParams,\n search,\n url\n });\n } else {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n const newExtraParams = extraParams || {};\n const isSkipValidation = window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.validateMsisdn === false;\n // @ts-ignore\n if (isSkipValidation) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n const msisdn = window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.msisdn;\n const operator = window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.operator;\n\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 evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n result = await oneClickSubscribe({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n operator,\n rockmanId,\n extraParams: newExtraParams,\n search,\n evinaTid\n });\n }\n\n if (result.success === false) {\n const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as {\n productUrl: string;\n } & IError;\n subscribeError.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'SubscriptionError';\n subscribeError.productUrl = result.product_url ? result.product_url : '';\n subscribeError.message = result.message;\n throw subscribeError;\n } else {\n return result.product_url || result.redirect_url;\n }\n};\n\nexport const getRedirectUrlBupperWay = async (\n window: Window,\n maybeConfig: IConfig,\n extraParams?: ILinkExtraParams\n): Promise<string> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-script-url\n return \"javascript: console.error('SSR'); void 6\";\n }\n const { country, slug, queryString } = maybeConfig;\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // one click flow must use http not https\n const xcid = window.location.href.split('/')[3].split('?')[0];\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const baseHostBupper = window?.pac_analytics?.visitor?.bupperRedirectHost\n ? window.atob(window?.pac_analytics?.visitor?.bupperRedirectHost)\n : null;\n const host = baseHostBupper || (window as Window).DEV_BASE_URL_BUPPER || '';\n\n return `${host}/${bupperizeCountry(country)}/${slug}?offer=${offer}&atmobirun=1&rockman_id=${\n window.pac_analytics.visitor.rockmanId\n }&redirPixels=${window.location.host}&sam_evina_tid=${evinaTid}&x-xcid=${xcid}${extraParamsQs}&${search}`;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n AJAXSUBSCRIBEState,\n GETREDIRECTUrlState,\n IGETREDIRECTURLFailure,\n OneClickFlowState,\n SubscribeFailure\n} from '../../sharedFlowTypes/OneClickTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { addEmpelloToken } from '../../utilities/addEmpelloToken';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { flowMapping } from '../strategy/main';\nimport { setStrategyExtraData } from '../strategy/strategySlice';\nimport { getRedirectUrl, getRedirectUrlBupperWay, subscribe } from './main';\n\nexport const mockedRedirectUrlSuccessState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n // @ts-ignore\n result: RDS.Success<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>({ redirectUrl: '/product' })\n }\n};\n\nexport const mockedSubscribeAjaxState: OneClickFlowState = {\n currentState: {\n type: 'SUBCRIBE_AJAX',\n // @ts-ignore\n result: RDS.NothingYet()\n }\n};\n\nconst defaultInitialState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\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 'redirect-url-success-state':\n return mockedRedirectUrlSuccessState;\n case 'subscribe-ajax-state':\n return mockedSubscribeAjaxState;\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 GetRedirectUrlArgs {\n window: Window;\n extraParams?: IHash;\n autoRedirect?: boolean;\n isGetRedirectBupperWay?: boolean;\n ignoreUrlParams?: boolean;\n}\n/**\n * getRedirectUrlAction\n * @returns {type: ' 'oneClickFlow/getRedirectUrlAction', payload: {type: PossibleTypes, result: GETREDIRECTUrlState}}\n \n * Calls redirect api to get a redirect url for the user to be redirected to\n * Can also create a bupper redirect url\n */\nexport const getRedirectUrlAction = createAsyncThunk<\n GETREDIRECTUrlState,\n GetRedirectUrlArgs,\n {\n rejectValue: IGETREDIRECTURLFailure;\n }\n>(\n 'oneClickFlow/getRedirectUrlAction',\n // @ts-ignore\n async ({ window, isGetRedirectBupperWay, extraParams, autoRedirect }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n return initialState.currentState;\n }\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n\n const {\n config,\n subscription_url,\n redirect_url,\n operator,\n strategy,\n defaultConfig,\n defaultFlowType\n } = state.strategy.currentState.data;\n try {\n if (isGetRedirectBupperWay === true) {\n const redirectUrl = await getRedirectUrlBupperWay(window, config, {\n ...(operator && { operator }),\n ...extraParams\n });\n\n // add empellow token for specific country\n const updatedRedirectUrl = await addEmpelloToken({\n currentRedirectUrl: redirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: updatedRedirectUrl });\n if (window.isAutoFraudScreener === true) {\n // Wait for Evina to Check Fraud First\n const timer = setInterval(() => {\n if (window.isEvinaSessionChecked) {\n clearInterval(timer);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', {\n redirect_url: updatedRedirectUrl\n });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n }\n }, 100);\n } else if (autoRedirect === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { redirect_url: updatedRedirectUrl });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n }\n } else {\n if (\n (subscription_url && subscription_url != null) ||\n window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.msisdn\n ) {\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.NothingYet()\n };\n }\n if (redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url });\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: redirect_url\n })\n };\n }\n\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url');\n const { redirect_url: newRedirectUrl } = await getRedirectUrl({\n window,\n maybeConfig: config,\n extraParams: {\n ...(operator && { operator }),\n ...extraParams\n }\n });\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url-success');\n\n // add empellow token for specific country\n const updated_redirect_url = newRedirectUrl\n ? await addEmpelloToken({\n currentRedirectUrl: newRedirectUrl,\n country: config.country\n })\n : null;\n\n if (updated_redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { updated_redirect_url });\n\n if (autoRedirect === true || (window.isAutoFraudScreener === true && updated_redirect_url)) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { updated_redirect_url });\n\n setTimeout(() => {\n // eslint-disable-next-line camelcase\n window.location.href = updated_redirect_url;\n }, 0);\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updated_redirect_url\n })\n };\n }\n } else {\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n\n if (strategy !== 'one-click') {\n dispatch(\n setStrategyExtraData({\n type: flowMapping[defaultFlowType],\n data: {\n config: defaultConfig.flowConfig\n }\n })\n );\n }\n\n return rejectWithValue({\n errorType: 'UnknownError',\n message: 'Could not get rediredt url',\n error: 'Could not get rediredt url'\n });\n }\n }\n } catch (ex) {\n console.warn(ex);\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n if (strategy !== 'one-click') {\n dispatch(\n setStrategyExtraData({\n type: flowMapping[defaultFlowType],\n data: {\n config: defaultConfig.flowConfig\n }\n })\n );\n }\n return rejectWithValue({\n errorType: 'UnknownError',\n message: ex.message,\n error: ex.toString()\n });\n }\n }\n);\n\n/**\n * subscribeUrlAction\n * @returns {type: ' 'oneClickFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls oneclick subscripe api to subscribe the user\n * Returns a product url\n */\ninterface OneClickSubscribeArgs {\n window: Window;\n autoRedirect?: boolean;\n extraParams?: IHash;\n}\nexport const subscribeUrlAction = createAsyncThunk<\n AJAXSUBSCRIBEState,\n OneClickSubscribeArgs,\n {\n rejectValue: SubscribeFailure;\n }\n>('oneClickFlow/subscribeUrlAction', async ({ window, autoRedirect, 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 { subscription_url, config } = state.strategy.currentState.data;\n try {\n // Start Call to Subscribe ajax\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe');\n const product_url = await subscribe(subscription_url, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe-success', { product_url });\n // End Call to Subscribe ajax\n\n if (autoRedirect === true) {\n tracker.customEvent('Flow', 'advance-auto', 'click-product-url', { product_url });\n window.location.href = product_url;\n }\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Success({\n productUrl: product_url\n })\n };\n } catch (ex) {\n console.warn(ex);\n\n tracker.recedeInFlow('tallyman.v1-one-click', 'click-subscribe-failure', { error: ex.toString() });\n\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString(),\n productUrl: ex.productUrl,\n message: ex.message || ''\n });\n }\n});\n\nconst oneClickFlowSlice = createSlice({\n name: 'oneClickFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getRedirectUrlAction.pending, (state) => {\n state.currentState = { type: 'GET_REDIRECT_URL', result: RDS.Loading() };\n })\n .addCase(getRedirectUrlAction.fulfilled, (state, action: PayloadAction<GETREDIRECTUrlState>) => {\n state.currentState = action.payload;\n })\n .addCase(getRedirectUrlAction.rejected, (state, action: PayloadAction<IGETREDIRECTURLFailure>) => {\n state.currentState = {\n type: 'GET_REDIRECT_URL',\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(subscribeUrlAction.pending, (state) => {\n state.currentState = { type: 'SUBCRIBE_AJAX', result: RDS.Loading() };\n })\n .addCase(subscribeUrlAction.fulfilled, (state, action: PayloadAction<AJAXSUBSCRIBEState>) => {\n state.currentState = action.payload;\n })\n .addCase(subscribeUrlAction.rejected, (state, action: PayloadAction<SubscribeFailure>) => {\n state.currentState = {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: oneClickFlowReducer, actions: oneClickFlowActions } = oneClickFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectOneClickFlowState = (state: any) => state.oneClickFlow;\n"],"names":["useOneClickFlowState","useSelector","state","oneClickFlow","currentState","oneClickFlowMatch","_a","getRedirectUrl","subscribe","type","result","addEmpelloToken","currentRedirectUrl","country","toLowerCase","Promise","resolve","checkEmpelloAvailability","setInterval","window","Empello","clearInterval","_b","sent","getToken","empelloToken","token","updateUrlParameter","oneClickSubscribeByUrlFromParams","extraParams","search","url","cleanSearchParams","evinaTid","tid","isCleanTraffic","shouldBlock","extraParamsQs","Object","entries","map","__read","key","value","concat","encodeURIComponent","join","baseURL","params","sam_evina_tid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","fromEntries","URLSearchParams","queryParams","toString","resultUrl","fetch","json","console","error","error_1","oneClickSubscribe","slug","device","offer","msisdn","operator","rockmanId","keys","k","filter","Boolean","action","offerId","rockman_id","page","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","zain_antifraud_id","korek_antifraud_id","queryString","host","DEV_BASE_URL","then","x","fetchJsonp","_url","ouisys_callback_function","Math","floor","random","reject","arg","indexOf","script","document","createElement","src","id","body","appendChild","onerror","Error","maybeConfig","apiAction","pac_analytics","visitor","s","substr","search_1","length","v","forEach","element","index","paramName","paramValue","pattern","RegExp","replace","newUrl","replaceUrlParam","bupperizeCountry","result_1","_m","success","identifyError","message","subscription_url","redirect_url","loadScriptInnerHtml","source","redirectUrlWithReplacedUniqid","searchObj","searchToObject","__assign","_c","_e","_d","ip","ip_address","_g","_f","_h","_j","ipRangeOperator","ip_range_operator","_l","_k","__awaiter","config","newExtraParams","heMsisdnDecryptedByApiResult","validateMsisdn","subscribeError","productUrl","product_url","getRedirectUrlBupperWay","xcid","split","baseHostBupper","bupperRedirectHost","atob","DEV_BASE_URL_BUPPER","mockedRedirectUrlSuccessState","RDS.Success","redirectUrl","mockedSubscribeAjaxState","RDS.NothingYet","defaultInitialState","initialState","setInitialState","getRedirectUrlAction","createAsyncThunk","isGetRedirectBupperWay","autoRedirect","getState","dispatch","rejectWithValue","strategy","data","errorType","defaultConfig","defaultFlowType","updatedRedirectUrl_1","tracker","customEvent","isAutoFraudScreener","advancedInFlow","setTimeout","timer_1","isEvinaSessionChecked","newRedirectUrl","updated_redirect_url_1","recedeInFlow","setStrategyExtraData","flowMapping","flowConfig","updated_redirect_url","warn","ex_1","subscribeUrlAction","ex_2","oneClickFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","oneClickFlowReducer","reducer","actions"],"mappings":"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"}
package/dist/pinFlow.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__awaiter as e,__generator as n,__read as r,__assign as t}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,L as s,S as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{i as d,c as l,P as v}from"./strategySlice-BMNt18ck.js";import{searchToObject as p}from"./searchToObject.js";import{s as f}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{b as y}from"./api-geirVksI.js";import{l as w,r as S,a as _}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as h}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"pacman-client";import"uuid";var I=function(e){return e((function(e){return e.pinFlow.currentState}))};function b(e){var n=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return n(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var k=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},E=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.msisdn,d=t.rockmanId,l=t.extraParams,v=t.search,p=t.uniqid,f=t.evinaTid;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,S,_;return n(this,(function(n){return e=k(a),t="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),v=h(v),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(_=null==i?void 0:i.location)||void 0===_?void 0:_.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:p||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",S="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(v?"&".concat(v):""),[2,fetch(S).then((function(e){return e.json()}))]}))}))},N=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.rockmanId,d=t.pin,l=t.extraParams,v=t.uniqid,p=t.evinaTid,f=t.search;return e(void 0,void 0,void 0,(function(){var e,t,m,w,S,_,g;return n(this,(function(n){return e=k(a),t="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f=h(f),m={action:"verify-pin",country:y(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:p,uniqid:v,antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},w=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",_="".concat(S,"/tallyman/v1/?").concat(w).concat(e).concat(t).concat(f?"&".concat(f):""),[2,fetch(_).then((function(e){return e.json()}))]}))}))},U=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,v,p,f;return n(this,(function(n){return e=i.location.href,r=i.pac_analytics.visitor.ip,v=new URLSearchParams(t(t({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:u,client_lpu:e},d&&{operator:d}),l&&{uniqid:l})),r&&v.append("client_ip",r),p=i.DEV_BASE_URL||"",f="".concat(p,"/tallyman/v1/?").concat(v.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function P(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return n(this,(function(n){return!0===(e=t({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,C(r,e,a,e.operators,o)]:[2,j(r,e,a,o)]}))}))}var D="";function j(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,v,f,m,y,w,S,_,h,I,b,k,N;return n(this,(function(n){switch(n.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,("true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]||!0===r.skip_validation)&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a||r.msisdn:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,w=r.location.search.substr(1)||"",S=D&&""!==D?"&mcpUniqid=".concat(D):"",_=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:w,uniqid:S,evinaTid:_})];case 1:if(!0===(h=n.sent()).isContentBlocked&&(r.isContentBlocked=!0),!1!==h.success)return[3,2];switch((I=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(h.message))).message=h.message,!0){case h.message.includes("ALREADY SUBSCRIBED"):I.type="AlreadySubscribed";break;case h.message.includes("invalid"):I.type="InvalidMSISDN";break;case h.message.includes("duplicated_request"):I.type="DuplicatedRequest";break;default:I.type=null}throw I.productUrl=h.product_url?h.product_url:"",console.error(I),I;case 2:if(r.operator=h.operator,b={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&h.operator&&(b[f.toLowerCase()]&&b[f.toLowerCase()][h.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];n.label=3;case 3:return n.trys.push([3,5,,6]),[4,U({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:h.operator,uniqid:S})];case 4:return!1===(k=n.sent()).success?console.warn(k.message):(g(k.source),D=k.uniqid),[3,6];case 5:return N=n.sent(),console.warn(N),[3,6];case 6:return h.javascript&&g(h.javascript),[2,t({type:"SingleMSISDNSubmissionResult",pin:h.pin,uniqidResult:D,operator:h.operator,redirectUrl:null==h?void 0:h.redirect_to_url},(null==h?void 0:h.userType)?{userType:null==h?void 0:h.userType}:{})]}}))}))}function C(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return n(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 n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,j(r,i,a,t(t({},s),{operator:o}))];case 1:return e=n.sent(),[2,S(t(t({},e),{operator:o}))];case 2:return c=n.sent(),[2,w(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var n;return"left"===e.type&&"AlreadySubscribed"===(null===(n=e.value)||void 0===n?void 0:n.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function R(t,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,m,w,S,g,h,I,b,k,E,U;return n(this,(function(P){switch(P.label){case 0:if(t.hostCountry&&t.hostSlug&&(a.country=t.hostCountry,a.slug=t.hostSlug),s=a.slug,c=a.country,u=a.device,d=t.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(t))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=t.pac_analytics.visitor.rockmanId,!i)throw(m=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",m;return w=""!==D?"&mcpUniqid=".concat(D):"",S=void 0!==t&&t.tid?t.tid:"",g=t.location.search.substr(1)||"",[4,N({window:t,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:w,evinaTid:S,search:g})];case 1:if(!1!==(h=P.sent()).success)return[3,2];switch(I=void 0,!0){case h.message.includes("pin does not match"):I="InvalidPIN";break;case h.message.includes("mcp blocked"):I="SessionBlocked";break;case h.message.includes("expired_pin"):I="ExpiredPIN";break;case h.message.includes("insufficient_balance"):I="InsufficientBalance";break;case h.message.includes("duplicated_request"):I="DuplicatedRequest";break;case h.message.includes("ALREADY SUBSCRIBED"):I="AlreadySubscribed";break;default:I="InvalidPIN"}throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(h.message))).type=I,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}]:(b=function(){return function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.rockmanId;return e(void 0,void 0,void 0,(function(){var e,t,d,l;return n(this,(function(n){return e={action:"check-subscription",country:y(a),slug:o,device:s,offerId:c,rockman_id:u},t=Object.entries(e).filter((function(e){var n=r(e,2);return n[0],null!=n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(t),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:t,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,_(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(k=P.sent()).success)return U="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:k.product_url||null,isAlreadySubscribed:U}];throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(k.message))).type="InvalidPIN",E.message=k.message,E;case 4:return U="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:U}]}}))}))}var M={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},T={currentState:{type:"PINEntry",result:c({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},F={currentState:{type:"MSISDNEntry",result:o()}},B=function(e){var n,r=p(e),t=new Event("onPinPage"),i=r.ui_show_pin_entry&&"1"===r.ui_show_pin_entry||r["show-pin-entry"]&&"1"===r["show-pin-entry"],a=r["show-thank-you"]&&"1"===r["show-thank-you"],s="1"===(null==r?void 0:r.show_custom_error),d=(null!==(n=null==r?void 0:r.ui_error_message)&&void 0!==n?n:"").replace(/\+/g,"%20"),l=decodeURIComponent(d),v={currentState:{type:"MSISDNEntry",result:u({errorType:{"This mobile number is blacklisted":"BlacklistedNumber"}[l]||"SomethingWentWrong",error:l})}},f={currentState:{type:"PINEntry",result:c({finalUrl:(null==r?void 0:r.product_url)||""}),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}},m={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}};if(i)return null==e||e.dispatchEvent(t),m;if(a)return f;if(s)return v;if(!r["mock-flow"])return F;switch(r["current-state"]){case"msisdn-failure-state":return A;case"pin-state":return null==e||e.dispatchEvent(t),M;case"completed-state":return T;default:return console.error("Mock Flow not supported"),F}}(window),q=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,c=r.msisdn,u=r.extraParams,d=i.getState,y=i.dispatch,w=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,S,_,g,h,I,b,k,E,N,U,D,j,C,R,M,T,A,F;return n(this,(function(n){switch(n.label){case 0:if(e=d(),!(null===(M=null===(R=null===(C=null==e?void 0:e.strategy)||void 0===C?void 0:C.currentState)||void 0===R?void 0:R.data)||void 0===M?void 0:M.config))return[2,w({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,S=r.isHeaderEnrichmentSuccess,_=null===(T=e.pinFlow)||void 0===T?void 0:T.currentState,g=p(a),n.label=1;case 1:return n.trys.push([1,7,,8]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===V(null==i?void 0:i.country,c)&&(c=c.replace("970","972")),"tpay"!==(null==(h=null===(F=null===(A=null==a?void 0:a.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===F?void 0:F.genericJsLinkResult)?void 0:h.gateway)||(null==g?void 0:g.ui_show_pin_entry)?[3,3]:(m.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,P(a,i,c)]);case 2:if(n.sent(),a.msisdn=c,a.callConfirm)try{return a.callConfirm(),[2,t(t({},_),{type:"MSISDNEntry",result:s()})]}catch(e){return I="Confirm function failed",m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:(null==e?void 0:e.toString())||"Error calling window.callConfirm function",message:e.message}),[2,w({errorType:"TPayConfirmError",error:I,message:I})]}return b="Confirm function not found",m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:b,message:b}),[2,w({errorType:"TPayConfirmError",error:b,message:b})];case 3:return m.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,P(a,i,c)];case 4:return k=n.sent(),m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),"SingleMSISDNSubmissionResult"===k.type&&k.redirectUrl?(m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),m.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:k.redirectUrl}),a.location.href=k.redirectUrl,[2]):u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,f(c).then((function(e){e&&e.data&&e.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){m.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,6];case 5:n.sent(),n.label=6;case 6:return E="SingleMSISDNSubmissionResult"===(null==k?void 0:k.type)?null==k?void 0:k.operator:"",N={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},U=new Event("onPinPage"),null==a||a.dispatchEvent(U),[2,t(t({},_),{type:"PINEntry",result:o(),data:t({actualPIN:"SingleMSISDNSubmissionResult"===k.type?k.pin:null,msisdn:c,operator:E,pinMaxLength:""!==E&&N[E]?N[E]:null,isHeaderEnrichmentSuccess:S},"SingleMSISDNSubmissionResult"===k.type&&(null==k?void 0:k.userType)?{userType:k.userType}:{})})];case 7:switch(D=n.sent(),console.warn(D),j=void 0,D.type){case"AlreadySubscribed":j="AlreadySubscribed";break;case"InvalidMSISDN":j="InvalidMSISDN";break;case"DuplicatedRequest":j="DuplicatedRequest";break;default:j="UnknownError"}return m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:j,error:D.toString(),message:D.message,productUrl:D.productUrl}),S&&y(l({type:v.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,w({errorType:j,error:D.toString(),message:D.message,productUrl:D.productUrl})];case 8:return[2]}}))}))})),L=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,s=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,v,p,y,w,S,_,g;return n(this,(function(n){switch(n.label){case 0:if(e=d(),!(null===(_=null===(S=null===(w=null==e?void 0:e.strategy)||void 0===w?void 0:w.currentState)||void 0===S?void 0:S.data)||void 0===_?void 0:_.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(g=e.pinFlow)||void 0===g?void 0:g.currentState,n.label=1;case 1:return n.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:s}),[4,R(a,s,r,u)];case 2:return v=n.sent(),m.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:s,finalUrl:v.productUrl}),v.gatewayRedirectUrl&&""!==v.gatewayRedirectUrl&&(m.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:s,gatewayRedirectUrl:v.gatewayRedirectUrl}),a.location.href=v.gatewayRedirectUrl),u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,f(o).then((function(e){e&&e.data&&e.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){m.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:n.sent(),n.label=4;case 4:return[2,t(t({},i),{type:"PINEntry",result:c({finalUrl:v.productUrl,isAlreadySubscribed:v.isAlreadySubscribed||!1})})];case 5:switch(p=n.sent(),console.warn(p),y=void 0,p.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;case"DuplicatedRequest":y="DuplicatedRequest";break;default:y="UnknownError"}return m.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:s,errorType:y,error:p.toString(),message:p.message,productUrl:p.productUrl}),setTimeout((function(){p.productUrl&&(a.location.href=p.productUrl)}),0),[2,l({errorType:y,error:p.toString(),message:p.message,productUrl:p.productUrl})];case 6:return[2]}}))}))})),x=i("pinFlow/backToStartAction",(function(r,t){var i=t.getState,a=t.dispatch,s=t.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,t,c;return n(this,(function(n){try{if(m.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e=i(),!(null===(c=null===(t=null===(r=null==e?void 0:e.strategy)||void 0===r?void 0:r.currentState)||void 0===t?void 0:t.data)||void 0===c?void 0:c.config))return[2,s({errorType:"UnexpectedState"})];if("pin"===e.strategy.currentState.data.strategy)return[2,{type:"MSISDNEntry",result:o()}];a(d())}catch(e){return console.warn(e),[2,s({errorType:"UnexpectedState"})]}return[2]}))}))})),O={PS:"970"},V=function(e,n){if(!e||!n)return"";var r=e.toUpperCase(),t=O[r];return t?"+".concat(t):(console.error("Country code not found for",e),"")},W=a({name:"pinFlow",initialState:B,reducers:{},extraReducers:function(e){e.addCase(q.pending,(function(e){var n,r,t,i,a,o,c;e.currentState={type:(null===(r=null===(n=null===window||void 0===window?void 0:window.location)||void 0===n?void 0:n.search)||void 0===r?void 0:r.includes("ui_show_pin_entry"))||(null===(i=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.search)||void 0===i?void 0:i.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(o=null===(a=null===window||void 0===window?void 0:window.pac_analytics)||void 0===a?void 0:a.visitor)||void 0===o?void 0:o.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:s(),data:e.currentState.data}})).addCase(q.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(q.rejected,(function(e,n){var r,t,i,a,o,s,c;e.currentState={type:(null===(t=null===(r=null===window||void 0===window?void 0:window.location)||void 0===r?void 0:r.search)||void 0===t?void 0:t.includes("ui_show_pin_entry"))||(null===(a=null===(i=null===window||void 0===window?void 0:window.location)||void 0===i?void 0:i.search)||void 0===a?void 0:a.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(s=null===(o=null===window||void 0===window?void 0:window.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===s?void 0:s.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:u(n.payload),data:e.currentState.data}})).addCase(L.pending,(function(e){e.currentState={type:"PINEntry",result:s(),data:e.currentState.data}})).addCase(L.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(L.rejected,(function(e,n){e.currentState={type:"PINEntry",result:u(n.payload),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,n){e.currentState=n.payload}))}}),Y=W.reducer;W.actions;export{x as backToStartAction,b as pinFlowMatch,Y as pinFlowReducer,q as submitMSISDNAction,L as submitPinAction,I as usePinFlowState};
1
+ import{__awaiter as e,__generator as n,__read as r,__assign as t}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,L as s,S as c,F as d}from"./RemoteDataState-lcf8PfJd.js";import{i as u,c as l,P as v}from"./strategySlice-BMNt18ck.js";import{n as p,r as f}from"./normaliseErrorCode-CcFWuZeI.js";import{searchToObject as m}from"./searchToObject.js";import{s as y}from"./storeMsisdn-Cjq8_qYH.js";import{t as w}from"./tracker-DaaILhEr.js";import{b as S}from"./api-geirVksI.js";import{l as _,r as g,a as h}from"./helpers-xPhGBX-B.js";import{l as I}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as b}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"pacman-client";import"uuid";var E=function(e){return e((function(e){return e.pinFlow.currentState}))};function k(e){var n=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return n(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var U=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},N=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.msisdn,u=t.rockmanId,l=t.extraParams,v=t.search,p=t.uniqid,f=t.evinaTid;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,S,_;return n(this,(function(n){return e=U(a),t="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),v=b(v),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:d,rockman_id:u,sam_evina_tid:f,page:encodeURIComponent(null===(_=null==i?void 0:i.location)||void 0===_?void 0:_.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:p||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",S="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(v?"&".concat(v):""),[2,fetch(S).then((function(e){return e.json()}))]}))}))},P=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.rockmanId,u=t.pin,l=t.extraParams,v=t.uniqid,p=t.evinaTid,f=t.search;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,_,g;return n(this,(function(n){return e=U(a),t="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f=b(f),m={action:"verify-pin",country:S(a),slug:o,device:s,offerId:c,rockman_id:d,pin:u,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:p,uniqid:v,antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",_="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(f?"&".concat(f):""),[2,fetch(_).then((function(e){return e.json()}))]}))}))},j=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,d=r.rockmanId,u=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,v,p,f;return n(this,(function(n){return e=i.location.href,r=i.pac_analytics.visitor.ip,v=new URLSearchParams(t(t({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:d,client_lpu:e},u&&{operator:u}),l&&{uniqid:l})),r&&v.append("client_ip",r),p=i.DEV_BASE_URL||"",f="".concat(p,"/tallyman/v1/?").concat(v.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function C(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return n(this,(function(n){return!0===(e=t({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,M(r,e,a,e.operators,o)]:[2,D(r,e,a,o)]}))}))}var R="";function D(r,i,a,o){var s;return e(this,void 0,void 0,(function(){var e,c,d,u,l,v,f,y,w,S,_,g,h,b,E,k,U,P,C,D;return n(this,(function(n){switch(n.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return c=o||{},d=!1,("true"===(null==(u=m(r))?void 0:u.success)&&"1"===u["msisdn-alias"]||!0===r.skip_validation)&&(c["skip-validation"]="1"),"1"===c["skip-validation"]&&(d=!0),l=d?a||r.msisdn:a.match(/\d+/gi).join(""),v=r.pac_analytics.visitor.rockmanId,f=i.slug,y=i.country,w=i.device,S=i.offer,_=r.location.search.substr(1)||"",g=R&&""!==R?"&mcpUniqid=".concat(R):"",h=void 0!==r&&r.tid?r.tid:"",[4,N({window:r,country:y,slug:f,device:w,offer:S,msisdn:l,rockmanId:v,extraParams:c,search:_,uniqid:g,evinaTid:h})];case 1:if(!0===(b=n.sent()).isContentBlocked&&(r.isContentBlocked=!0),!1!==b.success)return[3,2];throw E=b.message.includes("ALREADY SUBSCRIBED")?"AlreadySubscribed":/invalid/i.test(b.message)?"InvalidMsisdn":b.message.includes("duplicated_request")?"DuplicatedRequest":null,k=b.error_code?p(b.error_code):E,U=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(b.message)),Object.assign(U,{type:k,message:b.message,productUrl:null!==(s=b.product_url)&&void 0!==s?s:""}),U;case 2:if(r.operator=b.operator,P={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(y&&b.operator&&(P[y.toLowerCase()]&&P[y.toLowerCase()][b.operator.toLowerCase()]||"iq"===y.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];n.label=3;case 3:return n.trys.push([3,5,,6]),[4,j({window:r,country:y,slug:f,device:w,offer:S,rockmanId:v,operator:b.operator,uniqid:g})];case 4:return!1===(C=n.sent()).success?console.warn(C.message):(I(C.source),R=C.uniqid),[3,6];case 5:return D=n.sent(),console.warn(D),[3,6];case 6:return b.javascript&&I(b.javascript),[2,t({type:"SingleMSISDNSubmissionResult",pin:b.pin,uniqidResult:R,operator:b.operator,redirectUrl:null==b?void 0:b.redirect_to_url},(null==b?void 0:b.userType)?{userType:null==b?void 0:b.userType}:{})]}}))}))}function M(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,d,u=this;return n(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(u,void 0,void 0,(function(){var e,c;return n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,D(r,i,a,t(t({},s),{operator:o}))];case 1:return e=n.sent(),[2,g(t(t({},e),{operator:o}))];case 2:return c=n.sent(),[2,_(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),d=c.find((function(e){var n;return"left"===e.type&&"AlreadySubscribed"===(null===(n=e.value)||void 0===n?void 0:n.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(d)throw d.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function T(t,i,a,o){return e(this,void 0,void 0,(function(){var s,c,d,u,l,v,p,f,y,w,_,g,I,b,E,k,U;return n(this,(function(N){switch(N.label){case 0:if(t.hostCountry&&t.hostSlug&&(a.country=t.hostCountry,a.slug=t.hostSlug),s=a.slug,c=a.country,d=a.device,u=t.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=m(t))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),p=t.pac_analytics.visitor.rockmanId,!i)throw(f=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",f;return y=""!==R?"&mcpUniqid=".concat(R):"",w=void 0!==t&&t.tid?t.tid:"",_=t.location.search.substr(1)||"",[4,P({window:t,country:c,slug:s,device:d,offer:u,rockmanId:p,pin:i,extraParams:l,uniqid:y,evinaTid:w,search:_})];case 1:if(!1!==(g=N.sent()).success)return[3,2];switch(I=void 0,!0){case g.message.includes("pin does not match"):I="InvalidPIN";break;case g.message.includes("mcp blocked"):I="SessionBlocked";break;case g.message.includes("expired_pin"):I="ExpiredPIN";break;case g.message.includes("insufficient_balance"):I="InsufficientBalance";break;case g.message.includes("duplicated_request"):I="DuplicatedRequest";break;case g.message.includes("ALREADY SUBSCRIBED"):I="AlreadySubscribed";break;default:I="InvalidPIN"}throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(g.message))).type=I,console.error(k),k;case 2:return!0!==g.async?[3,4]:g.product_url&&""!==g.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:g.product_url}]:(b=function(){return function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,d=t.rockmanId;return e(void 0,void 0,void 0,(function(){var e,t,u,l;return n(this,(function(n){return e={action:"check-subscription",country:S(a),slug:o,device:s,offerId:c,rockman_id:d},t=Object.entries(e).filter((function(e){var n=r(e,2);return n[0],null!=n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(encodeURIComponent(i))})).join("&"),u=i.DEV_BASE_URL||"",l="".concat(u,"/tallyman/v1/?").concat(t),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:t,country:c,slug:s,device:d,offer:u,rockmanId:p,extraParams:o})},[4,h(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(E=N.sent()).success)return U="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:E.product_url||null,isAlreadySubscribed:U}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(E.message))).type="InvalidPIN",k.message=E.message,k;case 4:return U="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:g.product_url||null,isAlreadySubscribed:U}]}}))}))}var F={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"PINEntry",result:c({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},B={currentState:{type:"MSISDNEntry",result:d({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},L={currentState:{type:"MSISDNEntry",result:o()}},q=function(e){var n,r=m(e),t=new Event("onPinPage"),i=r.ui_show_pin_entry&&"1"===r.ui_show_pin_entry||r["show-pin-entry"]&&"1"===r["show-pin-entry"],a=r["show-thank-you"]&&"1"===r["show-thank-you"],s="1"===(null==r?void 0:r.show_custom_error),u=(null!==(n=null==r?void 0:r.ui_error_message)&&void 0!==n?n:"").replace(/\+/g,"%20"),l=decodeURIComponent(u),v={currentState:{type:"MSISDNEntry",result:d({errorType:{"This mobile number is blacklisted":"BlacklistedNumber"}[l]||"SomethingWentWrong",error:l})}},p={currentState:{type:"PINEntry",result:c({finalUrl:(null==r?void 0:r.product_url)||""}),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}},f={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}};if(i)return null==e||e.dispatchEvent(t),f;if(a)return p;if(s)return v;if(!r["mock-flow"])return L;switch(r["current-state"]){case"msisdn-failure-state":return B;case"pin-state":return null==e||e.dispatchEvent(t),F;case"completed-state":return A;default:return console.error("Mock Flow not supported"),L}}(window),x=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,c=r.msisdn,d=r.extraParams,u=i.getState,p=i.dispatch,S=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,_,g,h,I,b,E,k,U,N,P,j,R,D,M,T,F,A,B,L,q,x,O,V,W;return n(this,(function(n){switch(n.label){case 0:if(e=u(),!(null===(T=null===(M=null===(D=null==e?void 0:e.strategy)||void 0===D?void 0:D.currentState)||void 0===M?void 0:M.data)||void 0===T?void 0:T.config))return[2,S({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,_=r.isHeaderEnrichmentSuccess,g=null===(F=e.pinFlow)||void 0===F?void 0:F.currentState,h=m(a),n.label=1;case 1:return n.trys.push([1,7,,8]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===Y(null==i?void 0:i.country,c)&&(c=c.replace("970","972")),"tpay"!==(null==(I=null===(B=null===(A=null==a?void 0:a.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===B?void 0:B.genericJsLinkResult)?void 0:I.gateway)||(null==h?void 0:h.ui_show_pin_entry)?[3,3]:(w.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,C(a,i,c)]);case 2:if(n.sent(),a.msisdn=c,a.callConfirm)try{return a.callConfirm(),[2,t(t({},g),{type:"MSISDNEntry",result:s()})]}catch(e){return b="Confirm function failed",w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:(null==e?void 0:e.toString())||"Error calling window.callConfirm function",message:e.message}),[2,S({errorType:"TPayConfirmError",error:b,message:b})]}return E="Confirm function not found",w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:E,message:E}),[2,S({errorType:"TPayConfirmError",error:E,message:E})];case 3:return w.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,C(a,i,c)];case 4:return k=n.sent(),w.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),"SingleMSISDNSubmissionResult"===k.type&&k.redirectUrl?(w.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),w.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:k.redirectUrl}),a.location.href=k.redirectUrl,[2]):d&&d.storeMsisdn&&"true"===d.storeMsisdn?[4,y(c).then((function(e){e&&e.data&&e.data.success?w.customEvent("Flow","advance-auto","msisdn-stored-success"):w.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){w.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,6];case 5:n.sent(),n.label=6;case 6:return U="SingleMSISDNSubmissionResult"===(null==k?void 0:k.type)?null==k?void 0:k.operator:"",N={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},P=new Event("onPinPage"),null==a||a.dispatchEvent(P),[2,t(t({},g),{type:"PINEntry",result:o(),data:t({actualPIN:"SingleMSISDNSubmissionResult"===k.type?k.pin:null,msisdn:c,operator:U,pinMaxLength:""!==U&&N[U]?N[U]:null,isHeaderEnrichmentSuccess:_},"SingleMSISDNSubmissionResult"===k.type&&(null==k?void 0:k.userType)?{userType:k.userType}:{})})];case 7:return j=n.sent(),console.warn(j),R=j.type,w.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:R,error:j.toString(),message:j.message,productUrl:j.productUrl}),_&&p(l({type:v.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),f.includes(R)&&(null===(q=null===(L=null==a?void 0:a.pac_analytics)||void 0===L?void 0:L.visitor)||void 0===q?void 0:q.waterFallRedirectUrl)&&(w.customEvent("tallyman.v1-pin","redirect","waterfall-redirect",{redirect_url:null===(O=null===(x=null==a?void 0:a.pac_analytics)||void 0===x?void 0:x.visitor)||void 0===O?void 0:O.waterFallRedirectUrl,errorType:R}),a.location.href=null===(W=null===(V=null==a?void 0:a.pac_analytics)||void 0===V?void 0:V.visitor)||void 0===W?void 0:W.waterFallRedirectUrl),[2,S({errorType:R,error:j.toString(),message:j.message,productUrl:j.productUrl})];case 8:return[2]}}))}))})),O=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,s=r.pin,d=r.extraParams,u=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,v,p,f,m,S,_,g;return n(this,(function(n){switch(n.label){case 0:if(e=u(),!(null===(_=null===(S=null===(m=null==e?void 0:e.strategy)||void 0===m?void 0:m.currentState)||void 0===S?void 0:S.data)||void 0===_?void 0:_.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(g=e.pinFlow)||void 0===g?void 0:g.currentState,n.label=1;case 1:return n.trys.push([1,5,,6]),w.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:s}),[4,T(a,s,r,d)];case 2:return v=n.sent(),w.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:s,finalUrl:v.productUrl}),v.gatewayRedirectUrl&&""!==v.gatewayRedirectUrl&&(w.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:s,gatewayRedirectUrl:v.gatewayRedirectUrl}),a.location.href=v.gatewayRedirectUrl),d&&d.storeMsisdn&&"true"===d.storeMsisdn?[4,y(o).then((function(e){e&&e.data&&e.data.success?w.customEvent("Flow","advance-auto","msisdn-stored-success"):w.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){w.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:n.sent(),n.label=4;case 4:return[2,t(t({},i),{type:"PINEntry",result:c({finalUrl:v.productUrl,isAlreadySubscribed:v.isAlreadySubscribed||!1})})];case 5:switch(p=n.sent(),console.warn(p),f=void 0,p.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidPIN":f="InvalidPIN";break;case"SessionBlocked":f="SessionBlocked";break;case"ExpiredPIN":f="ExpiredPIN";break;case"InsufficientBalance":f="InsufficientBalance";break;case"DuplicatedRequest":f="DuplicatedRequest";break;default:f="UnknownError"}return w.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:s,errorType:f,error:p.toString(),message:p.message,productUrl:p.productUrl}),setTimeout((function(){p.productUrl&&(a.location.href=p.productUrl)}),0),[2,l({errorType:f,error:p.toString(),message:p.message,productUrl:p.productUrl})];case 6:return[2]}}))}))})),V=i("pinFlow/backToStartAction",(function(r,t){var i=t.getState,a=t.dispatch,s=t.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,t,c;return n(this,(function(n){try{if(w.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e=i(),!(null===(c=null===(t=null===(r=null==e?void 0:e.strategy)||void 0===r?void 0:r.currentState)||void 0===t?void 0:t.data)||void 0===c?void 0:c.config))return[2,s({errorType:"UnexpectedState"})];if("pin"===e.strategy.currentState.data.strategy)return[2,{type:"MSISDNEntry",result:o()}];a(u())}catch(e){return console.warn(e),[2,s({errorType:"UnexpectedState"})]}return[2]}))}))})),W={PS:"970"},Y=function(e,n){if(!e||!n)return"";var r=e.toUpperCase(),t=W[r];return t?"+".concat(t):(console.error("Country code not found for",e),"")},z=a({name:"pinFlow",initialState:q,reducers:{},extraReducers:function(e){e.addCase(x.pending,(function(e){var n,r,t,i,a,o,c;e.currentState={type:(null===(r=null===(n=null===window||void 0===window?void 0:window.location)||void 0===n?void 0:n.search)||void 0===r?void 0:r.includes("ui_show_pin_entry"))||(null===(i=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.search)||void 0===i?void 0:i.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(o=null===(a=null===window||void 0===window?void 0:window.pac_analytics)||void 0===a?void 0:a.visitor)||void 0===o?void 0:o.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:s(),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(x.rejected,(function(e,n){var r,t,i,a,o,s,c;e.currentState={type:(null===(t=null===(r=null===window||void 0===window?void 0:window.location)||void 0===r?void 0:r.search)||void 0===t?void 0:t.includes("ui_show_pin_entry"))||(null===(a=null===(i=null===window||void 0===window?void 0:window.location)||void 0===i?void 0:i.search)||void 0===a?void 0:a.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(s=null===(o=null===window||void 0===window?void 0:window.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===s?void 0:s.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:d(n.payload),data:e.currentState.data}})).addCase(O.pending,(function(e){e.currentState={type:"PINEntry",result:s(),data:e.currentState.data}})).addCase(O.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(O.rejected,(function(e,n){e.currentState={type:"PINEntry",result:d(n.payload),data:e.currentState.data}})).addCase(V.fulfilled,(function(e,n){e.currentState=n.payload}))}}),H=z.reducer;z.actions;export{V as backToStartAction,k as pinFlowMatch,H as pinFlowReducer,x as submitMSISDNAction,O as submitPinAction,E as usePinFlowState};
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 zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst verifyPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams,\n uniqid,\n evinaTid,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n pin: string;\n extraParams: IHash;\n uniqid: string;\n evinaTid: string;\n search: string;\n}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n // Base parameters object\n const params = {\n action: 'verify-pin',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n pin,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n ClickID: window.antifraud_click_id || '',\n partner_cid: window.partner_cid || '',\n sam_evina_tid: evinaTid,\n uniqid,\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id: window.antifraud_id || '',\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst mcpShield = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator,\n uniqid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n operator?: string;\n uniqid?: string;\n}): Promise<IMcpShieldResult> => {\n const pageUrl = window.location.href;\n const ipAdd = window.pac_analytics.visitor.ip;\n\n const params = new URLSearchParams({\n action: 'mcp-shield',\n country,\n slug,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n client_lpu: pageUrl,\n ...(operator && { operator }),\n ...(uniqid && { uniqid })\n });\n\n // Conditionally add client_ip if it exists\n if (ipAdd) {\n params.append('client_ip', ipAdd);\n }\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params.toString()}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { triggerPin, verifyPin, mcpShield };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { checkSubscription } from '../../sharedApi/checkSubscription';\nimport {\n IHash,\n IMcpShieldResult,\n IMSISDNSubmissionResult,\n IPINSubmissionResult,\n MultiOperatorMSISDNSubmissionResult,\n SingleMSISDNSubmissionResult\n} from '../../sharedFlowTypes/PinTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { left, loop, right } from '../../utilities/helpers';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { mcpShield, triggerPin, verifyPin } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult | MultiOperatorMSISDNSubmissionResult> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return submitMSISDNForMultipleOperators(window, config, internationalMSISDN, config.operators, extraParams);\n }\n return submitMSISDNOnce(window, config, internationalMSISDN, extraParams);\n}\n\nlet uniqidResult = '';\n// eslint-disable-next-line consistent-return\nexport async function loadMcpShield(window: Window, config: IConfig): Promise<IMcpShieldResult> {\n if (config) {\n const { slug, country, device } = config;\n\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({ window, country, slug, device, offer, rockmanId });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n return mcpShieldResult;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nasync function submitMSISDNOnce(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() trigger-pin action`) as IError & { type: string };\n submissionError.type = 'InvalidMSISDN';\n throw submissionError;\n }\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n // @ts-ignore\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.skip_validation === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n if (newExtraParams['skip-validation'] === '1') {\n isSkipValidation = true;\n }\n\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n const { rockmanId } = window.pac_analytics.visitor;\n\n const { slug, country, device, offer } = config;\n\n const search = window.location.search.substr(1) || '';\n const uniqid = !!uniqidResult && uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const result: IMSISDNSubmissionResult = await triggerPin({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams: newExtraParams,\n search,\n uniqid,\n evinaTid\n });\n\n if (result.isContentBlocked === true) {\n window.isContentBlocked = true;\n }\n if (result.success === false) {\n 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 case result.message.includes('duplicated_request'):\n error.type = 'DuplicatedRequest';\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 const search = window.location.search.substr(1) || '';\n\n const pinResult: IPINSubmissionResult = await verifyPin({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams: newExtraParams,\n uniqid,\n evinaTid,\n search\n });\n if (pinResult.success === false) {\n let errorType: string;\n\n switch (true) {\n case pinResult.message.includes('pin does not match'):\n errorType = 'InvalidPIN';\n break;\n case pinResult.message.includes('mcp blocked'):\n errorType = 'SessionBlocked';\n break;\n case pinResult.message.includes('expired_pin'):\n errorType = 'ExpiredPIN';\n break;\n case pinResult.message.includes('insufficient_balance'):\n errorType = 'InsufficientBalance';\n break;\n case pinResult.message.includes('duplicated_request'):\n errorType = 'DuplicatedRequest';\n break;\n case pinResult.message.includes('ALREADY SUBSCRIBED'):\n errorType = 'AlreadySubscribed';\n break;\n default:\n errorType = 'InvalidPIN';\n }\n\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${pinResult.message}`) as IError & {\n type: string;\n };\n pinError.type = errorType;\n console.error(pinError);\n throw pinError;\n } else if (pinResult.async === true) {\n // Needed for ES https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n if (pinResult.product_url && pinResult.product_url !== '' && country?.toLowerCase() === 'es') {\n return { gatewayRedirectUrl: pinResult.product_url };\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n checkSubscription({ window, country, slug, device, offer, rockmanId, extraParams });\n\n const checkResult: ICheckSubscriptionResult = await loop(\n check,\n 100,\n (r) => r.success || r.message === 'invalid_pin',\n 0\n );\n if (checkResult.success === true) {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: checkResult.product_url || null, isAlreadySubscribed };\n }\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${checkResult.message}`) as IError & {\n type: string;\n };\n pinError.type = 'InvalidPIN';\n\n pinError.message = checkResult.message;\n\n throw pinError;\n } else {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: pinResult.product_url || null, isAlreadySubscribed };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IHash,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy, setStrategyExtraData } from '../strategy/strategySlice';\nimport submitMSISDN, { submitPIN } from './main';\n\nconst mockedPINState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet<PINEntryFailure, PINEntrySuccess>(),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedCompletedState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({ finalUrl: '/product' }),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedMSISDNEntryFailure: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\n// Define the initial state\nconst defaultInitialState: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\n/**\n * Sets the initial state of the pin flow based on the search parameters in the URL or the default state.\n *\n * @param {Window} window - The window object.\n * @return {PinFlowState} The initial state of the pin flow.\n */\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n const pinPageEvent = new Event('onPinPage');\n const isPinEntryStep =\n (search.ui_show_pin_entry && search.ui_show_pin_entry === '1') ||\n (search['show-pin-entry'] && search['show-pin-entry'] === '1');\n const isShowThankYouStep = search['show-thank-you'] && search['show-thank-you'] === '1';\n const isShowCustomError = search?.show_custom_error === '1';\n\n const rawParam = search?.ui_error_message ?? '';\n const normalizedParam = rawParam.replace(/\\+/g, '%20');\n const errorMsg = decodeURIComponent(normalizedParam);\n const mapParamError: { [key: string]: string } = {\n 'This mobile number is blacklisted': 'BlacklistedNumber'\n };\n\n const msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: mapParamError[errorMsg] || 'SomethingWentWrong',\n error: errorMsg\n })\n }\n };\n\n const thankYouState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: search?.product_url || ''\n }),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n\n const initalPinEntryState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet(),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n if (isPinEntryStep) {\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return initalPinEntryState;\n }\n if (isShowThankYouStep) {\n return thankYouState;\n }\n if (isShowCustomError) {\n return msisdnError;\n }\n\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-failure-state':\n return mockedMSISDNEntryFailure;\n case 'pin-state':\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return mockedPINState;\n case 'completed-state':\n return mockedCompletedState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls trigger-pin api that sends a pin to the user\n * Sets state to show pin entry\n */\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\nexport const submitMSISDNAction = createAsyncThunk<\n PINEntryState | MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, isHeaderEnrichmentSuccess } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n const searchObj = searchToObject(window) as { ui_show_pin_entry: string };\n\n try {\n /**\n * Palestine calling code is +970\n * But there was a request to have it as +972 only for gateway shemaroo\n */\n // Start PS Calling code temp fix\n if (config?.country.toLowerCase() === 'ps' && config?.slug.includes('shemaroo')) {\n const prefix = getInputValuePrefix(config?.country, msisdn);\n if (prefix === '+970') {\n msisdn = msisdn.replace('970', '972');\n }\n }\n // END PS Calling code temp fix\n\n const jsLinkResult = window?.pac_analytics?.visitor?.genericJsLinkResult;\n\n // If the flow is TPAY the above trigger pin will only do tracking on the backend and not actually request a pin from gateway\n // The code below handles that request\n if (jsLinkResult?.gateway === 'tpay' && !searchObj?.ui_show_pin_entry) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n await submitMSISDN(window, config, msisdn); // trigger pin call requested here by Adrian for BE tracking\n window.msisdn = msisdn;\n if (window.callConfirm) {\n try {\n window.callConfirm();\n return {\n ...pinFlowCurrentState,\n type: 'MSISDNEntry',\n result: RDS.Loading()\n };\n } catch (ex) {\n // Catch any unexpected errors\n const errorMsg = 'Confirm function failed';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: ex?.toString() || 'Error calling window.callConfirm function',\n message: ex.message\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n }\n }\n // Catch any unexpected errors\n const errorMsg = 'Confirm function not found';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n\n // END TPAY TRIGGER PIN\n }\n\n // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n // End Trigger Pin\n\n /**\n * Some flows require us to redirect to a url after trigger pin to check for fraud\n * The url will then do some processing and return back to ouisys with\n * extra param in the url that will tell us to show pin entry step or error\n */\n\n // Start Pin Redirect\n if (msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult.redirectUrl) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-redirect', {\n redirectUrl: msisdnSubmissionResult.redirectUrl\n });\n window.location.href = msisdnSubmissionResult.redirectUrl;\n return;\n }\n // End Pin Redirect\n\n // Start handle store msisdn\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End handle store msisdn\n\n const operator: string =\n msisdnSubmissionResult?.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult?.operator : '';\n\n const pinMaxLengthByOp: { [key: string]: number } = {\n SA_MOBILY: 6,\n SA_STC: 4,\n SA_ZAIN: 4\n };\n\n /**\n * onPinPage\n * some scripts on the server need to be injected on pin page/view\n * This event will be handled on server\n */\n const pinPageEvent = new Event('onPinPage');\n window?.dispatchEvent(pinPageEvent);\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.NothingYet(),\n data: {\n actualPIN: msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.pin : null,\n msisdn,\n operator,\n pinMaxLength: operator !== '' && pinMaxLengthByOp[operator] ? pinMaxLengthByOp[operator] : null,\n isHeaderEnrichmentSuccess,\n ...(msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult?.userType\n ? { userType: msisdnSubmissionResult.userType }\n : {})\n }\n };\n // END NORMAL TRIGGER PIN\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\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}\n\nexport const submitPinAction = createAsyncThunk<\n PINEntryState,\n SubmitPINArgs,\n {\n rejectValue: PINEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitPinAction', async ({ window, msisdn, pin, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submitted', { msisdn, pin });\n const result = await submitPIN(window, pin, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submission-success', {\n msisdn,\n pin,\n finalUrl: result.productUrl\n });\n\n /**\n * Gateway redirect\n * Value returned in this case is actually the gateway url instead of the product url\n * More details on this ticket:\n * https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n */\n // Start Gateway redirect\n if (result.gatewayRedirectUrl && result.gatewayRedirectUrl !== '') {\n tracker.advancedInFlow('tallyman.v1-pin', 'gateway-redirect', {\n msisdn,\n pin,\n gatewayRedirectUrl: result.gatewayRedirectUrl\n });\n window.location.href = result.gatewayRedirectUrl;\n }\n // End Gateway redirect\n\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End store msisdn\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: result.productUrl,\n isAlreadySubscribed: result.isAlreadySubscribed || false\n })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: PINEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidPIN':\n errorType = 'InvalidPIN';\n break;\n case 'SessionBlocked':\n errorType = 'SessionBlocked';\n break;\n case 'ExpiredPIN':\n errorType = 'ExpiredPIN';\n break;\n case 'InsufficientBalance':\n errorType = 'InsufficientBalance';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\n break;\n default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n // Redirect to the product url if returned in the exception\n setTimeout(() => {\n if (ex.productUrl) {\n window.location.href = ex.productUrl;\n }\n }, 0);\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('pinFlow/backToStartAction', async (_, { getState, dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { strategy } = state.strategy.currentState.data;\n if (strategy === 'pin') {\n return {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n };\n }\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\ntype CountryCodeMap = { [country: string]: string };\n\nconst countryCodes: CountryCodeMap = {\n PS: '970'\n // Add other countries and codes here\n};\n\nconst getInputValuePrefix = (country: string, international: string): string => {\n if (!country || !international) return '';\n\n // Convert the country to uppercase and retrieve the country code\n const normalizedCountry = country.toUpperCase();\n const countryCode = countryCodes[normalizedCountry];\n\n // Check if the country code exists in the mapping\n if (!countryCode) {\n console.error('Country code not found for', country);\n return '';\n }\n\n return `+${countryCode}`;\n};\n\n// Define your slice\nconst pinFlowSlice = createSlice({\n name: 'pinFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Loading(),\n data: state.currentState.data\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState | MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n data: state.currentState.data\n };\n })\n .addCase(submitPinAction.pending, (state) => {\n state.currentState = { type: 'PINEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitPinAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitPinAction.rejected, (state, action: PayloadAction<PINEntryFailure>) => {\n state.currentState = { type: 'PINEntry', result: RDS.Failure(action.payload), data: state.currentState.data };\n })\n .addCase(backToStartAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n });\n }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\n\nexport const selectPinFlowState = (state: any) => state.pinFlow;\n"],"names":["usePinFlowState","useSelector","state","pinFlow","currentState","pinFlowMatch","_a","msisdnEntry","pinEntry","type","result","data","Error","checkIsCleanTraffic","country","window","shouldBlock","triggerPin","slug","device","offer","msisdn","rockmanId","extraParams","search","uniqid","evinaTid","cleanTrafficString","extraParamsQs","concat","Object","keys","map","k","filter","Boolean","join","cleanSearchParams","params","action","offerId","rockman_id","sam_evina_tid","page","encodeURIComponent","_b","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","zain_antifraud_id","korek_antifraud_id","queryString","entries","__read","key","value","host","DEV_BASE_URL","url","fetch","then","x","json","verifyPin","pin","bupperizeCountry","ClickID","antifraud_click_id","mcpShield","operator","pageUrl","ipAdd","pac_analytics","visitor","ip","URLSearchParams","__assign","toString","client_lpu","append","submitMSISDN","maybeConfig","internationalMSISDN","config","automaticallySubmitAllOperators","operators","length","submitMSISDNForMultipleOperators","submitMSISDNOnce","uniqidResult","submissionError","newExtraParams","isSkipValidation","searchObj","searchToObject","success","skip_validation","match","substr","tid","sent","isContentBlocked","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","errorType","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","ui_show_pin_entry","isShowThankYouStep","isShowCustomError","show_custom_error","normalizedParam","ui_error_message","replace","errorMsg","decodeURIComponent","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","jsLinkResult","_j","_h","genericJsLinkResult","gateway","tracker","advancedInFlow","_k","callConfirm","RDS.Loading","ex","errorMsg_1","recedeInFlow","msisdnSubmissionResult","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","setStrategyExtraData","PossibleTypes","PIN","submitPinAction","ex_2","setTimeout","backToStartAction","_","identifyStrategy","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"pinFlow.js","sources":["../src/flows/pinFlow/hooks/usePinFlowState.ts","../src/flows/pinFlow/match.ts","../src/sharedApi/checkSubscription.ts","../src/flows/pinFlow/api.ts","../src/flows/pinFlow/main.ts","../src/flows/pinFlow/pinFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const usePinFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.pinFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IMsisdnSumbitNextData,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryFailure,\n PINEntrySuccess,\n PinFlowCurrentState\n} from '../../sharedFlowTypes/PinTypes';\n\nfunction pinFlowMatch<R>({\n msisdnEntry,\n pinEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n pinEntry: (rds: RDS.RemoteDataState<PINEntryFailure, PINEntrySuccess>, nextData: IMsisdnSumbitNextData) => R;\n}): (state: PinFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n case 'PINEntry':\n return pinEntry(state.result, state.data);\n default:\n throw new Error('Invalid State');\n }\n };\n}\n\nexport { pinFlowMatch };\n","import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IHash } from '../common-types/IHash';\nimport { bupperizeCountry } from '../utilities/bupperizeCountry';\n\nconst checkSubscription = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParams?: IHash; // Marked as optional if currently unused\n}): Promise<ICheckSubscriptionResult> => {\n const params = {\n action: 'check-subscription',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}`;\n return fetch(url).then((response) => response.json());\n};\n\nexport { checkSubscription };\n","import { IHash, IMcpShieldResult, IMSISDNSubmissionResult, IPINSubmissionResult } from '../../sharedFlowTypes/PinTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst checkIsCleanTraffic = (country: string): string => {\n if (country === 'be') {\n if (typeof window !== 'undefined' && window.shouldBlock === true) {\n return '&is-clean-traffic=false';\n }\n return '&is-clean-traffic=true';\n }\n return '';\n};\nconst triggerPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams,\n search,\n uniqid,\n evinaTid\n}: {\n window?: Window;\n country: string;\n slug: string;\n device: 'smart' | 'feature';\n offer: string;\n msisdn: string;\n rockmanId: string;\n extraParams: IHash;\n search: string;\n uniqid?: string;\n evinaTid?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n\n // Base parameters object\n const params = {\n action: 'trigger-pin',\n country,\n slug,\n device,\n offerId: offer,\n msisdn,\n rockman_id: rockmanId,\n sam_evina_tid: evinaTid,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n partner_transaction_id: window.partner_transaction_id || '',\n partner_timestamp: window.partner_timestamp || '',\n partner_cid: window.partner_cid || '',\n uniqid: uniqid || '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst verifyPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams,\n uniqid,\n evinaTid,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n pin: string;\n extraParams: IHash;\n uniqid: string;\n evinaTid: string;\n search: string;\n}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n // Base parameters object\n const params = {\n action: 'verify-pin',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n pin,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n ClickID: window.antifraud_click_id || '',\n partner_cid: window.partner_cid || '',\n sam_evina_tid: evinaTid,\n uniqid,\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id: window.antifraud_id || '',\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst mcpShield = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator,\n uniqid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n operator?: string;\n uniqid?: string;\n}): Promise<IMcpShieldResult> => {\n const pageUrl = window.location.href;\n const ipAdd = window.pac_analytics.visitor.ip;\n\n const params = new URLSearchParams({\n action: 'mcp-shield',\n country,\n slug,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n client_lpu: pageUrl,\n ...(operator && { operator }),\n ...(uniqid && { uniqid })\n });\n\n // Conditionally add client_ip if it exists\n if (ipAdd) {\n params.append('client_ip', ipAdd);\n }\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params.toString()}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { triggerPin, verifyPin, mcpShield };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { checkSubscription } from '../../sharedApi/checkSubscription';\nimport {\n IHash,\n IMcpShieldResult,\n IMSISDNSubmissionResult,\n IPINSubmissionResult,\n MultiOperatorMSISDNSubmissionResult,\n SingleMSISDNSubmissionResult\n} from '../../sharedFlowTypes/PinTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { left, loop, right } from '../../utilities/helpers';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { normaliseErrorCode } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { mcpShield, triggerPin, verifyPin } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult | MultiOperatorMSISDNSubmissionResult> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return submitMSISDNForMultipleOperators(window, config, internationalMSISDN, config.operators, extraParams);\n }\n return submitMSISDNOnce(window, config, internationalMSISDN, extraParams);\n}\n\nlet uniqidResult = '';\n// eslint-disable-next-line consistent-return\nexport async function loadMcpShield(window: Window, config: IConfig): Promise<IMcpShieldResult> {\n if (config) {\n const { slug, country, device } = config;\n\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({ window, country, slug, device, offer, rockmanId });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n return mcpShieldResult;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nasync function submitMSISDNOnce(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() trigger-pin action`) as IError & { type: string };\n submissionError.type = 'InvalidMSISDN';\n throw submissionError;\n }\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n // @ts-ignore\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.skip_validation === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n if (newExtraParams['skip-validation'] === '1') {\n isSkipValidation = true;\n }\n\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n const { rockmanId } = window.pac_analytics.visitor;\n\n const { slug, country, device, offer } = config;\n\n const search = window.location.search.substr(1) || '';\n const uniqid = !!uniqidResult && uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const result: IMSISDNSubmissionResult = await triggerPin({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams: newExtraParams,\n search,\n uniqid,\n evinaTid\n });\n\n if (result.isContentBlocked === true) {\n window.isContentBlocked = true;\n }\n if (result.success === false) {\n // derive a default type from the message\n const defaultType: string | null = result.message.includes('ALREADY SUBSCRIBED')\n ? 'AlreadySubscribed'\n : /invalid/i.test(result.message)\n ? 'InvalidMsisdn'\n : result.message.includes('duplicated_request')\n ? 'DuplicatedRequest'\n : null;\n\n // prefer an explicit error_code mapping when available\n const type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;\n\n // build and annotate the Error\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string | null;\n productUrl: string;\n };\n\n Object.assign(error, {\n type,\n message: result.message,\n productUrl: result.product_url ?? ''\n });\n\n throw error;\n } else {\n window.operator = result.operator; // currently used on server for KW_STC if present dont call empello for Shemaroo\n const codesWithMcpShied: { [key: string]: { [key: string]: string } } = {\n kw: {\n kw_viva: 'kw_viva'\n },\n k2: {\n k2_viva: 'k2_viva'\n },\n bh: {\n bh_viva: 'bh_viva'\n }\n };\n if (\n country &&\n result.operator &&\n ((codesWithMcpShied[country.toLowerCase()] &&\n codesWithMcpShied[country.toLowerCase()][result.operator.toLowerCase()]) ||\n country.toLowerCase() === 'iq') &&\n !window.isCallBlockApi &&\n !window.Empello // set on server https://www.notion.so/sammedia/KW-Agency-Shemaroo-STC-integration-1a114991683d4af79eb01a4d96789f30\n ) {\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator: result.operator,\n uniqid\n });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n\n if (result.javascript) {\n loadScriptInnerHtml(result.javascript);\n }\n\n return {\n type: 'SingleMSISDNSubmissionResult',\n pin: result.pin,\n uniqidResult,\n operator: result.operator,\n redirectUrl: result?.redirect_to_url, // For pin redirect empello\n ...(result?.userType ? { userType: result?.userType } : {}) // For Peru user plan if prepaid or postpaid\n };\n }\n}\n\nasync function submitMSISDNForMultipleOperators(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n operators: string[],\n extraParams?: IHash\n): Promise<MultiOperatorMSISDNSubmissionResult> {\n const results = await Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await submitMSISDNOnce(window, config, internationalMSISDN, {\n ...extraParams,\n operator: o\n });\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const alreadySubscribed = results.find((r: any) => r.type === 'left' && r.value?.type === 'AlreadySubscribed');\n\n if (results.every((r) => r.type === 'left')) {\n // no submission worked\n throw results[0].value;\n } else if (alreadySubscribed) {\n throw alreadySubscribed.value;\n } else {\n return {\n type: 'MultiOperatorMSISDNSubmissionResult'\n };\n }\n}\n\nexport async function submitPIN(\n window: Window,\n pin: string,\n config: IConfig,\n extraParams: IHash\n): Promise<{ productUrl?: string; isAlreadySubscribed?: boolean; gatewayRedirectUrl?: string }> {\n if (window.hostCountry && window.hostSlug) {\n config.country = window.hostCountry;\n config.slug = window.hostSlug;\n }\n const { slug, country, device } = config;\n const { offer } = window.pac_analytics.visitor;\n\n const newExtraParams = extraParams || {};\n const searchObj = searchToObject(window) as any;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n newExtraParams['skip-validation'] = '1';\n }\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (!pin) {\n const emptyPinError = new Error(`Error in submitMSISDN() verify-pin action:\\n Pin Cannot Be Empty`) as IError & {\n type: string;\n };\n emptyPinError.type = 'InvalidPIN';\n throw emptyPinError;\n }\n const uniqid = uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n const search = window.location.search.substr(1) || '';\n\n const pinResult: IPINSubmissionResult = await verifyPin({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams: newExtraParams,\n uniqid,\n evinaTid,\n search\n });\n if (pinResult.success === false) {\n let errorType: string;\n\n switch (true) {\n case pinResult.message.includes('pin does not match'):\n errorType = 'InvalidPIN';\n break;\n case pinResult.message.includes('mcp blocked'):\n errorType = 'SessionBlocked';\n break;\n case pinResult.message.includes('expired_pin'):\n errorType = 'ExpiredPIN';\n break;\n case pinResult.message.includes('insufficient_balance'):\n errorType = 'InsufficientBalance';\n break;\n case pinResult.message.includes('duplicated_request'):\n errorType = 'DuplicatedRequest';\n break;\n case pinResult.message.includes('ALREADY SUBSCRIBED'):\n errorType = 'AlreadySubscribed';\n break;\n default:\n errorType = 'InvalidPIN';\n }\n\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${pinResult.message}`) as IError & {\n type: string;\n };\n pinError.type = errorType;\n console.error(pinError);\n throw pinError;\n } else if (pinResult.async === true) {\n // Needed for ES https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n if (pinResult.product_url && pinResult.product_url !== '' && country?.toLowerCase() === 'es') {\n return { gatewayRedirectUrl: pinResult.product_url };\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n checkSubscription({ window, country, slug, device, offer, rockmanId, extraParams });\n\n const checkResult: ICheckSubscriptionResult = await loop(\n check,\n 100,\n (r) => r.success || r.message === 'invalid_pin',\n 0\n );\n if (checkResult.success === true) {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: checkResult.product_url || null, isAlreadySubscribed };\n }\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${checkResult.message}`) as IError & {\n type: string;\n };\n pinError.type = 'InvalidPIN';\n\n pinError.message = checkResult.message;\n\n throw pinError;\n } else {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: pinResult.product_url || null, isAlreadySubscribed };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IHash,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { ErrorType, redirectErrorTypes } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy, setStrategyExtraData } from '../strategy/strategySlice';\nimport submitMSISDN, { submitPIN } from './main';\n\nconst mockedPINState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet<PINEntryFailure, PINEntrySuccess>(),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedCompletedState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({ finalUrl: '/product' }),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedMSISDNEntryFailure: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\n// Define the initial state\nconst defaultInitialState: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\n/**\n * Sets the initial state of the pin flow based on the search parameters in the URL or the default state.\n *\n * @param {Window} window - The window object.\n * @return {PinFlowState} The initial state of the pin flow.\n */\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n const pinPageEvent = new Event('onPinPage');\n const isPinEntryStep =\n (search.ui_show_pin_entry && search.ui_show_pin_entry === '1') ||\n (search['show-pin-entry'] && search['show-pin-entry'] === '1');\n const isShowThankYouStep = search['show-thank-you'] && search['show-thank-you'] === '1';\n const isShowCustomError = search?.show_custom_error === '1';\n\n const rawParam = search?.ui_error_message ?? '';\n const normalizedParam = rawParam.replace(/\\+/g, '%20');\n const errorMsg = decodeURIComponent(normalizedParam);\n const mapParamError: { [key: string]: ErrorType } = {\n 'This mobile number is blacklisted': 'BlacklistedNumber'\n };\n\n const msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: mapParamError[errorMsg] || 'SomethingWentWrong',\n error: errorMsg\n })\n }\n };\n\n const thankYouState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: search?.product_url || ''\n }),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n\n const initalPinEntryState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet(),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n if (isPinEntryStep) {\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return initalPinEntryState;\n }\n if (isShowThankYouStep) {\n return thankYouState;\n }\n if (isShowCustomError) {\n return msisdnError;\n }\n\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-failure-state':\n return mockedMSISDNEntryFailure;\n case 'pin-state':\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return mockedPINState;\n case 'completed-state':\n return mockedCompletedState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls trigger-pin api that sends a pin to the user\n * Sets state to show pin entry\n */\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\nexport const submitMSISDNAction = createAsyncThunk<\n PINEntryState | MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, isHeaderEnrichmentSuccess } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n const searchObj = searchToObject(window) as { ui_show_pin_entry: string };\n\n try {\n /**\n * Palestine calling code is +970\n * But there was a request to have it as +972 only for gateway shemaroo\n */\n // Start PS Calling code temp fix\n if (config?.country.toLowerCase() === 'ps' && config?.slug.includes('shemaroo')) {\n const prefix = getInputValuePrefix(config?.country, msisdn);\n if (prefix === '+970') {\n msisdn = msisdn.replace('970', '972');\n }\n }\n // END PS Calling code temp fix\n\n const jsLinkResult = window?.pac_analytics?.visitor?.genericJsLinkResult;\n\n // If the flow is TPAY the above trigger pin will only do tracking on the backend and not actually request a pin from gateway\n // The code below handles that request\n if (jsLinkResult?.gateway === 'tpay' && !searchObj?.ui_show_pin_entry) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n await submitMSISDN(window, config, msisdn); // trigger pin call requested here by Adrian for BE tracking\n window.msisdn = msisdn;\n if (window.callConfirm) {\n try {\n window.callConfirm();\n return {\n ...pinFlowCurrentState,\n type: 'MSISDNEntry',\n result: RDS.Loading()\n };\n } catch (ex) {\n // Catch any unexpected errors\n const errorMsg = 'Confirm function failed';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: ex?.toString() || 'Error calling window.callConfirm function',\n message: ex.message\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n }\n }\n // Catch any unexpected errors\n const errorMsg = 'Confirm function not found';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n\n // END TPAY TRIGGER PIN\n }\n\n // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n // End Trigger Pin\n\n /**\n * Some flows require us to redirect to a url after trigger pin to check for fraud\n * The url will then do some processing and return back to ouisys with\n * extra param in the url that will tell us to show pin entry step or error\n */\n\n // Start Pin Redirect\n if (msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult.redirectUrl) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-redirect', {\n redirectUrl: msisdnSubmissionResult.redirectUrl\n });\n window.location.href = msisdnSubmissionResult.redirectUrl;\n return;\n }\n // End Pin Redirect\n\n // Start handle store msisdn\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End handle store msisdn\n\n const operator: string =\n msisdnSubmissionResult?.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult?.operator : '';\n\n const pinMaxLengthByOp: { [key: string]: number } = {\n SA_MOBILY: 6,\n SA_STC: 4,\n SA_ZAIN: 4\n };\n\n /**\n * onPinPage\n * some scripts on the server need to be injected on pin page/view\n * This event will be handled on server\n */\n const pinPageEvent = new Event('onPinPage');\n window?.dispatchEvent(pinPageEvent);\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.NothingYet(),\n data: {\n actualPIN: msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.pin : null,\n msisdn,\n operator,\n pinMaxLength: operator !== '' && pinMaxLengthByOp[operator] ? pinMaxLengthByOp[operator] : null,\n isHeaderEnrichmentSuccess,\n ...(msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult?.userType\n ? { userType: msisdnSubmissionResult.userType }\n : {})\n }\n };\n // END NORMAL TRIGGER PIN\n } catch (ex) {\n console.warn(ex);\n const errorType = ex.type;\n\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess: false,\n config\n }\n })\n );\n }\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.waterFallRedirectUrl) {\n tracker.customEvent('tallyman.v1-pin', 'redirect', 'waterfall-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.waterFallRedirectUrl,\n errorType\n });\n window.location.href = window?.pac_analytics?.visitor?.waterFallRedirectUrl;\n }\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\n/**\n * submitPinAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: 'PINEntry', result: RDS.NothingYet()}}\n \n * Calls verify-pin api that check if the user enters a valid pin\n * Sets state to show thank you page if pin is valid\n */\ninterface SubmitPINArgs {\n window: Window;\n msisdn: string;\n pin: string;\n extraParams?: IHash;\n}\n\nexport const submitPinAction = createAsyncThunk<\n PINEntryState,\n SubmitPINArgs,\n {\n rejectValue: PINEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitPinAction', async ({ window, msisdn, pin, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submitted', { msisdn, pin });\n const result = await submitPIN(window, pin, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submission-success', {\n msisdn,\n pin,\n finalUrl: result.productUrl\n });\n\n /**\n * Gateway redirect\n * Value returned in this case is actually the gateway url instead of the product url\n * More details on this ticket:\n * https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n */\n // Start Gateway redirect\n if (result.gatewayRedirectUrl && result.gatewayRedirectUrl !== '') {\n tracker.advancedInFlow('tallyman.v1-pin', 'gateway-redirect', {\n msisdn,\n pin,\n gatewayRedirectUrl: result.gatewayRedirectUrl\n });\n window.location.href = result.gatewayRedirectUrl;\n }\n // End Gateway redirect\n\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End store msisdn\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: result.productUrl,\n isAlreadySubscribed: result.isAlreadySubscribed || false\n })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: PINEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidPIN':\n errorType = 'InvalidPIN';\n break;\n case 'SessionBlocked':\n errorType = 'SessionBlocked';\n break;\n case 'ExpiredPIN':\n errorType = 'ExpiredPIN';\n break;\n case 'InsufficientBalance':\n errorType = 'InsufficientBalance';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\n break;\n default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n // Redirect to the product url if returned in the exception\n setTimeout(() => {\n if (ex.productUrl) {\n window.location.href = ex.productUrl;\n }\n }, 0);\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('pinFlow/backToStartAction', async (_, { getState, dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { strategy } = state.strategy.currentState.data;\n if (strategy === 'pin') {\n return {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n };\n }\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\ntype CountryCodeMap = { [country: string]: string };\n\nconst countryCodes: CountryCodeMap = {\n PS: '970'\n // Add other countries and codes here\n};\n\nconst getInputValuePrefix = (country: string, international: string): string => {\n if (!country || !international) return '';\n\n // Convert the country to uppercase and retrieve the country code\n const normalizedCountry = country.toUpperCase();\n const countryCode = countryCodes[normalizedCountry];\n\n // Check if the country code exists in the mapping\n if (!countryCode) {\n console.error('Country code not found for', country);\n return '';\n }\n\n return `+${countryCode}`;\n};\n\n// Define your slice\nconst pinFlowSlice = createSlice({\n name: 'pinFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Loading(),\n data: state.currentState.data\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState | MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n data: state.currentState.data\n };\n })\n .addCase(submitPinAction.pending, (state) => {\n state.currentState = { type: 'PINEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitPinAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitPinAction.rejected, (state, action: PayloadAction<PINEntryFailure>) => {\n state.currentState = { type: 'PINEntry', result: RDS.Failure(action.payload), data: state.currentState.data };\n })\n .addCase(backToStartAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n });\n }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\n\nexport const selectPinFlowState = (state: any) => state.pinFlow;\n"],"names":["usePinFlowState","useSelector","state","pinFlow","currentState","pinFlowMatch","_a","msisdnEntry","pinEntry","type","result","data","Error","checkIsCleanTraffic","country","window","shouldBlock","triggerPin","slug","device","offer","msisdn","rockmanId","extraParams","search","uniqid","evinaTid","cleanTrafficString","extraParamsQs","concat","Object","keys","map","k","filter","Boolean","join","cleanSearchParams","params","action","offerId","rockman_id","sam_evina_tid","page","encodeURIComponent","_b","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","zain_antifraud_id","korek_antifraud_id","queryString","entries","__read","key","value","host","DEV_BASE_URL","url","fetch","then","x","json","verifyPin","pin","bupperizeCountry","ClickID","antifraud_click_id","mcpShield","operator","pageUrl","ipAdd","pac_analytics","visitor","ip","URLSearchParams","__assign","toString","client_lpu","append","submitMSISDN","maybeConfig","internationalMSISDN","config","automaticallySubmitAllOperators","operators","length","submitMSISDNForMultipleOperators","submitMSISDNOnce","uniqidResult","submissionError","newExtraParams","isSkipValidation","searchObj","searchToObject","success","skip_validation","match","substr","tid","sent","isContentBlocked","defaultType","message","includes","test","error_code","normaliseErrorCode","error","assign","productUrl","product_url","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","console","warn","loadScriptInnerHtml","source","err_2","javascript","redirectUrl","redirect_to_url","userType","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorType","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","ui_show_pin_entry","isShowThankYouStep","isShowCustomError","show_custom_error","normalizedParam","ui_error_message","replace","errorMsg","decodeURIComponent","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","jsLinkResult","_j","_h","genericJsLinkResult","gateway","tracker","advancedInFlow","_r","callConfirm","RDS.Loading","ex","errorMsg_1","recedeInFlow","msisdnSubmissionResult","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","setStrategyExtraData","PossibleTypes","PIN","redirectErrorTypes","_k","_l","waterFallRedirectUrl","redirect_url","_o","_m","_q","submitPinAction","ex_2","setTimeout","backToStartAction","_","identifyStrategy","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
2
+ import { E as ErrorType } from './normaliseErrorCode-DY03EaiP.js';
2
3
 
3
4
  interface MSISDNEntryState {
4
5
  type: 'MSISDNEntry';
@@ -8,7 +9,7 @@ declare type MoFlowCurrentState = MSISDNEntryState;
8
9
  interface MoFlowState {
9
10
  currentState: MoFlowCurrentState;
10
11
  }
11
- declare type MSISDNEntryErrorTypes = 'AlreadySubscribed' | 'BlacklistedMsisdn' | 'DuplicatedRequest' | 'InvalidMSISDN' | 'InactiveOperator' | 'InvalidSubscriptionId' | 'NotEligibleMsisdn' | 'ValidationIssue' | 'InsufficientBalance' | 'AntiFraudError' | 'VasBlocked' | 'AccountSuspended' | 'SalesCapReached' | 'SubscriptionApiFailure' | 'ReSubscriptionBlocked' | 'ReLeadBlocked' | 'UnknownError' | 'UnexpectedState';
12
+ declare type MSISDNEntryErrorTypes = ErrorType;
12
13
  declare type MSISDNEntryFailure = {
13
14
  errorType: MSISDNEntryErrorTypes;
14
15
  error?: any;
@@ -1,4 +1,5 @@
1
1
  import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
2
+ import { E as ErrorType } from './normaliseErrorCode-DY03EaiP.js';
2
3
 
3
4
  interface ExtraData {
4
5
  actualPIN: string | null;
@@ -21,7 +22,7 @@ declare type PinFlowCurrentState = MSISDNEntryState | PINEntryState;
21
22
  interface PinFlowState {
22
23
  currentState: PinFlowCurrentState;
23
24
  }
24
- declare type MSISDNEntryErrorTypes = 'AlreadySubscribed' | 'UnknownError' | 'InvalidMSISDN' | 'DuplicatedRequest' | string;
25
+ declare type MSISDNEntryErrorTypes = ErrorType;
25
26
  declare type MSISDNEntryFailure = {
26
27
  errorType: MSISDNEntryErrorTypes;
27
28
  message?: string;
@@ -94,6 +95,7 @@ declare type IMSISDNSubmissionResult = {
94
95
  message: string;
95
96
  product_url?: string;
96
97
  isContentBlocked?: boolean;
98
+ error_code: string;
97
99
  };
98
100
  declare type IPINSubmissionResult = {
99
101
  success: true;
@@ -3,9 +3,9 @@ import { I as IStrategyNames } from './Strategy-N2e6pvR0.js';
3
3
  import { C as Click2smsFlowState } from './Click2smsTypes-BbhnGxiA.js';
4
4
  import { C as CreditCardFlowState } from './CreditCardTypes-BvAmIdgA.js';
5
5
  import { d as MoRedirFlowState } from './MoRedirTypes-CpTYupHS.js';
6
- import { d as MoFlowState } from './MoTypes-ClBP6qFV.js';
6
+ import { d as MoFlowState } from './MoTypes-DgYUj5Qm.js';
7
7
  import { O as OneClickFlowState } from './OneClickTypes-CgHVbYo3.js';
8
- import { f as PinFlowState } from './PinTypes-BYJgioCe.js';
8
+ import { f as PinFlowState } from './PinTypes-MlcXDSIr.js';
9
9
  import { U as UssdFlowState } from './UssdTypes-C7QlIW11.js';
10
10
 
11
11
  declare type IIdentifyResult = {
@@ -3,15 +3,16 @@ export { h as ICheckSubscriptionResult, f as IClick2smsConfig, i as IFetchResult
3
3
  import * as redux from 'redux';
4
4
  import * as _reduxjs_toolkit from '@reduxjs/toolkit';
5
5
  import * as _reduxjs_toolkit_dist_createAsyncThunk from '@reduxjs/toolkit/dist/createAsyncThunk';
6
- import { i as IHash } from './StrategyTypes-DULFlgm8.js';
6
+ import { i as IHash } from './StrategyTypes-BAs3St_c.js';
7
7
  import { useSelector } from 'react-redux';
8
8
  import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
9
9
  import './Strategy-N2e6pvR0.js';
10
10
  import './CreditCardTypes-BvAmIdgA.js';
11
11
  import './MoRedirTypes-CpTYupHS.js';
12
- import './MoTypes-ClBP6qFV.js';
12
+ import './MoTypes-DgYUj5Qm.js';
13
+ import './normaliseErrorCode-DY03EaiP.js';
13
14
  import './OneClickTypes-CgHVbYo3.js';
14
- import './PinTypes-BYJgioCe.js';
15
+ import './PinTypes-MlcXDSIr.js';
15
16
  import './UssdTypes-C7QlIW11.js';
16
17
 
17
18
  interface LOAD_OC2SMSArgs {
@@ -1,10 +1,11 @@
1
- import { M as MSISDNEntryState, a as MSISDNEntryFailure, b as MSISDNEntrySuccess, c as MoFlowCurrentState } from './MoTypes-ClBP6qFV.js';
2
- export { h as IGoogleReCaptcha, I as IKeywordShortcode, f as IMSISDNSubmissionResult, g as IMockMoFlowStates, e as MSISDNEntryErrorTypes, d as MoFlowState } from './MoTypes-ClBP6qFV.js';
1
+ import { M as MSISDNEntryState, a as MSISDNEntryFailure, b as MSISDNEntrySuccess, c as MoFlowCurrentState } from './MoTypes-DgYUj5Qm.js';
2
+ export { h as IGoogleReCaptcha, I as IKeywordShortcode, f as IMSISDNSubmissionResult, g as IMockMoFlowStates, e as MSISDNEntryErrorTypes, d as MoFlowState } from './MoTypes-DgYUj5Qm.js';
3
3
  import { useSelector } from 'react-redux';
4
4
  import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
5
5
  import * as _reduxjs_toolkit from '@reduxjs/toolkit';
6
6
  import * as redux from 'redux';
7
7
  import { I as IHash } from './IHash-0OgZ_1ij.js';
8
+ import './normaliseErrorCode-DY03EaiP.js';
8
9
 
9
10
  declare const useMoFlowState: (useSelector: typeof useSelector) => MSISDNEntryState;
10
11
 
@@ -0,0 +1,3 @@
1
+ declare type ErrorType = 'Success' | 'Pending' | 'AlreadySubscribed' | 'BlacklistedMsisdn' | 'DuplicatedRequest' | 'ExpiredPin' | 'InvalidPin' | 'PinLimitExceeded' | 'PinGenerationError' | 'PinAlreadyUsed' | 'InactiveOperator' | 'InvalidMSISDN' | 'InvalidSubscriptionId' | 'NotEligibleMsisdn' | 'ValidationIssue' | 'InsufficientBalance' | 'AntiFraudError' | 'VasBlocked' | 'AccountSuspended' | 'SalesCapReached' | 'SubscriptionApiFailure' | 'ReSubscriptionBlocked' | 'ReLeadBlocked' | 'UnspecifiedError' | 'UnexpectedState' | 'SomethingWentWrong' | 'TPayConfirmError' | 'UnknownError' | string;
2
+
3
+ export type { ErrorType as E };
@@ -1,9 +1,10 @@
1
- import { P as PinFlowCurrentState, M as MSISDNEntryFailure, a as MSISDNEntrySuccess, b as PINEntryFailure, c as PINEntrySuccess, I as IMsisdnSumbitNextData, d as MSISDNEntryState, e as PINEntryState, f as PinFlowState, g as IHash } from './PinTypes-BYJgioCe.js';
2
- export { E as ExtraData, n as IBackToStartPayload, o as IConfig, p as IMSISDNSubmissionResult, s as IMcpShieldResult, t as IMockPinFlowStates, k as IMsisdnSubmitErrorPayload, j as IMsisnSubmitActionPayload, q as IPINSubmissionResult, m as IPinErrorPayload, l as IPinSubmitPayload, h as MSISDNEntryErrorTypes, r as MultiOperatorMSISDNSubmissionResult, i as PINEntryErrorTypes, S as SingleMSISDNSubmissionResult } from './PinTypes-BYJgioCe.js';
1
+ import { P as PinFlowCurrentState, M as MSISDNEntryFailure, a as MSISDNEntrySuccess, b as PINEntryFailure, c as PINEntrySuccess, I as IMsisdnSumbitNextData, d as MSISDNEntryState, e as PINEntryState, f as PinFlowState, g as IHash } from './PinTypes-MlcXDSIr.js';
2
+ export { E as ExtraData, n as IBackToStartPayload, o as IConfig, p as IMSISDNSubmissionResult, s as IMcpShieldResult, t as IMockPinFlowStates, k as IMsisdnSubmitErrorPayload, j as IMsisnSubmitActionPayload, q as IPINSubmissionResult, m as IPinErrorPayload, l as IPinSubmitPayload, h as MSISDNEntryErrorTypes, r as MultiOperatorMSISDNSubmissionResult, i as PINEntryErrorTypes, S as SingleMSISDNSubmissionResult } from './PinTypes-MlcXDSIr.js';
3
3
  import { useSelector } from 'react-redux';
4
4
  import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
5
5
  import * as _reduxjs_toolkit from '@reduxjs/toolkit';
6
6
  import * as redux from 'redux';
7
+ import './normaliseErrorCode-DY03EaiP.js';
7
8
 
8
9
  declare const usePinFlowState: (useSelector: typeof useSelector) => PinFlowCurrentState;
9
10
 
@@ -1,7 +1,7 @@
1
1
  import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
2
2
  export { a as RDS } from './RemoteDataState-D1aFrz8W.js';
3
- import { S as StrategyCurrentState, I as IDENTIFYMSISDNEntryFailure, a as IDENTIFYMSISDNEntrySuccess, P as PossibleTypes, C as ConfigDetails$1, b as StrategyState } from './StrategyTypes-DULFlgm8.js';
4
- export { R as ExtraStrategyData, H as HEResult, d as IConfig, s as IDENTIFYFailure, j as IDENTIFYMSISDNEntryErrorTypes, t as IDENTIFYSuccess, p as IDENTIFY_FLOW_HESuccess, o as IDENTIFY_OPERATOR_MSISDNEntrySuccess, m as IDETECTYOPERATOBYIPFailure, n as IDETECTYOPERATOBYIPSuccess, v as IDetectOperatorByIpPayload, f as IFlow, i as IHash, D as IIdentfyFlowByIPOperatorNextAction, A as IIdentfyFlowByMsisdnNextAction, B as IIdentfyFlowByOperatorNextAction, z as IIdentifyFlowByHePayload, y as IIdentifyFlowByIpOperatorPayload, c as IIdentifyResult, F as IIdenyifyFlowByMsisdnPayload, E as IIdenyifyFlowByMsisdnSumbitNextData, G as IIdenyifyStrategyPayload, M as IMockFlowParams, L as IMockFlows, T as IMockPinFlowStates, u as IOperatorSelectFlowIdentifyPayload, w as IOperatorSelectPayload, Q as IScriptHeaderEnrichmentFailure, N as IScriptHeaderEnrichmentSuccess, h as IStrategy, J as IStrategyCurrentState, K as IStrategyIDentifyUserResult, x as ISubmitMsisdnPayload, e as ISupportedFlows, k as IdentifyFlowOptionsResult, O as OPERATORSelectFailure, q as OPERATORSelectFlowIdentifyFailure, r as OPERATORSelectFlowIdentifySuccess, l as OPERATORSelectSuccess, U as RootState, g as StrategyConfig } from './StrategyTypes-DULFlgm8.js';
3
+ import { S as StrategyCurrentState, I as IDENTIFYMSISDNEntryFailure, a as IDENTIFYMSISDNEntrySuccess, P as PossibleTypes, C as ConfigDetails$1, b as StrategyState } from './StrategyTypes-BAs3St_c.js';
4
+ export { R as ExtraStrategyData, H as HEResult, d as IConfig, s as IDENTIFYFailure, j as IDENTIFYMSISDNEntryErrorTypes, t as IDENTIFYSuccess, p as IDENTIFY_FLOW_HESuccess, o as IDENTIFY_OPERATOR_MSISDNEntrySuccess, m as IDETECTYOPERATOBYIPFailure, n as IDETECTYOPERATOBYIPSuccess, v as IDetectOperatorByIpPayload, f as IFlow, i as IHash, D as IIdentfyFlowByIPOperatorNextAction, A as IIdentfyFlowByMsisdnNextAction, B as IIdentfyFlowByOperatorNextAction, z as IIdentifyFlowByHePayload, y as IIdentifyFlowByIpOperatorPayload, c as IIdentifyResult, F as IIdenyifyFlowByMsisdnPayload, E as IIdenyifyFlowByMsisdnSumbitNextData, G as IIdenyifyStrategyPayload, M as IMockFlowParams, L as IMockFlows, T as IMockPinFlowStates, u as IOperatorSelectFlowIdentifyPayload, w as IOperatorSelectPayload, Q as IScriptHeaderEnrichmentFailure, N as IScriptHeaderEnrichmentSuccess, h as IStrategy, J as IStrategyCurrentState, K as IStrategyIDentifyUserResult, x as ISubmitMsisdnPayload, e as ISupportedFlows, k as IdentifyFlowOptionsResult, O as OPERATORSelectFailure, q as OPERATORSelectFlowIdentifyFailure, r as OPERATORSelectFlowIdentifySuccess, l as OPERATORSelectSuccess, U as RootState, g as StrategyConfig } from './StrategyTypes-BAs3St_c.js';
5
5
  import { useSelector } from 'react-redux';
6
6
  import * as _reduxjs_toolkit from '@reduxjs/toolkit';
7
7
  import * as _reduxjs_toolkit_dist_createAsyncThunk from '@reduxjs/toolkit/dist/createAsyncThunk';
@@ -10,9 +10,10 @@ import * as redux from 'redux';
10
10
  import './Click2smsTypes-BbhnGxiA.js';
11
11
  import './CreditCardTypes-BvAmIdgA.js';
12
12
  import './MoRedirTypes-CpTYupHS.js';
13
- import './MoTypes-ClBP6qFV.js';
13
+ import './MoTypes-DgYUj5Qm.js';
14
+ import './normaliseErrorCode-DY03EaiP.js';
14
15
  import './OneClickTypes-CgHVbYo3.js';
15
- import './PinTypes-BYJgioCe.js';
16
+ import './PinTypes-MlcXDSIr.js';
16
17
  import './UssdTypes-C7QlIW11.js';
17
18
 
18
19
  declare const useStrategyState: (useSelector: typeof useSelector) => StrategyCurrentState;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ouisys-engine",
3
- "version": "5.0.134",
3
+ "version": "5.0.136",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "directories": "dist dev-tools",