ouisys-engine 5.0.57 → 5.0.59

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/pinFlow.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__awaiter as e,__generator as t,__read as r,__assign as n}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,S as s,L as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{c as d,P as l}from"./strategySlice-RK7roJPB.js";import{searchToObject as p}from"./searchToObject.js";import{s as v}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{b as m}from"./bupperizeCountry-CEtt0MKz.js";import{l as y,r as S,a as w}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-BzQm-AFb.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"pacman-client";import"uuid";var h=function(e){return e((function(e){return e.pinFlow.currentState}))};function I(e){var t=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return t(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var b=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},E=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.msisdn,d=n.rockmanId,l=n.extraParams,p=n.search,v=n.uniqid,f=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,m,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",antifraud_id:i.antifraud_id||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:v||""},y=Object.entries(m).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n).concat(p?"&".concat(p):""),[2,fetch(w).then((function(e){return e.json()}))]}))}))},_=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId,d=n.pin,l=n.extraParams,p=n.uniqid,v=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,f,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:m(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",antifraud_id:i.antifraud_id||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:v,uniqid:p},y=Object.entries(f).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n),[2,fetch(w).then((function(e){return e.json()}))]}))}))},k=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,u=r.rockmanId,d=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,p,v,f;return t(this,(function(t){return e=i.location.href,r=i.pac_analytics.visitor.ip,p=new URLSearchParams(n(n({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:u,client_lpu:e},d&&{operator:d}),l&&{uniqid:l})),r&&p.append("client_ip",r),v=i.DEV_BASE_URL||"",f="".concat(v,"/tallyman/v1/?").concat(p.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function N(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){return!0===(e=n({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,D(r,e,a,e.operators,o)]:[2,P(r,e,a,o)]}))}))}var U="";function P(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,v,f,m,y,S,w,h,I,b,_,N,P;return t(this,(function(t){switch(t.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,"true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,S=-1===r.location.search.indexOf("redirect-back=1")&&r.location.search.substr(1)||"",w=U&&""!==U?"&mcpUniqid=".concat(U):"",h=void 0!==r&&r.tid?r.tid:"",[4,E({window:r,country:f,slug:v,device:m,offer:y,msisdn:d,rockmanId:l,extraParams:s,search:S,uniqid:w,evinaTid:h})];case 1:if(!1!==(I=t.sent()).success)return[3,2];switch((b=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(I.message))).message=I.message,!0){case I.message.includes("ALREADY SUBSCRIBED"):b.type="AlreadySubscribed";break;case I.message.includes("invalid"):b.type="InvalidMSISDN";break;default:b.type=null}throw b.productUrl=I.product_url?I.product_url:"",console.error(b),b;case 2:if(r.operator=I.operator,_={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&I.operator&&(_[f.toLowerCase()]&&_[f.toLowerCase()][I.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];t.label=3;case 3:return t.trys.push([3,5,,6]),[4,k({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:I.operator,uniqid:w})];case 4:return!1===(N=t.sent()).success?console.warn(N.message):(g(N.source),U=N.uniqid),[3,6];case 5:return P=t.sent(),console.warn(P),[3,6];case 6:return I.javascript&&g(I.javascript),[2,n({type:"SingleMSISDNSubmissionResult",pin:I.pin,uniqidResult:U,operator:I.operator,redirectUrl:null==I?void 0:I.redirect_to_url},(null==I?void 0:I.userType)?{userType:null==I?void 0:I.userType}:{})]}}))}))}function D(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return t(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(d,void 0,void 0,(function(){var e,c;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,P(r,i,a,n(n({},s),{operator:o}))];case 1:return e=t.sent(),[2,S(n(n({},e),{operator:o}))];case 2:return c=t.sent(),[2,y(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var t;return"left"===e.type&&"AlreadySubscribed"===(null===(t=e.value)||void 0===t?void 0:t.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function M(n,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,y,S,g,h,I,b,E,k,N;return t(this,(function(P){switch(P.label){case 0:if(n.hostCountry&&n.hostSlug&&(a.country=n.hostCountry,a.slug=n.hostSlug),s=a.slug,c=a.country,u=a.device,d=n.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(n))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=n.pac_analytics.visitor.rockmanId,!i)throw(y=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",y;return S=""!==U?"&mcpUniqid=".concat(U):"",g=void 0!==n&&n.tid?n.tid:"",[4,_({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:S,evinaTid:g})];case 1:if(!1!==(h=P.sent()).success)return[3,2];throw I={"pin does not match":"InvalidPIN","mcp blocked":"SessionBlocked",expired_pin:"ExpiredPIN",insufficient_balance:"InsufficientBalance"}[h.message],(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",k.message=h.message,console.error(k),k;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(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,d,l;return t(this,(function(t){return e={action:"check-subscription",country:m(a),slug:o,device:s,offerId:c,rockman_id:u},n=Object.entries(e).filter((function(e){var t=r(e,2);return t[0],null!=t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(n),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,w(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(E=P.sent()).success)return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:E.product_url||null,isAlreadySubscribed:N}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(E.message))).type="InvalidPIN",k.message=E.message,k;case 4:return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:N}]}}))}))}var j={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"PINEntry",result:s({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},C={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},R={currentState:{type:"MSISDNEntry",result:o()}},F=function(e){var t=p(e),r=new Event("onPinPage"),n=t["show-pin-entry"]&&"1"===t["show-pin-entry"],i=t["show-thank-you"]&&"1"===t["show-thank-you"],a="1"===(null==t?void 0:t.show_custom_error),c={currentState:{type:"MSISDNEntry",result:u({errorType:"SomethingWentWrong",error:null})}},d={currentState:{type:"PINEntry",result:s({finalUrl:(null==t?void 0:t.product_url)||""}),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}},l={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}};if(n)return null==e||e.dispatchEvent(r),l;if(i)return d;if(a)return c;if(!t["mock-flow"])return R;switch(t["current-state"]){case"msisdn-failure-state":return C;case"pin-state":return null==e||e.dispatchEvent(r),j;case"completed-state":return A;default:return console.error("Mock Flow not supported"),R}}(window),T=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,s=r.msisdn,c=r.extraParams,u=i.getState,p=i.dispatch,m=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,y,S,w,g,h,I,b,E,_,k,U,P;return t(this,(function(t){switch(t.label){case 0:if(e=u(),!(null===(U=null===(k=null===(_=null==e?void 0:e.strategy)||void 0===_?void 0:_.currentState)||void 0===k?void 0:k.data)||void 0===U?void 0:U.config))return[2,m({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(P=e.pinFlow)||void 0===P?void 0:P.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===L(null==i?void 0:i.country,s)&&(s=s.replace("970","972")),f.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,N(a,i,s)];case 2:return w=t.sent(),f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),"SingleMSISDNSubmissionResult"===w.type&&w.redirectUrl&&(f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),f.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:w.redirectUrl}),a.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,v(s).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return g="SingleMSISDNSubmissionResult"===w.type?w.operator:"",h={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},I=new Event("onPinPage"),null==a||a.dispatchEvent(I),[2,n(n({},S),{type:"PINEntry",result:o(),data:n({actualPIN:"SingleMSISDNSubmissionResult"===w.type?w.pin:null,msisdn:s,operator:g,pinMaxLength:""!==g&&h[g]?h[g]:null,isHeaderEnrichmentSuccess:y},"SingleMSISDNSubmissionResult"===w.type&&(null==w?void 0:w.userType)?{userType:w.userType}:{})})];case 5:switch(b=t.sent(),console.warn(b),E=void 0,b.type){case"AlreadySubscribed":E="AlreadySubscribed";break;case"InvalidMSISDN":E="InvalidMSISDN";break;default:E="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:E,error:b.toString(),message:b.message,productUrl:b.productUrl}),y&&p(d({type:l.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,m({errorType:E,error:b.toString(),message:b.message,productUrl:b.productUrl})];case 6:return[2]}}))}))})),B=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,c=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,p,m,y,S,w,g,h;return t(this,(function(t){switch(t.label){case 0:if(e=d(),!(null===(g=null===(w=null===(S=null==e?void 0:e.strategy)||void 0===S?void 0:S.currentState)||void 0===w?void 0:w.data)||void 0===g?void 0:g.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(h=e.pinFlow)||void 0===h?void 0:h.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,M(a,c,r,u)];case 2:return p=t.sent(),f.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:c,finalUrl:p.productUrl}),p.gatewayRedirectUrl&&""!==p.gatewayRedirectUrl&&(f.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:c,gatewayRedirectUrl:p.gatewayRedirectUrl}),a.location.href=p.gatewayRedirectUrl),u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,v(o).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return[2,n(n({},i),{type:"PINEntry",result:s({finalUrl:p.productUrl,isAlreadySubscribed:p.isAlreadySubscribed||!1})})];case 5:switch(m=t.sent(),console.warn(m),y=void 0,m.type){case"AlreadySubscribed":y="AlreadySubscribed";break;case"InvalidPIN":y="InvalidPIN";break;case"SessionBlocked":y="SessionBlocked";break;case"ExpiredPIN":y="ExpiredPIN";break;case"InsufficientBalance":y="InsufficientBalance";break;default:y="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl}),setTimeout((function(){m.productUrl&&(a.location.href=m.productUrl)}),0),[2,l({errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl})];case 6:return[2]}}))}))})),x={PS:"970"},L=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=x[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},q=a({name:"pinFlow",initialState:F,reducers:{backToStartAction:function(e){f.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e.currentState={type:"MSISDNEntry",result:o()}}},extraReducers:function(e){e.addCase(T.pending,(function(e){e.currentState={type:"MSISDNEntry",result:c(),data:e.currentState.data}})).addCase(T.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(T.rejected,(function(e,t){e.currentState={type:"MSISDNEntry",result:u(t.payload),data:e.currentState.data}})).addCase(B.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(B.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(B.rejected,(function(e,t){e.currentState={type:"PINEntry",result:u(t.payload),data:e.currentState.data}}))}}),O=q.reducer,V=q.actions.backToStartAction;export{V as backToStartAction,I as pinFlowMatch,O as pinFlowReducer,T as submitMSISDNAction,B as submitPinAction,h as usePinFlowState};
1
+ import{__awaiter as e,__generator as t,__read as r,__assign as n}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,S as s,L as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{c as d,P as l}from"./strategySlice-dU-LViLB.js";import{searchToObject as p}from"./searchToObject.js";import{s as v}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{b as m}from"./bupperizeCountry-CEtt0MKz.js";import{l as y,r as S,a as w}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-BzQm-AFb.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"pacman-client";import"uuid";var h=function(e){return e((function(e){return e.pinFlow.currentState}))};function I(e){var t=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return t(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var _=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},b=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.msisdn,d=n.rockmanId,l=n.extraParams,p=n.search,v=n.uniqid,f=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,m,y,S,w,g;return t(this,(function(t){return e=_(a),n="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:v||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||""},y=Object.entries(m).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n).concat(p?"&".concat(p):""),[2,fetch(w).then((function(e){return e.json()}))]}))}))},E=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId,d=n.pin,l=n.extraParams,p=n.uniqid,v=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,f,y,S,w,g;return t(this,(function(t){return e=_(a),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:m(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:v,uniqid:p,antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||""},y=Object.entries(f).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n),[2,fetch(w).then((function(e){return e.json()}))]}))}))},k=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,u=r.rockmanId,d=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,p,v,f;return t(this,(function(t){return e=i.location.href,r=i.pac_analytics.visitor.ip,p=new URLSearchParams(n(n({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:u,client_lpu:e},d&&{operator:d}),l&&{uniqid:l})),r&&p.append("client_ip",r),v=i.DEV_BASE_URL||"",f="".concat(v,"/tallyman/v1/?").concat(p.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function N(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){return!0===(e=n({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,P(r,e,a,e.operators,o)]:[2,j(r,e,a,o)]}))}))}var U="";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,S,w,h,I,_,E,N,j;return t(this,(function(t){switch(t.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,"true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,S=-1===r.location.search.indexOf("redirect-back=1")&&r.location.search.substr(1)||"",w=U&&""!==U?"&mcpUniqid=".concat(U):"",h=void 0!==r&&r.tid?r.tid:"",[4,b({window:r,country:f,slug:v,device:m,offer:y,msisdn:d,rockmanId:l,extraParams:s,search:S,uniqid:w,evinaTid:h})];case 1:if(!1!==(I=t.sent()).success)return[3,2];switch((_=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(I.message))).message=I.message,!0){case I.message.includes("ALREADY SUBSCRIBED"):_.type="AlreadySubscribed";break;case I.message.includes("invalid"):_.type="InvalidMSISDN";break;default:_.type=null}throw _.productUrl=I.product_url?I.product_url:"",console.error(_),_;case 2:if(r.operator=I.operator,E={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&I.operator&&(E[f.toLowerCase()]&&E[f.toLowerCase()][I.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];t.label=3;case 3:return t.trys.push([3,5,,6]),[4,k({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:I.operator,uniqid:w})];case 4:return!1===(N=t.sent()).success?console.warn(N.message):(g(N.source),U=N.uniqid),[3,6];case 5:return j=t.sent(),console.warn(j),[3,6];case 6:return I.javascript&&g(I.javascript),[2,n({type:"SingleMSISDNSubmissionResult",pin:I.pin,uniqidResult:U,operator:I.operator,redirectUrl:null==I?void 0:I.redirect_to_url},(null==I?void 0:I.userType)?{userType:null==I?void 0:I.userType}:{})]}}))}))}function P(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return t(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(d,void 0,void 0,(function(){var e,c;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,j(r,i,a,n(n({},s),{operator:o}))];case 1:return e=t.sent(),[2,S(n(n({},e),{operator:o}))];case 2:return c=t.sent(),[2,y(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var t;return"left"===e.type&&"AlreadySubscribed"===(null===(t=e.value)||void 0===t?void 0:t.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function D(n,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,y,S,g,h,I,_,b,k,N;return t(this,(function(j){switch(j.label){case 0:if(n.hostCountry&&n.hostSlug&&(a.country=n.hostCountry,a.slug=n.hostSlug),s=a.slug,c=a.country,u=a.device,d=n.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(n))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=n.pac_analytics.visitor.rockmanId,!i)throw(y=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",y;return S=""!==U?"&mcpUniqid=".concat(U):"",g=void 0!==n&&n.tid?n.tid:"",[4,E({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:S,evinaTid:g})];case 1:if(!1!==(h=j.sent()).success)return[3,2];throw I={"pin does not match":"InvalidPIN","mcp blocked":"SessionBlocked",expired_pin:"ExpiredPIN",insufficient_balance:"InsufficientBalance"}[h.message],(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",k.message=h.message,console.error(k),k;case 2:return!0!==h.async?[3,4]:h.product_url&&""!==h.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:h.product_url}]:(_=function(){return function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,d,l;return t(this,(function(t){return e={action:"check-subscription",country:m(a),slug:o,device:s,offerId:c,rockman_id:u},n=Object.entries(e).filter((function(e){var t=r(e,2);return t[0],null!=t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(n),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,w(_,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(b=j.sent()).success)return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:b.product_url||null,isAlreadySubscribed:N}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(b.message))).type="InvalidPIN",k.message=b.message,k;case 4:return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:N}]}}))}))}var M={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"PINEntry",result:s({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},C={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},R={currentState:{type:"MSISDNEntry",result:o()}},F=function(e){var t=p(e),r=new Event("onPinPage"),n=t["show-pin-entry"]&&"1"===t["show-pin-entry"],i=t["show-thank-you"]&&"1"===t["show-thank-you"],a="1"===(null==t?void 0:t.show_custom_error),c={currentState:{type:"MSISDNEntry",result:u({errorType:"SomethingWentWrong",error:null})}},d={currentState:{type:"PINEntry",result:s({finalUrl:(null==t?void 0:t.product_url)||""}),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}},l={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}};if(n)return null==e||e.dispatchEvent(r),l;if(i)return d;if(a)return c;if(!t["mock-flow"])return R;switch(t["current-state"]){case"msisdn-failure-state":return C;case"pin-state":return null==e||e.dispatchEvent(r),M;case"completed-state":return A;default:return console.error("Mock Flow not supported"),R}}(window),T=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,s=r.msisdn,c=r.extraParams,u=i.getState,p=i.dispatch,m=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,y,S,w,g,h,I,_,b,E,k,U,j;return t(this,(function(t){switch(t.label){case 0:if(e=u(),!(null===(U=null===(k=null===(E=null==e?void 0:e.strategy)||void 0===E?void 0:E.currentState)||void 0===k?void 0:k.data)||void 0===U?void 0:U.config))return[2,m({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(j=e.pinFlow)||void 0===j?void 0:j.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===L(null==i?void 0:i.country,s)&&(s=s.replace("970","972")),f.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,N(a,i,s)];case 2:return w=t.sent(),f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),"SingleMSISDNSubmissionResult"===w.type&&w.redirectUrl&&(f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),f.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:w.redirectUrl}),a.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,v(s).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return g="SingleMSISDNSubmissionResult"===w.type?w.operator:"",h={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},I=new Event("onPinPage"),null==a||a.dispatchEvent(I),[2,n(n({},S),{type:"PINEntry",result:o(),data:n({actualPIN:"SingleMSISDNSubmissionResult"===w.type?w.pin:null,msisdn:s,operator:g,pinMaxLength:""!==g&&h[g]?h[g]:null,isHeaderEnrichmentSuccess:y},"SingleMSISDNSubmissionResult"===w.type&&(null==w?void 0:w.userType)?{userType:w.userType}:{})})];case 5:switch(_=t.sent(),console.warn(_),b=void 0,_.type){case"AlreadySubscribed":b="AlreadySubscribed";break;case"InvalidMSISDN":b="InvalidMSISDN";break;default:b="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl}),y&&p(d({type:l.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,m({errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl})];case 6:return[2]}}))}))})),B=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,c=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,p,m,y,S,w,g,h;return t(this,(function(t){switch(t.label){case 0:if(e=d(),!(null===(g=null===(w=null===(S=null==e?void 0:e.strategy)||void 0===S?void 0:S.currentState)||void 0===w?void 0:w.data)||void 0===g?void 0:g.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(h=e.pinFlow)||void 0===h?void 0:h.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,D(a,c,r,u)];case 2:return p=t.sent(),f.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:c,finalUrl:p.productUrl}),p.gatewayRedirectUrl&&""!==p.gatewayRedirectUrl&&(f.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:c,gatewayRedirectUrl:p.gatewayRedirectUrl}),a.location.href=p.gatewayRedirectUrl),u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,v(o).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return[2,n(n({},i),{type:"PINEntry",result:s({finalUrl:p.productUrl,isAlreadySubscribed:p.isAlreadySubscribed||!1})})];case 5:switch(m=t.sent(),console.warn(m),y=void 0,m.type){case"AlreadySubscribed":y="AlreadySubscribed";break;case"InvalidPIN":y="InvalidPIN";break;case"SessionBlocked":y="SessionBlocked";break;case"ExpiredPIN":y="ExpiredPIN";break;case"InsufficientBalance":y="InsufficientBalance";break;default:y="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl}),setTimeout((function(){m.productUrl&&(a.location.href=m.productUrl)}),0),[2,l({errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl})];case 6:return[2]}}))}))})),x={PS:"970"},L=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=x[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},q=a({name:"pinFlow",initialState:F,reducers:{backToStartAction:function(e){f.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e.currentState={type:"MSISDNEntry",result:o()}}},extraReducers:function(e){e.addCase(T.pending,(function(e){e.currentState={type:"MSISDNEntry",result:c(),data:e.currentState.data}})).addCase(T.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(T.rejected,(function(e,t){e.currentState={type:"MSISDNEntry",result:u(t.payload),data:e.currentState.data}})).addCase(B.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(B.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(B.rejected,(function(e,t){e.currentState={type:"PINEntry",result:u(t.payload),data:e.currentState.data}}))}}),O=q.reducer,V=q.actions.backToStartAction;export{V as backToStartAction,I as pinFlowMatch,O as pinFlowReducer,T as submitMSISDNAction,B as submitPinAction,h 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';\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 // 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 antifraud_id: window.antifraud_id || '',\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\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst verifyPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams,\n uniqid,\n evinaTid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n pin: string;\n extraParams: IHash;\n uniqid: string;\n evinaTid: string;\n}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // Base parameters object\n const params = {\n action: 'verify-pin',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n pin,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n antifraud_id: window.antifraud_id || '',\n ClickID: window.antifraud_click_id || '',\n partner_cid: window.partner_cid || '',\n sam_evina_tid: evinaTid,\n uniqid\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst mcpShield = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator,\n uniqid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n operator?: string;\n uniqid?: string;\n}): Promise<IMcpShieldResult> => {\n const pageUrl = window.location.href;\n const ipAdd = window.pac_analytics.visitor.ip;\n\n const params = new URLSearchParams({\n action: 'mcp-shield',\n country,\n slug,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n client_lpu: pageUrl,\n ...(operator && { operator }),\n ...(uniqid && { uniqid })\n });\n\n // Conditionally add client_ip if it exists\n if (ipAdd) {\n params.append('client_ip', ipAdd);\n }\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params.toString()}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { triggerPin, verifyPin, mcpShield };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { checkSubscription } from '../../sharedApi/checkSubscription';\nimport {\n IHash,\n IMcpShieldResult,\n IMSISDNSubmissionResult,\n IPINSubmissionResult,\n MultiOperatorMSISDNSubmissionResult,\n SingleMSISDNSubmissionResult\n} from '../../sharedFlowTypes/PinTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { left, loop, right } from '../../utilities/helpers';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { mcpShield, triggerPin, verifyPin } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult | MultiOperatorMSISDNSubmissionResult> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return submitMSISDNForMultipleOperators(window, config, internationalMSISDN, config.operators, extraParams);\n }\n return submitMSISDNOnce(window, config, internationalMSISDN, extraParams);\n}\n\nlet uniqidResult = '';\n// eslint-disable-next-line consistent-return\nexport async function loadMcpShield(window: Window, config: IConfig): Promise<IMcpShieldResult> {\n if (config) {\n const { slug, country, device } = config;\n\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({ window, country, slug, device, offer, rockmanId });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n return mcpShieldResult;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nasync function submitMSISDNOnce(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() trigger-pin action`) as IError & { type: string };\n submissionError.type = 'InvalidMSISDN';\n throw submissionError;\n }\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n if (newExtraParams['skip-validation'] === '1') {\n isSkipValidation = true;\n }\n\n const msisdn = isSkipValidation ? internationalMSISDN : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n const { rockmanId } = window.pac_analytics.visitor;\n\n const { slug, country, device, offer } = config;\n\n const search = window.location.search.indexOf('redirect-back=1') === -1 ? window.location.search.substr(1) || '' : '';\n\n const uniqid = !!uniqidResult && uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const result: IMSISDNSubmissionResult = await triggerPin({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams: newExtraParams,\n search,\n uniqid,\n evinaTid\n });\n\n if (result.success === false) {\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n error.message = result.message;\n switch (true) {\n case result.message.includes('ALREADY SUBSCRIBED'):\n error.type = 'AlreadySubscribed';\n break;\n case result.message.includes('invalid'):\n error.type = 'InvalidMSISDN';\n break;\n default:\n error.type = null;\n }\n // error.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n error.productUrl = result.product_url ? result.product_url : '';\n console.error(error);\n throw error;\n } else {\n window.operator = result.operator; // currently used on server for KW_STC if present dont call empello for Shemaroo\n const codesWithMcpShied: { [key: string]: { [key: string]: string } } = {\n kw: {\n kw_viva: 'kw_viva'\n },\n k2: {\n k2_viva: 'k2_viva'\n },\n bh: {\n bh_viva: 'bh_viva'\n }\n };\n if (\n country &&\n result.operator &&\n ((codesWithMcpShied[country.toLowerCase()] &&\n codesWithMcpShied[country.toLowerCase()][result.operator.toLowerCase()]) ||\n country.toLowerCase() === 'iq') &&\n !window.isCallBlockApi &&\n !window.Empello // set on server https://www.notion.so/sammedia/KW-Agency-Shemaroo-STC-integration-1a114991683d4af79eb01a4d96789f30\n ) {\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator: result.operator,\n uniqid\n });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n\n if (result.javascript) {\n loadScriptInnerHtml(result.javascript);\n }\n\n return {\n type: 'SingleMSISDNSubmissionResult',\n pin: result.pin,\n uniqidResult,\n operator: result.operator,\n redirectUrl: result?.redirect_to_url, // For pin redirect empello\n ...(result?.userType ? { userType: result?.userType } : {}) // For Peru user plan if prepaid or postpaid\n };\n }\n}\n\nasync function submitMSISDNForMultipleOperators(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n operators: string[],\n extraParams?: IHash\n): Promise<MultiOperatorMSISDNSubmissionResult> {\n const results = await Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await submitMSISDNOnce(window, config, internationalMSISDN, {\n ...extraParams,\n operator: o\n });\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const alreadySubscribed = results.find((r: any) => r.type === 'left' && r.value?.type === 'AlreadySubscribed');\n\n if (results.every((r) => r.type === 'left')) {\n // no submission worked\n throw results[0].value;\n } else if (alreadySubscribed) {\n throw alreadySubscribed.value;\n } else {\n return {\n type: 'MultiOperatorMSISDNSubmissionResult'\n };\n }\n}\n\nexport async function submitPIN(\n window: Window,\n pin: string,\n config: IConfig,\n extraParams: IHash\n): Promise<{ productUrl?: string; isAlreadySubscribed?: boolean; gatewayRedirectUrl?: string }> {\n if (window.hostCountry && window.hostSlug) {\n config.country = window.hostCountry;\n config.slug = window.hostSlug;\n }\n const { slug, country, device } = config;\n const { offer } = window.pac_analytics.visitor;\n\n const newExtraParams = extraParams || {};\n const searchObj = searchToObject(window) as any;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n newExtraParams['skip-validation'] = '1';\n }\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (!pin) {\n const emptyPinError = new Error(`Error in submitMSISDN() verify-pin action:\\n Pin Cannot Be Empty`) as IError & {\n type: string;\n };\n emptyPinError.type = 'InvalidPIN';\n throw emptyPinError;\n }\n const uniqid = uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const pinResult: IPINSubmissionResult = await verifyPin({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams: newExtraParams,\n uniqid,\n evinaTid\n });\n if (pinResult.success === false) {\n const pinErrorTypeMap: { [key: string]: string } = {\n 'pin does not match': 'InvalidPIN',\n 'mcp blocked': 'SessionBlocked',\n expired_pin: 'ExpiredPIN',\n insufficient_balance: 'InsufficientBalance'\n };\n const errorMessage = pinErrorTypeMap[pinResult.message as string];\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${errorMessage}`) as IError & {\n type: string;\n };\n pinError.type = errorMessage || 'InvalidPIN';\n pinError.message = pinResult.message;\n console.error(pinError);\n throw pinError;\n } else if (pinResult.async === true) {\n // Needed for ES https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n if (pinResult.product_url && pinResult.product_url !== '' && country?.toLowerCase() === 'es') {\n return { gatewayRedirectUrl: pinResult.product_url };\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n checkSubscription({ window, country, slug, device, offer, rockmanId, extraParams });\n\n const checkResult: ICheckSubscriptionResult = await loop(\n check,\n 100,\n (r) => r.success || r.message === 'invalid_pin',\n 0\n );\n if (checkResult.success === true) {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: checkResult.product_url || null, isAlreadySubscribed };\n }\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${checkResult.message}`) as IError & {\n type: string;\n };\n pinError.type = 'InvalidPIN';\n pinError.message = checkResult.message;\n\n throw pinError;\n } else {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: pinResult.product_url || null, isAlreadySubscribed };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IHash,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { setStrategyExtraData } from '../strategy/strategySlice';\nimport submitMSISDN, { submitPIN } from './main';\n\nconst mockedPINState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet<PINEntryFailure, PINEntrySuccess>(),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedCompletedState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({ finalUrl: '/product' }),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedMSISDNEntryFailure: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\n// Define the initial state\nconst defaultInitialState: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\n/**\n * Sets the initial state of the pin flow based on the search parameters in the URL or the default state.\n *\n * @param {Window} window - The window object.\n * @return {PinFlowState} The initial state of the pin flow.\n */\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n const pinPageEvent = new Event('onPinPage');\n const isPinEntryStep = search['show-pin-entry'] && search['show-pin-entry'] === '1';\n const isShowThankYouStep = search['show-thank-you'] && search['show-thank-you'] === '1';\n const isShowCustomError = search?.show_custom_error === '1';\n\n const msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'SomethingWentWrong',\n error: null\n })\n }\n };\n\n const thankYouState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: search?.product_url || ''\n }),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n\n const initalPinEntryState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet(),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n if (isPinEntryStep) {\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return initalPinEntryState;\n }\n if (isShowThankYouStep) {\n return thankYouState;\n }\n if (isShowCustomError) {\n return msisdnError;\n }\n\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-failure-state':\n return mockedMSISDNEntryFailure;\n case 'pin-state':\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return mockedPINState;\n case 'completed-state':\n return mockedCompletedState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls trigger-pin api that sends a pin to the user\n * Sets state to show pin entry\n */\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\nexport const submitMSISDNAction = createAsyncThunk<\n PINEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, isHeaderEnrichmentSuccess } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n /**\n * Palestine calling code is +970\n * But there was a request to have it as +972 only for gateway shemaroo\n */\n // Start PS Calling code temp fix\n if (config?.country.toLowerCase() === 'ps' && config?.slug.includes('shemaroo')) {\n const prefix = getInputValuePrefix(config?.country, msisdn);\n if (prefix === '+970') {\n msisdn = msisdn.replace('970', '972');\n }\n }\n // END PS Calling code temp fix\n\n // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n // End Trigger Pin\n\n /**\n * Some flows require us to redirect to a url after trigger pin to check for fraud\n * The url will then do some processing and return back to ouisys with\n * extra param in the url that will tell us to show pin entry step or error\n */\n\n // Start Pin Redirect\n if (msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult.redirectUrl) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-redirect', {\n redirectUrl: msisdnSubmissionResult.redirectUrl\n });\n window.location.href = msisdnSubmissionResult.redirectUrl;\n }\n // End Pin Redirect\n\n // Start handle store msisdn\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End handle store msisdn\n\n const operator: string =\n msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.operator : '';\n\n const pinMaxLengthByOp: { [key: string]: number } = {\n SA_MOBILY: 6,\n SA_STC: 4,\n SA_ZAIN: 4\n };\n\n /**\n * onPinPage\n * some scripts on the server need to be injected on pin page/view\n * This event will be handled on server\n */\n const pinPageEvent = new Event('onPinPage');\n window?.dispatchEvent(pinPageEvent);\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.NothingYet(),\n data: {\n actualPIN: msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.pin : null,\n msisdn,\n operator,\n pinMaxLength: operator !== '' && pinMaxLengthByOp[operator] ? pinMaxLengthByOp[operator] : null,\n isHeaderEnrichmentSuccess,\n ...(msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult?.userType\n ? { userType: msisdnSubmissionResult.userType }\n : {})\n }\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess: false,\n config\n }\n })\n );\n }\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\n/**\n * submitPinAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: 'PINEntry', result: RDS.NothingYet()}}\n \n * Calls verify-pin api that check if the user enters a valid pin\n * Sets state to show thank you page if pin is valid\n */\ninterface SubmitPINArgs {\n window: Window;\n msisdn: string;\n pin: string;\n extraParams?: IHash;\n}\nexport const submitPinAction = createAsyncThunk<\n PINEntryState,\n SubmitPINArgs,\n {\n rejectValue: PINEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitPinAction', async ({ window, msisdn, pin, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submitted', { msisdn, pin });\n const result = await submitPIN(window, pin, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submission-success', {\n msisdn,\n pin,\n finalUrl: result.productUrl\n });\n\n /**\n * Gateway redirect\n * Value returned in this case is actually the gateway url instead of the product url\n * More details on this ticket:\n * https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n */\n // Start Gateway redirect\n if (result.gatewayRedirectUrl && result.gatewayRedirectUrl !== '') {\n tracker.advancedInFlow('tallyman.v1-pin', 'gateway-redirect', {\n msisdn,\n pin,\n gatewayRedirectUrl: result.gatewayRedirectUrl\n });\n window.location.href = result.gatewayRedirectUrl;\n }\n // End Gateway redirect\n\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End store msisdn\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: result.productUrl,\n isAlreadySubscribed: result.isAlreadySubscribed || false\n })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: PINEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidPIN':\n errorType = 'InvalidPIN';\n break;\n case 'SessionBlocked':\n errorType = 'SessionBlocked';\n break;\n case 'ExpiredPIN':\n errorType = 'ExpiredPIN';\n break;\n case 'InsufficientBalance':\n errorType = 'InsufficientBalance';\n break;\n default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n // Redirect to the product url if returned in the exception\n setTimeout(() => {\n if (ex.productUrl) {\n window.location.href = ex.productUrl;\n }\n }, 0);\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\ntype CountryCodeMap = { [country: string]: string };\n\nconst countryCodes: CountryCodeMap = {\n PS: '970'\n // Add other countries and codes here\n};\n\nconst getInputValuePrefix = (country: string, international: string): string => {\n if (!country || !international) return '';\n\n // Convert the country to uppercase and retrieve the country code\n const normalizedCountry = country.toUpperCase();\n const countryCode = countryCodes[normalizedCountry];\n\n // Check if the country code exists in the mapping\n if (!countryCode) {\n console.error('Country code not found for', country);\n return '';\n }\n\n return `+${countryCode}`;\n};\n\n// Define your slice\nconst pinFlowSlice = createSlice({\n name: 'pinFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n data: state.currentState.data\n };\n })\n .addCase(submitPinAction.pending, (state) => {\n state.currentState = { type: 'PINEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitPinAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitPinAction.rejected, (state, action: PayloadAction<PINEntryFailure>) => {\n state.currentState = { type: 'PINEntry', result: RDS.Failure(action.payload), data: state.currentState.data };\n });\n }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\nexport const { backToStartAction } = pinFlowActions;\n\nexport const selectPinFlowState = (state: any) => state.pinFlow;\n"],"names":["usePinFlowState","useSelector","state","pinFlow","currentState","pinFlowMatch","_a","msisdnEntry","pinEntry","type","result","data","Error","checkIsCleanTraffic","country","window","shouldBlock","triggerPin","slug","device","offer","msisdn","rockmanId","extraParams","search","uniqid","evinaTid","cleanTrafficString","extraParamsQs","concat","Object","keys","map","k","filter","Boolean","join","params","action","offerId","rockman_id","sam_evina_tid","page","encodeURIComponent","_b","location","href","language_code","languageCode","antifraud_id","partner_transaction_id","partner_timestamp","partner_cid","queryString","entries","__read","key","value","host","DEV_BASE_URL","url","fetch","then","x","json","verifyPin","pin","bupperizeCountry","ClickID","antifraud_click_id","mcpShield","operator","pageUrl","ipAdd","pac_analytics","visitor","ip","URLSearchParams","__assign","toString","client_lpu","append","submitMSISDN","maybeConfig","internationalMSISDN","config","automaticallySubmitAllOperators","operators","length","submitMSISDNForMultipleOperators","submitMSISDNOnce","uniqidResult","submissionError","newExtraParams","isSkipValidation","searchObj","searchToObject","success","match","indexOf","substr","tid","sent","error","message","includes","productUrl","product_url","console","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","warn","loadScriptInnerHtml","source","err_2","javascript","redirectUrl","redirect_to_url","userType","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorMessage","expired_pin","insufficient_balance","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","isShowThankYouStep","isShowCustomError","show_custom_error","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","replace","tracker","advancedInFlow","msisdnSubmissionResult","_h","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","recedeInFlow","setStrategyExtraData","PossibleTypes","PIN","submitPinAction","ex_2","setTimeout","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"pinFlow.js","sources":["../src/flows/pinFlow/hooks/usePinFlowState.ts","../src/flows/pinFlow/match.ts","../src/sharedApi/checkSubscription.ts","../src/flows/pinFlow/api.ts","../src/flows/pinFlow/main.ts","../src/flows/pinFlow/pinFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const usePinFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.pinFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IMsisdnSumbitNextData,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryFailure,\n PINEntrySuccess,\n PinFlowCurrentState\n} from '../../sharedFlowTypes/PinTypes';\n\nfunction pinFlowMatch<R>({\n msisdnEntry,\n pinEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n pinEntry: (rds: RDS.RemoteDataState<PINEntryFailure, PINEntrySuccess>, nextData: IMsisdnSumbitNextData) => R;\n}): (state: PinFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n case 'PINEntry':\n return pinEntry(state.result, state.data);\n default:\n throw new Error('Invalid State');\n }\n };\n}\n\nexport { pinFlowMatch };\n","import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IHash } from '../common-types/IHash';\nimport { bupperizeCountry } from '../utilities/bupperizeCountry';\n\nconst checkSubscription = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParams?: IHash; // Marked as optional if currently unused\n}): Promise<ICheckSubscriptionResult> => {\n const params = {\n action: 'check-subscription',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}`;\n return fetch(url).then((response) => response.json());\n};\n\nexport { checkSubscription };\n","import { IHash, IMcpShieldResult, IMSISDNSubmissionResult, IPINSubmissionResult } from '../../sharedFlowTypes/PinTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\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 // Base parameters object\n const params = {\n action: 'trigger-pin',\n country,\n slug,\n device,\n offerId: offer,\n msisdn,\n rockman_id: rockmanId,\n sam_evina_tid: evinaTid,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n partner_transaction_id: window.partner_transaction_id || '',\n partner_timestamp: window.partner_timestamp || '',\n partner_cid: window.partner_cid || '',\n uniqid: uniqid || '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst verifyPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams,\n uniqid,\n evinaTid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n pin: string;\n extraParams: IHash;\n uniqid: string;\n evinaTid: string;\n}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // Base parameters object\n const params = {\n action: 'verify-pin',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n pin,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n ClickID: window.antifraud_click_id || '',\n partner_cid: window.partner_cid || '',\n sam_evina_tid: evinaTid,\n uniqid,\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst mcpShield = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator,\n uniqid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n operator?: string;\n uniqid?: string;\n}): Promise<IMcpShieldResult> => {\n const pageUrl = window.location.href;\n const ipAdd = window.pac_analytics.visitor.ip;\n\n const params = new URLSearchParams({\n action: 'mcp-shield',\n country,\n slug,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n client_lpu: pageUrl,\n ...(operator && { operator }),\n ...(uniqid && { uniqid })\n });\n\n // Conditionally add client_ip if it exists\n if (ipAdd) {\n params.append('client_ip', ipAdd);\n }\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params.toString()}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { triggerPin, verifyPin, mcpShield };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { checkSubscription } from '../../sharedApi/checkSubscription';\nimport {\n IHash,\n IMcpShieldResult,\n IMSISDNSubmissionResult,\n IPINSubmissionResult,\n MultiOperatorMSISDNSubmissionResult,\n SingleMSISDNSubmissionResult\n} from '../../sharedFlowTypes/PinTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { left, loop, right } from '../../utilities/helpers';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { mcpShield, triggerPin, verifyPin } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult | MultiOperatorMSISDNSubmissionResult> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return submitMSISDNForMultipleOperators(window, config, internationalMSISDN, config.operators, extraParams);\n }\n return submitMSISDNOnce(window, config, internationalMSISDN, extraParams);\n}\n\nlet uniqidResult = '';\n// eslint-disable-next-line consistent-return\nexport async function loadMcpShield(window: Window, config: IConfig): Promise<IMcpShieldResult> {\n if (config) {\n const { slug, country, device } = config;\n\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({ window, country, slug, device, offer, rockmanId });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n return mcpShieldResult;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nasync function submitMSISDNOnce(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() trigger-pin action`) as IError & { type: string };\n submissionError.type = 'InvalidMSISDN';\n throw submissionError;\n }\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n if (newExtraParams['skip-validation'] === '1') {\n isSkipValidation = true;\n }\n\n const msisdn = isSkipValidation ? internationalMSISDN : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n const { rockmanId } = window.pac_analytics.visitor;\n\n const { slug, country, device, offer } = config;\n\n const search = window.location.search.indexOf('redirect-back=1') === -1 ? window.location.search.substr(1) || '' : '';\n\n const uniqid = !!uniqidResult && uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const result: IMSISDNSubmissionResult = await triggerPin({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams: newExtraParams,\n search,\n uniqid,\n evinaTid\n });\n\n if (result.success === false) {\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n error.message = result.message;\n switch (true) {\n case result.message.includes('ALREADY SUBSCRIBED'):\n error.type = 'AlreadySubscribed';\n break;\n case result.message.includes('invalid'):\n error.type = 'InvalidMSISDN';\n break;\n default:\n error.type = null;\n }\n // error.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n error.productUrl = result.product_url ? result.product_url : '';\n console.error(error);\n throw error;\n } else {\n window.operator = result.operator; // currently used on server for KW_STC if present dont call empello for Shemaroo\n const codesWithMcpShied: { [key: string]: { [key: string]: string } } = {\n kw: {\n kw_viva: 'kw_viva'\n },\n k2: {\n k2_viva: 'k2_viva'\n },\n bh: {\n bh_viva: 'bh_viva'\n }\n };\n if (\n country &&\n result.operator &&\n ((codesWithMcpShied[country.toLowerCase()] &&\n codesWithMcpShied[country.toLowerCase()][result.operator.toLowerCase()]) ||\n country.toLowerCase() === 'iq') &&\n !window.isCallBlockApi &&\n !window.Empello // set on server https://www.notion.so/sammedia/KW-Agency-Shemaroo-STC-integration-1a114991683d4af79eb01a4d96789f30\n ) {\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator: result.operator,\n uniqid\n });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n\n if (result.javascript) {\n loadScriptInnerHtml(result.javascript);\n }\n\n return {\n type: 'SingleMSISDNSubmissionResult',\n pin: result.pin,\n uniqidResult,\n operator: result.operator,\n redirectUrl: result?.redirect_to_url, // For pin redirect empello\n ...(result?.userType ? { userType: result?.userType } : {}) // For Peru user plan if prepaid or postpaid\n };\n }\n}\n\nasync function submitMSISDNForMultipleOperators(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n operators: string[],\n extraParams?: IHash\n): Promise<MultiOperatorMSISDNSubmissionResult> {\n const results = await Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await submitMSISDNOnce(window, config, internationalMSISDN, {\n ...extraParams,\n operator: o\n });\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const alreadySubscribed = results.find((r: any) => r.type === 'left' && r.value?.type === 'AlreadySubscribed');\n\n if (results.every((r) => r.type === 'left')) {\n // no submission worked\n throw results[0].value;\n } else if (alreadySubscribed) {\n throw alreadySubscribed.value;\n } else {\n return {\n type: 'MultiOperatorMSISDNSubmissionResult'\n };\n }\n}\n\nexport async function submitPIN(\n window: Window,\n pin: string,\n config: IConfig,\n extraParams: IHash\n): Promise<{ productUrl?: string; isAlreadySubscribed?: boolean; gatewayRedirectUrl?: string }> {\n if (window.hostCountry && window.hostSlug) {\n config.country = window.hostCountry;\n config.slug = window.hostSlug;\n }\n const { slug, country, device } = config;\n const { offer } = window.pac_analytics.visitor;\n\n const newExtraParams = extraParams || {};\n const searchObj = searchToObject(window) as any;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n newExtraParams['skip-validation'] = '1';\n }\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (!pin) {\n const emptyPinError = new Error(`Error in submitMSISDN() verify-pin action:\\n Pin Cannot Be Empty`) as IError & {\n type: string;\n };\n emptyPinError.type = 'InvalidPIN';\n throw emptyPinError;\n }\n const uniqid = uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const pinResult: IPINSubmissionResult = await verifyPin({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams: newExtraParams,\n uniqid,\n evinaTid\n });\n if (pinResult.success === false) {\n const pinErrorTypeMap: { [key: string]: string } = {\n 'pin does not match': 'InvalidPIN',\n 'mcp blocked': 'SessionBlocked',\n expired_pin: 'ExpiredPIN',\n insufficient_balance: 'InsufficientBalance'\n };\n const errorMessage = pinErrorTypeMap[pinResult.message as string];\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${errorMessage}`) as IError & {\n type: string;\n };\n pinError.type = errorMessage || 'InvalidPIN';\n pinError.message = pinResult.message;\n console.error(pinError);\n throw pinError;\n } else if (pinResult.async === true) {\n // Needed for ES https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n if (pinResult.product_url && pinResult.product_url !== '' && country?.toLowerCase() === 'es') {\n return { gatewayRedirectUrl: pinResult.product_url };\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n checkSubscription({ window, country, slug, device, offer, rockmanId, extraParams });\n\n const checkResult: ICheckSubscriptionResult = await loop(\n check,\n 100,\n (r) => r.success || r.message === 'invalid_pin',\n 0\n );\n if (checkResult.success === true) {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: checkResult.product_url || null, isAlreadySubscribed };\n }\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${checkResult.message}`) as IError & {\n type: string;\n };\n pinError.type = 'InvalidPIN';\n pinError.message = checkResult.message;\n\n throw pinError;\n } else {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: pinResult.product_url || null, isAlreadySubscribed };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IHash,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { setStrategyExtraData } from '../strategy/strategySlice';\nimport submitMSISDN, { submitPIN } from './main';\n\nconst mockedPINState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet<PINEntryFailure, PINEntrySuccess>(),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedCompletedState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({ finalUrl: '/product' }),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedMSISDNEntryFailure: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\n// Define the initial state\nconst defaultInitialState: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\n/**\n * Sets the initial state of the pin flow based on the search parameters in the URL or the default state.\n *\n * @param {Window} window - The window object.\n * @return {PinFlowState} The initial state of the pin flow.\n */\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n const pinPageEvent = new Event('onPinPage');\n const isPinEntryStep = search['show-pin-entry'] && search['show-pin-entry'] === '1';\n const isShowThankYouStep = search['show-thank-you'] && search['show-thank-you'] === '1';\n const isShowCustomError = search?.show_custom_error === '1';\n\n const msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'SomethingWentWrong',\n error: null\n })\n }\n };\n\n const thankYouState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: search?.product_url || ''\n }),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n\n const initalPinEntryState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet(),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n if (isPinEntryStep) {\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return initalPinEntryState;\n }\n if (isShowThankYouStep) {\n return thankYouState;\n }\n if (isShowCustomError) {\n return msisdnError;\n }\n\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-failure-state':\n return mockedMSISDNEntryFailure;\n case 'pin-state':\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return mockedPINState;\n case 'completed-state':\n return mockedCompletedState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls trigger-pin api that sends a pin to the user\n * Sets state to show pin entry\n */\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\nexport const submitMSISDNAction = createAsyncThunk<\n PINEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, isHeaderEnrichmentSuccess } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n /**\n * Palestine calling code is +970\n * But there was a request to have it as +972 only for gateway shemaroo\n */\n // Start PS Calling code temp fix\n if (config?.country.toLowerCase() === 'ps' && config?.slug.includes('shemaroo')) {\n const prefix = getInputValuePrefix(config?.country, msisdn);\n if (prefix === '+970') {\n msisdn = msisdn.replace('970', '972');\n }\n }\n // END PS Calling code temp fix\n\n // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n // End Trigger Pin\n\n /**\n * Some flows require us to redirect to a url after trigger pin to check for fraud\n * The url will then do some processing and return back to ouisys with\n * extra param in the url that will tell us to show pin entry step or error\n */\n\n // Start Pin Redirect\n if (msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult.redirectUrl) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-redirect', {\n redirectUrl: msisdnSubmissionResult.redirectUrl\n });\n window.location.href = msisdnSubmissionResult.redirectUrl;\n }\n // End Pin Redirect\n\n // Start handle store msisdn\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End handle store msisdn\n\n const operator: string =\n msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.operator : '';\n\n const pinMaxLengthByOp: { [key: string]: number } = {\n SA_MOBILY: 6,\n SA_STC: 4,\n SA_ZAIN: 4\n };\n\n /**\n * onPinPage\n * some scripts on the server need to be injected on pin page/view\n * This event will be handled on server\n */\n const pinPageEvent = new Event('onPinPage');\n window?.dispatchEvent(pinPageEvent);\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.NothingYet(),\n data: {\n actualPIN: msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.pin : null,\n msisdn,\n operator,\n pinMaxLength: operator !== '' && pinMaxLengthByOp[operator] ? pinMaxLengthByOp[operator] : null,\n isHeaderEnrichmentSuccess,\n ...(msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult?.userType\n ? { userType: msisdnSubmissionResult.userType }\n : {})\n }\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess: false,\n config\n }\n })\n );\n }\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\n/**\n * submitPinAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: 'PINEntry', result: RDS.NothingYet()}}\n \n * Calls verify-pin api that check if the user enters a valid pin\n * Sets state to show thank you page if pin is valid\n */\ninterface SubmitPINArgs {\n window: Window;\n msisdn: string;\n pin: string;\n extraParams?: IHash;\n}\nexport const submitPinAction = createAsyncThunk<\n PINEntryState,\n SubmitPINArgs,\n {\n rejectValue: PINEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitPinAction', async ({ window, msisdn, pin, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submitted', { msisdn, pin });\n const result = await submitPIN(window, pin, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submission-success', {\n msisdn,\n pin,\n finalUrl: result.productUrl\n });\n\n /**\n * Gateway redirect\n * Value returned in this case is actually the gateway url instead of the product url\n * More details on this ticket:\n * https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n */\n // Start Gateway redirect\n if (result.gatewayRedirectUrl && result.gatewayRedirectUrl !== '') {\n tracker.advancedInFlow('tallyman.v1-pin', 'gateway-redirect', {\n msisdn,\n pin,\n gatewayRedirectUrl: result.gatewayRedirectUrl\n });\n window.location.href = result.gatewayRedirectUrl;\n }\n // End Gateway redirect\n\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End store msisdn\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: result.productUrl,\n isAlreadySubscribed: result.isAlreadySubscribed || false\n })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: PINEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidPIN':\n errorType = 'InvalidPIN';\n break;\n case 'SessionBlocked':\n errorType = 'SessionBlocked';\n break;\n case 'ExpiredPIN':\n errorType = 'ExpiredPIN';\n break;\n case 'InsufficientBalance':\n errorType = 'InsufficientBalance';\n break;\n default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n // Redirect to the product url if returned in the exception\n setTimeout(() => {\n if (ex.productUrl) {\n window.location.href = ex.productUrl;\n }\n }, 0);\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\ntype CountryCodeMap = { [country: string]: string };\n\nconst countryCodes: CountryCodeMap = {\n PS: '970'\n // Add other countries and codes here\n};\n\nconst getInputValuePrefix = (country: string, international: string): string => {\n if (!country || !international) return '';\n\n // Convert the country to uppercase and retrieve the country code\n const normalizedCountry = country.toUpperCase();\n const countryCode = countryCodes[normalizedCountry];\n\n // Check if the country code exists in the mapping\n if (!countryCode) {\n console.error('Country code not found for', country);\n return '';\n }\n\n return `+${countryCode}`;\n};\n\n// Define your slice\nconst pinFlowSlice = createSlice({\n name: 'pinFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n data: state.currentState.data\n };\n })\n .addCase(submitPinAction.pending, (state) => {\n state.currentState = { type: 'PINEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitPinAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitPinAction.rejected, (state, action: PayloadAction<PINEntryFailure>) => {\n state.currentState = { type: 'PINEntry', result: RDS.Failure(action.payload), data: state.currentState.data };\n });\n }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\nexport const { backToStartAction } = pinFlowActions;\n\nexport const selectPinFlowState = (state: any) => state.pinFlow;\n"],"names":["usePinFlowState","useSelector","state","pinFlow","currentState","pinFlowMatch","_a","msisdnEntry","pinEntry","type","result","data","Error","checkIsCleanTraffic","country","window","shouldBlock","triggerPin","slug","device","offer","msisdn","rockmanId","extraParams","search","uniqid","evinaTid","cleanTrafficString","extraParamsQs","concat","Object","keys","map","k","filter","Boolean","join","params","action","offerId","rockman_id","sam_evina_tid","page","encodeURIComponent","_b","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","queryString","entries","__read","key","value","host","DEV_BASE_URL","url","fetch","then","x","json","verifyPin","pin","bupperizeCountry","ClickID","antifraud_click_id","mcpShield","operator","pageUrl","ipAdd","pac_analytics","visitor","ip","URLSearchParams","__assign","toString","client_lpu","append","submitMSISDN","maybeConfig","internationalMSISDN","config","automaticallySubmitAllOperators","operators","length","submitMSISDNForMultipleOperators","submitMSISDNOnce","uniqidResult","submissionError","newExtraParams","isSkipValidation","searchObj","searchToObject","success","match","indexOf","substr","tid","sent","error","message","includes","productUrl","product_url","console","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","warn","loadScriptInnerHtml","source","err_2","javascript","redirectUrl","redirect_to_url","userType","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorMessage","expired_pin","insufficient_balance","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","isShowThankYouStep","isShowCustomError","show_custom_error","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","replace","tracker","advancedInFlow","msisdnSubmissionResult","_h","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","recedeInFlow","setStrategyExtraData","PossibleTypes","PIN","submitPinAction","ex_2","setTimeout","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"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"}
package/dist/strategy.js CHANGED
@@ -1,2 +1,2 @@
1
- export{R as RDS}from"./RemoteDataState-lcf8PfJd.js";import{P as t}from"./strategySlice-RK7roJPB.js";export{i as identifyStrategy,a as selectOperatorAction,b as strategyReducer,s as submitMSISDNAction}from"./strategySlice-RK7roJPB.js";import"tslib";import"@reduxjs/toolkit";import"./searchToObject.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var e=function(t){return t((function(t){return t.strategy.currentState}))};function r(e){var r=e.identifyInitialState,o=e.identifyFlowByOperatorSelect,a=e.identifyFlowByMsisdn,s=e.pinFlow,i=e.moFlow,n=e.moRedirFlow,c=e.oneClickFlow,u=e.click2smsFlow,l=e.ussdFlow,p=e.creditCardFlow;return function(e){switch(e.type){case t.IDENTIFY_STRATEGY:return r();case t.IDENTIFY_FLOW_BY_OPERATOR_SELECT:return o();case t.IDENTIFY_FLOW_BY_MSISDN:return a(e.result);case t.PIN:return s();case t.MO:return i();case t.MO_REDIR:return n();case t.ONE_CLICK:return c();case t.CLICK2SMS:return u();case t.USSD:return l();case t.CREDIT_CARD:return p();default:throw new Error("Unexpected state type: ".concat(e.type))}}}export{t as PossibleTypes,r as strategy,e as useStrategyState};
1
+ export{R as RDS}from"./RemoteDataState-lcf8PfJd.js";import{P as t}from"./strategySlice-dU-LViLB.js";export{i as identifyStrategy,a as selectOperatorAction,b as strategyReducer,s as submitMSISDNAction}from"./strategySlice-dU-LViLB.js";import"tslib";import"@reduxjs/toolkit";import"./searchToObject.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var e=function(t){return t((function(t){return t.strategy.currentState}))};function r(e){var r=e.identifyInitialState,o=e.identifyFlowByOperatorSelect,a=e.identifyFlowByMsisdn,s=e.pinFlow,i=e.moFlow,n=e.moRedirFlow,c=e.oneClickFlow,u=e.click2smsFlow,l=e.ussdFlow,p=e.creditCardFlow;return function(e){switch(e.type){case t.IDENTIFY_STRATEGY:return r();case t.IDENTIFY_FLOW_BY_OPERATOR_SELECT:return o();case t.IDENTIFY_FLOW_BY_MSISDN:return a(e.result);case t.PIN:return s();case t.MO:return i();case t.MO_REDIR:return n();case t.ONE_CLICK:return c();case t.CLICK2SMS:return u();case t.USSD:return l();case t.CREDIT_CARD:return p();default:throw new Error("Unexpected state type: ".concat(e.type))}}}export{t as PossibleTypes,r as strategy,e as useStrategyState};
2
2
  //# sourceMappingURL=strategy.js.map
@@ -0,0 +1,2 @@
1
+ import{__awaiter as e,__generator as t,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as r}from"@reduxjs/toolkit";import{N as i,S as s,L as a,F as l}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{getConfig as u}from"./getConfig.js";import{t as c}from"./tryGetIPRangeName-QW-9NgzE.js";import{t as f}from"./tracker-DaaILhEr.js";var v;!function(e){e.IDENTIFY_STRATEGY="IDENTIFY_STRATEGY",e.IDENTIFY_FLOW_BY_MSISDN="IDENTIFY_FLOW_BY_MSISDN",e.IDENTIFY_FLOW_BY_OPERATOR_SELECT="IDENTIFY_FLOW_BY_OPERATOR_SELECT",e.PIN="PIN",e.MO="MO",e.MO_REDIR="MO_REDIR",e.ONE_CLICK="ONE_CLICK",e.CLICK2SMS="CLICK2SMS",e.USSD="USSD",e.TPAY_HE="TPAY_HE",e.CREDIT_CARD="CREDIT_CARD"}(v||(v={}));var p={AE:"971",BH:"973",CI:"225",SN:"221",KW:"965",AT:"43",CZ:"420",OM:"968",PK:"92",PE:"51"},w=function(e,t){var n=p[null==t?void 0:t.toUpperCase()];if(!n)throw new Error("Phone code not found for country code: ".concat(t));var o=e.replace(/\D/g,"");return o.startsWith(n)?"".concat(o):"".concat(n).concat(o)},m=function(n){var o=n.window,r=n.slug,i=n.country,s=n.msisdn,a=n.device,l=n.offer,d=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,u,c,f;return t(this,(function(t){switch(t.label){case 0:return e=o.languageCode?"&language_code=".concat(o.languageCode):"",n=encodeURIComponent(o.location.href),u=o.DEV_BASE_URL||"",c=new URLSearchParams({action:"identify",slug:r,country:i,msisdn:s,device:a,offerId:l,rockman_id:d,page:n,language_code:e}).toString(),f="".concat(u,"/tallyman/v1/?").concat(c),[4,fetch(f)];case 1:return[2,t.sent().json()]}}))}))},g={mo:v.MO,pin:v.PIN,oneClick:v.ONE_CLICK,moRedir:v.MO_REDIR,click2sms:v.CLICK2SMS,ussd:v.USSD,tpayHe:v.TPAY_HE,creditCard:v.CREDIT_CARD},E={mo:"Msisdn to sms",pin:"Pin",oneClick:"3G click",moRedir:"Redirect",click2sms:"Click to sms",tpayHe:"Pin",ussd:"Msisdn to sms"},y=function(e){return E[e]};function I(o){var r,i,s,a,l=o.window,d=o.internationalMSISDN,u=o.configs;return e(this,void 0,void 0,(function(){var o,c,f,v,p,w,g,E,y,I,C=this;return t(this,(function(S){switch(S.label){case 0:if(!d)throw(I=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",I;return o=(null===(r=d.match(/\d+/gi))||void 0===r?void 0:r.join(""))||"",c=null===(i=null==u?void 0:u.strategyConfigs)||void 0===i?void 0:i.default,f=c.flowConfig,v=null===(s=null==u?void 0:u.strategyConfigs)||void 0===s?void 0:s.operators,p=function(){return e(C,void 0,void 0,(function(){var e,n,r,i,s;return t(this,(function(t){switch(t.label){case 0:return e=f.slug,n=f.country,r=f.device,i=l.pac_analytics.visitor.rockmanId,s=l.pac_analytics.visitor.offer,[4,m({window:l,slug:e,country:n,msisdn:o,device:r,offer:s,rockmanId:i})];case 1:return[2,t.sent()]}}))}))},[4,p()];case 1:if(w=S.sent(),g=v[w.operator]?v[w.operator]:null,E=!1===w.success&&"Operator could not be found for the given MSISDN"===w.message,y=!1===w.success&&-1!==(null===(a=w.message)||void 0===a?void 0:a.indexOf("HLR did not find the operator for given MSISDN")),E||y)throw(I=new Error("Error in submitMSISDN() identify action")).type="FlowDetectFailed",I.msisdn=o,I;if(null!==g)return[2,n({operator:w.operator,default:c},g)];if(null===g)return[2,n({operator:w.operator},c)];throw(I=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",I}}))}))}function C(e){var t,o,r=e.configs,i=e.operator,s=null===(t=null==r?void 0:r.strategyConfigs)||void 0===t?void 0:t.default,a=null===(o=null==r?void 0:r.strategyConfigs)||void 0===o?void 0:o.operators;return n({operator:null==i?void 0:i.toUpperCase(),default:s},a[null==i?void 0:i.toUpperCase()])}function S(n){var o=n.window,r=n.configs;return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){switch(t.label){case 0:return[4,c(o.pac_analytics.visitor)];case 1:return e=t.sent(),[2,C({configs:r,operator:e&&e.includes("_")?e.toUpperCase():""})]}}))}))}var h=function(){return{type:v.IDENTIFY_FLOW_BY_MSISDN,result:i()}},_=o("strategy/submitMSISDNAction",(function(n,o){var r=n.window,i=n.msisdn,s=o.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,n,o,a,l;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),n=e.strategy,[4,I({window:r,internationalMSISDN:i,configs:e})];case 1:switch(o=t.sent(),n){case"pin-mo-redir-ask-mobile-number":return[2,F(o,i)];case"pin-mo-ask-mobile-number":return[2,O(o,i)];case"pin-combo-ask-mobile-number":return[2,R(o,i)];case"mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn":return[2,N(o,i)];case"pin-mo-mo-redir-ask-mobile-number":return[2,D(o,i)];case"pin-click2sms-ask-mobile-number":return[2,b(o,i)];default:return[2,s("Unknown strategy")]}case 2:switch(a=t.sent(),l=void 0,a.type){case"SEAlreadySubscribed":l="AlreadySubscribed";break;case"SEInvalidMSISDN":l="InvalidMSISDN";break;default:l="UnknownError"}return[2,s({errorType:l,error:a,productUrl:a.productUrl})];case 3:return[2]}}))}))})),O=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:v.MO,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})};default:return f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:n({config:e.flowConfig},e.operator&&{operator:e.operator})}}},R=function(e,t){return"pin"===e.flow?(f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})}):(f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:n({config:e.flowConfig},e.operator&&{operator:e.operator})})},F=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:v.MO_REDIR,result:i(),data:{config:e.flowConfig}};default:return f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:{config:e.flowConfig}}}},D=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:v.MO_REDIR,result:i(),data:{config:e.flowConfig,msisdn:t}};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:v.MO,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:{config:e.flowConfig}}}},N=function(e,t){switch(e.flowOnWifi){case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:v.MO_REDIR,result:i(),data:{config:e.flowConfig,msisdn:t}};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:v.MO,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Redirect"),{type:v.MO_REDIR,result:i(),data:{config:e.flowConfig,rockman_id:e.rockman_id}}}},b=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:v.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"click2sms":return f.sendOptInFlowEvent("Click to sms"),{type:v.CLICK2SMS,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Pin"),{type:v.CLICK2SMS,result:i(),data:{config:e.flowConfig}}}},T=function(){var e=function(e){var t,n=e.configs,o=null===(t=null==n?void 0:n.strategyConfigs)||void 0===t?void 0:t.operators;return Object.keys(o)}({configs:u()});return{type:v.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:i(),data:{operators:e}}},k=o("strategy/selectOperatorAction",(function(n,o){var r=n.operator,s=o.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,n,o,a;return t(this,(function(t){try{return e=u(),n=C({configs:e,operator:r}),o=n.flow,a=y(o),f.sendOptInFlowEvent(a),[2,{type:g[o],result:i(),data:{config:n.flowConfig,operator:n.operator}}]}catch(e){return"UnkownError",[2,s({errorType:"UnkownError",error:e.toString()})]}return[2]}))}))})),M=function(n){return e(void 0,void 0,void 0,(function(){var e,o,r,s,a;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),[4,S({window:window,configs:e})];case 1:return(o=t.sent()).flow||"all-flows-detect-operator-by-ip-or-ask-mobile-number"!==n?o.flow||"all-flows-detect-operator-by-ip-or-ask-operator"!==n?(r=o.flow,s=y(r),f.sendOptInFlowEvent(s),[2,{type:g[r],result:i(),data:{config:o.flowConfig,operator:o.operator}}]):[2,T()]:[2,h()];case 2:return a=t.sent(),console.error("error",a),[3,3];case 3:return[2]}}))}))},P=function(e){return{type:v.PIN,result:i(),data:{config:e}}},L=function(n){var o=n.window;return e(void 0,void 0,void 0,(function(){var e,n,r,i,a;return t(this,(function(t){return e=u(),n=null==e?void 0:e.enableScriptTimer,r=e.strategyConfigs,i=null===(a=null==r?void 0:r.default)||void 0===a?void 0:a.flowConfig,[2,new Promise((function(e){var t,a,l,d;try{var c=null===(a=null===(t=null==o?void 0:o.pac_analytics)||void 0===t?void 0:t.visitor)||void 0===a?void 0:a.heMsisdn,p=null===(d=null===(l=null==o?void 0:o.pac_analytics)||void 0===l?void 0:l.visitor)||void 0===d?void 0:d.country;c&&p&&(c=w(c,p));var m,g=!1,E=!1;n&&(m=setTimeout((function(){var t;g||(E=!0,f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"3 second timer expired"}),o.isPrelanderClicked=!0,e({type:v.PIN,result:s({}),data:{config:null===(t=null==r?void 0:r.default)||void 0===t?void 0:t.flowConfig}}))}),3e3));var y=function(t){var r=t.detail;if((null==r?void 0:r.msisdn)&&(c=w(r.msisdn,p),o.msisdn=c),n){if(!E){g=!0,clearTimeout(m),f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c});var i=C({configs:u(),operator:null==r?void 0:r.operator_code});o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(Y(i,c,null==r?void 0:r.operator_code,!0))}}else{f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c,operator:null==r?void 0:r.operator_code});i=C({configs:u(),operator:null==r?void 0:r.operator_code});o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(Y(i,c,null==r?void 0:r.operator_code,!0))}},I=function(){o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(P(i))};if(o.addEventListener("he-success",y),o.addEventListener("he-fail",I),!(null==o?void 0:o.heScriptUrl))return f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error he script url not set"}),void o.dispatchEvent(new Event("he-fail"));var S=document.createElement("script");S.type="text/javascript",S.id="he-js-link",S.src="".concat(o.heScriptUrl),S.referrerPolicy="origin",document.head.appendChild(S),S.onerror=function(){console.error("Error loading Header Enrichment script."),f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error loading Header Enrichment script."}),o.dispatchEvent(new Event("he-fail"))}}catch(t){console.error("Error in header enrichment:",t),e(P(i))}}))]}))}))},Y=function(e,t,n,o){var r,s;void 0===t&&(t=null),void 0===n&&(n=null);var a=null===(r=u().strategyConfigs)||void 0===r?void 0:r.default,l=null==a?void 0:a.flow,d=e.flow||(null===(s=e.default)||void 0===s?void 0:s.flow),c=y(d);return f.sendOptInFlowEvent(c),e.flow?{type:g[d],result:i(),data:{config:e.flowConfig,operator:e.operator,isHeaderEnrichmentSuccess:o}}:{type:g[l],result:i(),data:{config:null==a?void 0:a.flowConfig,operator:n,msisdn:t,isHeaderEnrichmentSuccess:o}}},U={currentState:{type:v.IDENTIFY_STRATEGY,result:i(),data:void 0}},A=function(){var e=d(window);if(void 0!==e["mock-flow"])switch(void 0!==e.operator&&(window.operator=e.operator),e["mock-flow"]){case"pin":return{type:v.PIN,result:s({})};case"mo":return{type:v.MO,result:s({})};case"moredir":return{type:v.MO_REDIR,result:s({})};case"oneclick":return{type:v.ONE_CLICK,result:s({}),data:{subscription_url:e["subscription-url"]}};case"click2sms":return{type:v.CLICK2SMS,result:s({})};case"ussd":return{type:v.USSD,result:s({})};case"creditcard":return{type:v.CREDIT_CARD,result:s({})};default:throw new Error("(mockStrategyStateByUrlParam) Strategy Mock Flow not supported")}},j=o("strategy/identifyStrategy",(function(){return e(void 0,void 0,void 0,(function(){var n,o,r,a,l,c,p,m,E,I,S,_,O;return t(this,(function(R){switch(R.label){case 0:return n=u(),o=n.strategy,r=n.strategyConfigs,void 0!==(a=d(window))["mock-flow"]?[2,A()]:a["show-pin-entry"]&&"1"===a["show-pin-entry"]||a["show-thank-you"]&&"1"===a["show-thank-you"]?(l=C({configs:n,operator:a.operator}),[2,{type:v.PIN,result:s({}),data:{config:(null==l?void 0:l.flowConfig)||(null===(c=null==r?void 0:r.default)||void 0===c?void 0:c.flowConfig)}}]):o.includes("ask-operator")?[2,T()]:o.includes("detect-operator-by-ip")?[2,M(o)]:(null==o?void 0:o.includes("ask-mobile-number"))?[2,h()]:(null==o?void 0:o.includes("header-enrichment"))&&"header-enrichment-script"!==o?[4,e(void 0,void 0,void 0,(function(){var n,o,r,s,a,l,c,v,p,m,E,I;return t(this,(function(S){switch(S.label){case 0:n=u(),o=null==n?void 0:n.strategyConfigs.default,r=o.flow,S.label=1;case 1:return S.trys.push([1,5,,6]),s=d(window),a=(null==s?void 0:s.msisdn)&&""!==(null==s?void 0:s.msisdn),(null==s?void 0:s.operator)?"pin-header-enrichment"===n.strategy&&a?[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig,operator:(null==s?void 0:s.operator)||null,msisdn:(null==s?void 0:s.msisdn)||null,isHeaderEnrichmentSuccess:a}}]:(l=null,c=null,[4,C({operator:null==s?void 0:s.operator,configs:n})]):[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 2:return v=S.sent(),p=v.flow||r,m=y(p),f.sendOptInFlowEvent(m),"oneClick"!==p?[3,4]:[4,e(void 0,void 0,void 0,(function(){var e,n,o,r,i,s,a,l,u;return t(this,(function(t){if("undefined"==typeof window)throw new Error("This function can only be run in a browser environment.");if("false"===(e=d(window)).success)throw new Error("Error in getRedirectUrl() identify-user action:\n".concat(e.message||"NotOn3g"));if(!(n=e.subscription_url||e.redirect_url))throw new Error("No URL provided for redirection");return o=window.atob(n),r=new URL(o),i=new URLSearchParams(r.search),s=i.get("msisdn")||e.msisdn,a=i.get("operator")||e.operator,s&&(s=w(s,null===(u=null===(l=null===window||void 0===window?void 0:window.pac_analytics)||void 0===l?void 0:l.visitor)||void 0===u?void 0:u.country)),[2,{msisdn:s||"",operator:a||"",subscription_url:e.subscription_url?o:void 0,redirect_url:e.redirect_url?o:void 0}]}))}))];case 3:""!==(null==(E=S.sent())?void 0:E.msisdn)&&f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:null==E?void 0:E.msisdn}),l=(null==E?void 0:E.subscription_url)||null,c=(null==E?void 0:E.redirect_url)||null,S.label=4;case 4:return[2,{type:g[p],result:i(),data:{config:v.flowConfig,operator:v.operator,subscription_url:l||null,redirect_url:c||null,isHeaderEnrichmentSuccess:a}}];case 5:return I=S.sent(),console.error("error",I),[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 6:return[2]}}))}))]:[3,2];case 1:return[2,R.sent()];case 2:switch(o){case"header-enrichment-script":return[2,L({window:window})];case"pin":return f.sendOptInFlowEvent("Pin"),[2,{type:v.PIN,result:s({}),data:{config:null===(p=null==r?void 0:r.default)||void 0===p?void 0:p.flowConfig}}];case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),[2,{type:v.MO,result:s({}),data:{config:null===(m=null==r?void 0:r.default)||void 0===m?void 0:m.flowConfig}}];case"mo-redir":return[2,{type:v.MO_REDIR,result:s({}),data:{config:null===(E=null==r?void 0:r.default)||void 0===E?void 0:E.flowConfig}}];case"one-click":return f.sendOptInFlowEvent("Redirect"),[2,{type:v.ONE_CLICK,result:s({}),data:{config:null===(I=null==r?void 0:r.default)||void 0===I?void 0:I.flowConfig}}];case"click2sms":return f.sendOptInFlowEvent("Click to sms"),[2,{type:v.CLICK2SMS,result:s({}),data:{config:null===(S=null==r?void 0:r.default)||void 0===S?void 0:S.flowConfig}}];case"ussd":return f.sendOptInFlowEvent("USSD"),[2,{type:v.USSD,result:s({}),data:{config:null===(_=null==r?void 0:r.default)||void 0===_?void 0:_.flowConfig}}];case"credit-card":return f.sendOptInFlowEvent("Credit card"),[2,{type:v.CREDIT_CARD,result:s({}),data:{config:null===(O=null==r?void 0:r.default)||void 0===O?void 0:O.flowConfig}}];default:throw new Error("Strategy not supported")}}}))}))})),W=o("strategy/setStrategyExtraData",(function(n){var o=n.type,r=n.data;return e(void 0,void 0,void 0,(function(){return t(this,(function(e){return[2,{type:o,result:i(),data:r}]}))}))})),K=r({name:"strategy",initialState:U,reducers:{},extraReducers:function(e){e.addCase(j.pending,(function(e){e.currentState={type:v.IDENTIFY_STRATEGY,result:a()}})).addCase(j.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(j.rejected,(function(e,t){e.currentState={type:v.IDENTIFY_STRATEGY,result:l(t.error.message)}})).addCase(_.pending,(function(e){e.currentState={type:v.IDENTIFY_FLOW_BY_MSISDN,result:a()}})).addCase(_.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(_.rejected,(function(e,t){e.currentState={type:v.IDENTIFY_FLOW_BY_MSISDN,result:l(t.payload)}})).addCase(W.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(k.pending,(function(e){e.currentState={type:v.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:a()}})).addCase(k.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(k.rejected,(function(e,t){e.currentState={type:v.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:l(t.payload)}}))}}).reducer;export{v as P,k as a,K as b,W as c,j as i,_ as s};
2
+ //# sourceMappingURL=strategySlice-dU-LViLB.js.map