ouisys-engine 5.0.15 → 5.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/oneClickFlow.js +1 -1
- package/dist/oneClickFlow.js.map +1 -1
- package/dist/pinFlow.js +1 -1
- package/dist/pinFlow.js.map +1 -1
- package/dist/types/{OneClickTypes-opMxtnh3.d.ts → OneClickTypes-CgHVbYo3.d.ts} +1 -0
- package/dist/types/{PinTypes-g8Mg4EZR.d.ts → PinTypes-Qg7uoCYw.d.ts} +2 -0
- package/dist/types/{StrategyTypes-CFq3BVvP.d.ts → StrategyTypes-ByJRIdxj.d.ts} +2 -2
- package/dist/types/click2smsFlow.d.ts +4 -4
- package/dist/types/oneClickFlow.d.ts +2 -2
- package/dist/types/pinFlow.d.ts +2 -2
- package/dist/types/strategy.d.ts +4 -4
- package/package.json +1 -1
package/dist/oneClickFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as r,__generator as e,__assign as t,__read as n}from"tslib";import{createAsyncThunk as c,createSlice as o}from"@reduxjs/toolkit";import{S as a,L as i,F as u,N as s}from"./RemoteDataState-lcf8PfJd.js";import{u as l,t as d}from"./tracker-DaaILhEr.js";import{searchToObject as v}from"./searchToObject.js";import{b as f}from"./bupperizeCountry-CEtt0MKz.js";import{l as p}from"./loadScriptInnerHtml-BzQm-AFb.js";import"pacman-client";import"uuid";var m=function(r){return r((function(r){return r.oneClickFlow.currentState}))};function _(r){var e=r.getRedirectUrl,t=r.subscribe;return function(r){switch(r.type){case"GET_REDIRECT_URL":default:return e(r.result);case"SUBCRIBE_AJAX":return t(r.result)}}}function y(t){var n=t.currentRedirectUrl,c=t.country;return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){switch(e.label){case 0:return"pe"!==c.toLowerCase()?[3,3]:[4,new Promise((function(r){var e=setInterval((function(){window.Empello&&(clearInterval(e),r())}),100)}))];case 1:return e.sent(),"undefined"!=typeof window&&window.Empello?[4,new Promise((function(r){var e;null===(e=window.Empello)||void 0===e||e.getToken((function(e){r(e)}))}))]:[3,3];case 2:return r=e.sent(),[2,l(n,"empello_token",r)];case 3:return[2,n]}}))}))}var w=function(c){var o=c.window,a=c.extraParams,i=c.url;return r(void 0,void 0,void 0,(function(){var r,c,u,s,l,d;return e(this,(function(e){switch(e.label){case 0:r=(null==o?void 0:o.tid)||"",c=(null==o?void 0:o.shouldBlock)?"false":"true",u=(null==o?void 0:o.antifraud_id)||"",s=Object.entries(a||{}).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(encodeURIComponent(c))})).join("&"),e.label=1;case 1:return e.trys.push([1,4,,5]),v=i,f=t({sam_evina_tid:r,antifraud_id:u,"is-clean-traffic":c},Object.fromEntries(new URLSearchParams(s))),p=new URLSearchParams(f).toString(),l="".concat(v,"&").concat(p),[4,fetch(l)];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw d=e.sent(),console.error("Error fetching subscription:",d),d;case 5:return[2]}var v,f,p}))}))},E=function(r){var e=r,t="ouisys_callback_function".concat(Math.floor(1e4*Math.random()));return new Promise((function(n,c){window[t]=function(r){n(r)},e+=-1===e.indexOf("?")?"?":"&",e+="jsonp=".concat(t);var o=document.createElement("script");o.src=e,o.id=t,document.body.appendChild(o),o.onerror=function(){c(new Error("JSONP request to ".concat(r," failed")))}}))},R=function(t){var c=t.window,o=t.maybeConfig,a=t.extraParams;return r(void 0,void 0,void 0,(function(){var r,t,i,u,s,l,d,m,_,y,w,R,b,g,S,U;return e(this,(function(e){switch(e.label){case 0:if(void 0!==c)return[3,1];throw"javascript: console.error('SSR'); void 6";case 1:return r=o.country,t=o.slug,i=o.queryString,u=o.apiAction,s=void 0!==c&&c.tid?c.tid:"",l=c.pac_analytics.visitor.offer,d=c.location.search.substr(1),m=(d&&d.length>0?[d]:[]).concat((i||[]).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(c)}))).join("&"),Object.keys(a).forEach((function(r,e){m.length>0&&(m+="&"),m="".concat(function(r,e,t){void 0===t&&(t="");var n=new RegExp("\\b(".concat(e,"=).*?(&|#|$)"));if(r.search(n)>=0)return r.replace(n,"$1".concat(t,"$2"));var c=r.replace(/[?#]$/,"");return"".concat(c+e,"=").concat(t,"&")}(m,r,a[r])).concat(1===e?"&":"")})),_=c.pac_analytics.visitor.rockmanId,"identify-user"!==u?[3,3]:(w=c.DEV_BASE_URL||"",b="".concat(w,"/tallyman/v1/?action=identify-user&country=").concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&sam_evina_tid=").concat(s,"&").concat(m),[4,E(b)]);case 2:if(!1===(y=e.sent()).success)throw(S=new Error("Error in getRedirectUrl() identify-user action:\n".concat(y.message))).type="NotOn3g",S;return[2,{subscription_url:y.subscription_url||y.redirect_url,action:function(){return h(y.subscription_url)}}];case 3:return"he"!==u?[3,5]:(w=c.DEV_BASE_URL||"",b="".concat(w,"/tallyman/v1/?action=he&country=").concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&sam_evina_tid=").concat(s,"&").concat(m),[4,fetch(b).then((function(r){return r.json()}))]);case 4:if(!1===(g=e.sent()).success)throw(S=new Error("Error in getRedirectUrl() identify-user action:\n".concat(g.message))).type="NotOn3g",S;return p(g.source),[2,{redirect_url:g.redirectUrlWithReplacedUniqid}];case 5:if("om"===r.toLowerCase()){if("false"===(R=v(c)).success)throw(S=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",S;return[2,{redirect_url:R.redirect_url||R.url}]}return b="/tallyman/v1/?action=redirect&country=".concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&page=").concat(encodeURIComponent(null===(U=null==c?void 0:c.location)||void 0===U?void 0:U.href),"&sam_evina_tid=").concat(s,"&").concat(m),[4,fetch(b).then((function(r){return r.json()}))];case 6:if(!1===(g=e.sent()).success)throw(S=new Error("Error in getRedirectUrl() identify-user action:\n".concat(g.message))).type="NotOn3g",S;return[2,{redirect_url:g.redirect_url}];case 7:return[2]}}))}))},h=function(t,n){return r(void 0,void 0,void 0,(function(){var r,c;return e(this,(function(e){switch(e.label){case 0:return[4,w({window:window,extraParams:n,url:t})];case 1:if(!1===(r=e.sent()).success)throw(c=new Error("Error in subscribe() one-click-subscribe action:\n".concat(r.message))).type="ALREADY SUBSCRIBED"===r.message?"AlreadySubscribed":"SubscriptionError",c.productUrl=r.product_url?r.product_url:"",c.message=r.message,c;return[2,r.product_url||r.redirect_url]}}))}))},b=function(t,c,o){return r(void 0,void 0,void 0,(function(){var r,a,i,u,s,l,d,v,p,m,_,y,w,E,R;return e(this,(function(e){return void 0===t?[2,"javascript: console.error('SSR'); void 6"]:(r=c.country,a=c.slug,i=c.queryString,u=t.pac_analytics.visitor.offer,s=t.location.search.substr(1),l=(s&&s.length>0?[s]:[]).concat((i||[]).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(c)}))).join("&"),d=o?"&".concat(Object.keys(o).map((function(r){return"".concat(r,"=").concat(o[r])})).join("&")):"",v=t.location.href.split("/")[3].split("?")[0],p=void 0!==t&&t.tid?t.tid:"",m=(null===(w=null===(y=null==t?void 0:t.pac_analytics)||void 0===y?void 0:y.visitor)||void 0===w?void 0:w.bupperRedirectHost)?t.atob(null===(R=null===(E=null==t?void 0:t.pac_analytics)||void 0===E?void 0:E.visitor)||void 0===R?void 0:R.bupperRedirectHost):null,_=m||t.DEV_BASE_URL_BUPPER||"",[2,"".concat(_,"/").concat(f(r),"/").concat(a,"?offer=").concat(u,"&atmobirun=1&rockman_id=").concat(t.pac_analytics.visitor.rockmanId,"&redirPixels=").concat(t.location.host,"&sam_evina_tid=").concat(p,"&x-xcid=").concat(v).concat(d,"&").concat(l)])}))}))},g={currentState:{type:"GET_REDIRECT_URL",result:a({redirectUrl:"/product"})}},S={currentState:{type:"SUBCRIBE_AJAX",result:s()}},U={currentState:{type:"GET_REDIRECT_URL",result:s()}},k=function(r){var e=v(r);if(!e["mock-flow"])return U;switch(e["current-state"]){case"redirect-url-success-state":return g;case"subscribe-ajax-state":return S;default:return console.error("Mock Flow not supported"),U}}(window),I=c("oneClickFlow/getRedirectUrlAction",(function(n,c){var o=n.window,i=n.isGetRedirectBupperWay,u=n.extraParams,l=n.autoRedirect,f=c.getState,p=c.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,c,m,_,w,E,h,g,S,U,I,C,T;return e(this,(function(e){switch(e.label){case 0:if(r=f(),v(o)["mock-flow"])return[2,k.currentState];if(!(null===(T=null===(C=null===(I=null==r?void 0:r.strategy)||void 0===I?void 0:I.currentState)||void 0===C?void 0:C.data)||void 0===T?void 0:T.config))return[2,p({errorType:"UnexpectedState"})];n=r.strategy.currentState.data,c=n.config,m=n.subscription_url,_=n.redirect_url,w=n.operator,e.label=1;case 1:return e.trys.push([1,8,,9]),!0!==i?[3,4]:[4,b(o,c,t(t({},w&&{operator:w}),u))];case 2:return[4,y({currentRedirectUrl:e.sent(),country:c.country})];case 3:return E=e.sent(),d.customEvent("Flow","advance-auto","redirect-success",{redirect_url:E}),!0!==o.isAutoFraudScreener?!0===l?(d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:E}),setTimeout((function(){o.location.href=E}),0),[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:E})}]):[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:E})}]:(h=setInterval((function(){o.isEvinaSessionChecked&&(clearInterval(h),d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:E}),setTimeout((function(){o.location.href=E}),0))}),100),[3,7]);case 4:return m&&null!=m?[2,{type:"SUBCRIBE_AJAX",result:s()}]:_?(d.customEvent("Flow","advance-auto","redirect-success",{redirect_url:_}),[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:_})}]):(d.advancedInFlow("tallyman.v1-one-click","get-redirect-url"),[4,R({window:o,maybeConfig:c,extraParams:t(t({},w&&{operator:w}),u)})]);case 5:return g=e.sent().redirect_url,d.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),[4,y({currentRedirectUrl:g,country:c.country})];case 6:if(S=e.sent(),d.customEvent("Flow","advance-auto","redirect-success",{updated_redirect_url:S}),!0!==l&&!0!==o.isAutoFraudScreener)return[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:S})}];d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{updated_redirect_url:S}),setTimeout((function(){o.location.href=S}),0),e.label=7;case 7:return[3,9];case 8:return U=e.sent(),console.warn(U),d.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),[2,p({errorType:"UnknownError",message:U.message,error:U.toString()})];case 9:return[2]}}))}))})),C=c("oneClickFlow/subscribeUrlAction",(function(t,n){var c=t.window,o=t.autoRedirect,i=t.extraParams,u=n.getState,s=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,l,v,f,p;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(p=null===(f=null===(v=null==r?void 0:r.strategy)||void 0===v?void 0:v.currentState)||void 0===f?void 0:f.data)||void 0===p?void 0:p.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data.subscription_url,e.label=1;case 1:return e.trys.push([1,3,,4]),d.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,h(t,i)];case 2:return n=e.sent(),d.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:n}),!0===o&&(d.customEvent("Flow","advance-auto","click-product-url",{product_url:n}),c.location.href=n),[2,{type:"SUBCRIBE_AJAX",result:a({productUrl:n})}];case 3:return l=e.sent(),console.warn(l),d.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:l.toString()}),[2,s({errorType:"UnknownError",error:l.toString(),productUrl:l.productUrl})];case 4:return[2]}}))}))})),T=o({name:"oneClickFlow",initialState:k,reducers:{},extraReducers:function(r){r.addCase(I.pending,(function(r){r.currentState={type:"GET_REDIRECT_URL",result:i()}})).addCase(I.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(I.rejected,(function(r,e){r.currentState={type:"GET_REDIRECT_URL",result:u(e.payload)}})).addCase(C.pending,(function(r){r.currentState={type:"SUBCRIBE_AJAX",result:i()}})).addCase(C.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(C.rejected,(function(r,e){r.currentState={type:"SUBCRIBE_AJAX",result:u(e.payload)}}))}}),j=T.reducer;T.actions;export{I as getRedirectUrlAction,_ as oneClickFlowMatch,j as oneClickFlowReducer,C as subscribeUrlAction,m as useOneClickFlowState};
|
|
1
|
+
import{__awaiter as r,__generator as e,__assign as t,__read as n}from"tslib";import{createAsyncThunk as c,createSlice as o}from"@reduxjs/toolkit";import{S as a,L as i,F as u,N as s}from"./RemoteDataState-lcf8PfJd.js";import{u as l,t as d}from"./tracker-DaaILhEr.js";import{searchToObject as v}from"./searchToObject.js";import{b as f}from"./bupperizeCountry-CEtt0MKz.js";import{l as p}from"./loadScriptInnerHtml-BzQm-AFb.js";import"pacman-client";import"uuid";var m=function(r){return r((function(r){return r.oneClickFlow.currentState}))};function _(r){var e=r.getRedirectUrl,t=r.subscribe;return function(r){switch(r.type){case"GET_REDIRECT_URL":default:return e(r.result);case"SUBCRIBE_AJAX":return t(r.result)}}}function y(t){var n=t.currentRedirectUrl,c=t.country;return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){switch(e.label){case 0:return"pe"!==c.toLowerCase()?[3,3]:[4,new Promise((function(r){var e=setInterval((function(){window.Empello&&(clearInterval(e),r())}),100)}))];case 1:return e.sent(),"undefined"!=typeof window&&window.Empello?[4,new Promise((function(r){var e;null===(e=window.Empello)||void 0===e||e.getToken((function(e){r(e)}))}))]:[3,3];case 2:return r=e.sent(),[2,l(n,"empello_token",r)];case 3:return[2,n]}}))}))}var w=function(c){var o=c.window,a=c.extraParams,i=c.url;return r(void 0,void 0,void 0,(function(){var r,c,u,s,l,d;return e(this,(function(e){switch(e.label){case 0:r=(null==o?void 0:o.tid)||"",c=(null==o?void 0:o.shouldBlock)?"false":"true",u=(null==o?void 0:o.antifraud_id)||"",s=Object.entries(a||{}).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(encodeURIComponent(c))})).join("&"),e.label=1;case 1:return e.trys.push([1,4,,5]),v=i,f=t({sam_evina_tid:r,antifraud_id:u,"is-clean-traffic":c},Object.fromEntries(new URLSearchParams(s))),p=new URLSearchParams(f).toString(),l="".concat(v,"&").concat(p),[4,fetch(l)];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw d=e.sent(),console.error("Error fetching subscription:",d),d;case 5:return[2]}var v,f,p}))}))},E=function(r){var e=r,t="ouisys_callback_function".concat(Math.floor(1e4*Math.random()));return new Promise((function(n,c){window[t]=function(r){n(r)},e+=-1===e.indexOf("?")?"?":"&",e+="jsonp=".concat(t);var o=document.createElement("script");o.src=e,o.id=t,document.body.appendChild(o),o.onerror=function(){c(new Error("JSONP request to ".concat(r," failed")))}}))},R=function(t){var c=t.window,o=t.maybeConfig,a=t.extraParams;return r(void 0,void 0,void 0,(function(){var r,t,i,u,s,l,d,m,_,y,w,R,g,b,S,U;return e(this,(function(e){switch(e.label){case 0:if(void 0!==c)return[3,1];throw"javascript: console.error('SSR'); void 6";case 1:return r=o.country,t=o.slug,i=o.queryString,u=o.apiAction,s=void 0!==c&&c.tid?c.tid:"",l=c.pac_analytics.visitor.offer,d=c.location.search.substr(1),m=(d&&d.length>0?[d]:[]).concat((i||[]).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(c)}))).join("&"),Object.keys(a).forEach((function(r,e){m.length>0&&(m+="&"),m="".concat(function(r,e,t){void 0===t&&(t="");var n=new RegExp("\\b(".concat(e,"=).*?(&|#|$)"));if(r.search(n)>=0)return r.replace(n,"$1".concat(t,"$2"));var c=r.replace(/[?#]$/,"");return"".concat(c+e,"=").concat(t,"&")}(m,r,a[r])).concat(1===e?"&":"")})),_=c.pac_analytics.visitor.rockmanId,"identify-user"!==u?[3,3]:(w=c.DEV_BASE_URL||"",g="".concat(w,"/tallyman/v1/?action=identify-user&country=").concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&sam_evina_tid=").concat(s,"&").concat(m),[4,E(g)]);case 2:if(!1===(y=e.sent()).success)throw(S=new Error("Error in getRedirectUrl() identify-user action:\n".concat(y.message))).type="NotOn3g",S;return[2,{subscription_url:y.subscription_url||y.redirect_url,action:function(){return h(y.subscription_url)}}];case 3:return"he"!==u?[3,5]:(w=c.DEV_BASE_URL||"",g="".concat(w,"/tallyman/v1/?action=he&country=").concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&sam_evina_tid=").concat(s,"&").concat(m),[4,fetch(g).then((function(r){return r.json()}))]);case 4:if(!1===(b=e.sent()).success)throw(S=new Error("Error in getRedirectUrl() identify-user action:\n".concat(b.message))).type="NotOn3g",S;return p(b.source),[2,{redirect_url:b.redirectUrlWithReplacedUniqid}];case 5:if("om"===r.toLowerCase()){if("false"===(R=v(c)).success)throw(S=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",S;return[2,{redirect_url:R.redirect_url||R.url}]}return g="/tallyman/v1/?action=redirect&country=".concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&page=").concat(encodeURIComponent(null===(U=null==c?void 0:c.location)||void 0===U?void 0:U.href),"&sam_evina_tid=").concat(s,"&").concat(m),[4,fetch(g).then((function(r){return r.json()}))];case 6:if(!1===(b=e.sent()).success)throw(S=new Error("Error in getRedirectUrl() identify-user action:\n".concat(b.message))).type="NotOn3g",S;return[2,{redirect_url:b.redirect_url}];case 7:return[2]}}))}))},h=function(t,n){return r(void 0,void 0,void 0,(function(){var r,c;return e(this,(function(e){switch(e.label){case 0:return[4,w({window:window,extraParams:n,url:t})];case 1:if(!1===(r=e.sent()).success)throw(c=new Error("Error in subscribe() one-click-subscribe action:\n".concat(r.message))).type="ALREADY SUBSCRIBED"===r.message?"AlreadySubscribed":"SubscriptionError",c.productUrl=r.product_url?r.product_url:"",c.message=r.message,c;return[2,r.product_url||r.redirect_url]}}))}))},g=function(t,c,o){return r(void 0,void 0,void 0,(function(){var r,a,i,u,s,l,d,v,p,m,_,y,w,E,R;return e(this,(function(e){return void 0===t?[2,"javascript: console.error('SSR'); void 6"]:(r=c.country,a=c.slug,i=c.queryString,u=t.pac_analytics.visitor.offer,s=t.location.search.substr(1),l=(s&&s.length>0?[s]:[]).concat((i||[]).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(c)}))).join("&"),d=o?"&".concat(Object.keys(o).map((function(r){return"".concat(r,"=").concat(o[r])})).join("&")):"",v=t.location.href.split("/")[3].split("?")[0],p=void 0!==t&&t.tid?t.tid:"",m=(null===(w=null===(y=null==t?void 0:t.pac_analytics)||void 0===y?void 0:y.visitor)||void 0===w?void 0:w.bupperRedirectHost)?t.atob(null===(R=null===(E=null==t?void 0:t.pac_analytics)||void 0===E?void 0:E.visitor)||void 0===R?void 0:R.bupperRedirectHost):null,_=m||t.DEV_BASE_URL_BUPPER||"",[2,"".concat(_,"/").concat(f(r),"/").concat(a,"?offer=").concat(u,"&atmobirun=1&rockman_id=").concat(t.pac_analytics.visitor.rockmanId,"&redirPixels=").concat(t.location.host,"&sam_evina_tid=").concat(p,"&x-xcid=").concat(v).concat(d,"&").concat(l)])}))}))},b={currentState:{type:"GET_REDIRECT_URL",result:a({redirectUrl:"/product"})}},S={currentState:{type:"SUBCRIBE_AJAX",result:s()}},U={currentState:{type:"GET_REDIRECT_URL",result:s()}},k=function(r){var e=v(r);if(!e["mock-flow"])return U;switch(e["current-state"]){case"redirect-url-success-state":return b;case"subscribe-ajax-state":return S;default:return console.error("Mock Flow not supported"),U}}(window),I=c("oneClickFlow/getRedirectUrlAction",(function(n,c){var o=n.window,i=n.isGetRedirectBupperWay,u=n.extraParams,l=n.autoRedirect,f=c.getState,p=c.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,c,m,_,w,E,h,b,S,U,I,C,T;return e(this,(function(e){switch(e.label){case 0:if(r=f(),v(o)["mock-flow"])return[2,k.currentState];if(!(null===(T=null===(C=null===(I=null==r?void 0:r.strategy)||void 0===I?void 0:I.currentState)||void 0===C?void 0:C.data)||void 0===T?void 0:T.config))return[2,p({errorType:"UnexpectedState"})];n=r.strategy.currentState.data,c=n.config,m=n.subscription_url,_=n.redirect_url,w=n.operator,e.label=1;case 1:return e.trys.push([1,8,,9]),!0!==i?[3,4]:[4,g(o,c,t(t({},w&&{operator:w}),u))];case 2:return[4,y({currentRedirectUrl:e.sent(),country:c.country})];case 3:return E=e.sent(),d.customEvent("Flow","advance-auto","redirect-success",{redirect_url:E}),!0!==o.isAutoFraudScreener?!0===l?(d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:E}),setTimeout((function(){o.location.href=E}),0),[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:E})}]):[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:E})}]:(h=setInterval((function(){o.isEvinaSessionChecked&&(clearInterval(h),d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:E}),setTimeout((function(){o.location.href=E}),0))}),100),[3,7]);case 4:return m&&null!=m?[2,{type:"SUBCRIBE_AJAX",result:s()}]:_?(d.customEvent("Flow","advance-auto","redirect-success",{redirect_url:_}),[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:_})}]):(d.advancedInFlow("tallyman.v1-one-click","get-redirect-url"),[4,R({window:o,maybeConfig:c,extraParams:t(t({},w&&{operator:w}),u)})]);case 5:return b=e.sent().redirect_url,d.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),[4,y({currentRedirectUrl:b,country:c.country})];case 6:if(S=e.sent(),d.customEvent("Flow","advance-auto","redirect-success",{updated_redirect_url:S}),!0!==l&&!0!==o.isAutoFraudScreener)return[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:S})}];d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{updated_redirect_url:S}),setTimeout((function(){o.location.href=S}),0),e.label=7;case 7:return[3,9];case 8:return U=e.sent(),console.warn(U),d.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),[2,p({errorType:"UnknownError",message:U.message,error:U.toString()})];case 9:return[2]}}))}))})),C=c("oneClickFlow/subscribeUrlAction",(function(t,n){var c=t.window,o=t.autoRedirect,i=t.extraParams,u=n.getState,s=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,l,v,f,p;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(p=null===(f=null===(v=null==r?void 0:r.strategy)||void 0===v?void 0:v.currentState)||void 0===f?void 0:f.data)||void 0===p?void 0:p.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data.subscription_url,e.label=1;case 1:return e.trys.push([1,3,,4]),d.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,h(t,i)];case 2:return n=e.sent(),d.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:n}),!0===o&&(d.customEvent("Flow","advance-auto","click-product-url",{product_url:n}),c.location.href=n),[2,{type:"SUBCRIBE_AJAX",result:a({productUrl:n})}];case 3:return l=e.sent(),console.warn(l),d.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:l.toString()}),[2,s({errorType:"UnknownError",error:l.toString(),productUrl:l.productUrl,message:l.message||""})];case 4:return[2]}}))}))})),T=o({name:"oneClickFlow",initialState:k,reducers:{},extraReducers:function(r){r.addCase(I.pending,(function(r){r.currentState={type:"GET_REDIRECT_URL",result:i()}})).addCase(I.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(I.rejected,(function(r,e){r.currentState={type:"GET_REDIRECT_URL",result:u(e.payload)}})).addCase(C.pending,(function(r){r.currentState={type:"SUBCRIBE_AJAX",result:i()}})).addCase(C.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(C.rejected,(function(r,e){r.currentState={type:"SUBCRIBE_AJAX",result:u(e.payload)}}))}}),j=T.reducer;T.actions;export{I as getRedirectUrlAction,_ as oneClickFlowMatch,j as oneClickFlowReducer,C as subscribeUrlAction,m as useOneClickFlowState};
|
|
2
2
|
//# sourceMappingURL=oneClickFlow.js.map
|
package/dist/oneClickFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oneClickFlow.js","sources":["../src/flows/oneClickFlow/hooks/useOneClickFlowState.ts","../src/flows/oneClickFlow/match.ts","../src/utilities/addEmpelloToken.ts","../src/utilities/replaceUrlParam.ts","../src/flows/oneClickFlow/api.ts","../src/flows/oneClickFlow/main.ts","../src/flows/oneClickFlow/oneClickFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useOneClickFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.oneClickFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IGETREDIRECTURLFailure,\n IGETREDIRECTURLSuccess,\n OneClickFlowCurrentState,\n SubscribeFailure,\n SubscribeSuccess\n} from '../../sharedFlowTypes/OneClickTypes';\n\nfunction oneClickFlowMatch<R>({\n getRedirectUrl,\n subscribe\n}: {\n getRedirectUrl: (rds: RDS.RemoteDataState<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>) => R;\n subscribe?: (rds: RDS.RemoteDataState<SubscribeFailure, SubscribeSuccess>) => R;\n}): (state: OneClickFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'GET_REDIRECT_URL':\n return getRedirectUrl(state.result);\n case 'SUBCRIBE_AJAX':\n return subscribe(state.result);\n default:\n // TODO - this should be an error or something\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return getRedirectUrl(state.result);\n }\n };\n}\n\nexport { oneClickFlowMatch };\n","import { updateUrlParameter } from '../pacman/queryString';\n\nexport async function addEmpelloToken({\n currentRedirectUrl,\n country\n}: {\n currentRedirectUrl: string;\n country: string;\n}) {\n if (country.toLowerCase() === 'pe') {\n // Empello script is added on server\n\n await new Promise<void>((resolve) => {\n // check if empello script is loaded and available\n const checkEmpelloAvailability = setInterval(() => {\n if (window.Empello) {\n clearInterval((checkEmpelloAvailability as unknown) as number);\n resolve();\n }\n }, 100);\n });\n if (typeof window !== 'undefined' && window.Empello) {\n // call getToken function from empello\n const token = await new Promise<string>((resolve) => {\n window.Empello?.getToken((empelloToken: string) => {\n resolve(empelloToken);\n });\n });\n\n const url = updateUrlParameter(currentRedirectUrl, 'empello_token', token);\n return url;\n }\n }\n\n return currentRedirectUrl;\n}\n","export const replaceUrlParam = (url: string, paramName: string, paramValue = '') => {\n const pattern = new RegExp(`\\\\b(${paramName}=).*?(&|#|$)`);\n if (url.search(pattern) >= 0) {\n return url.replace(pattern, `$1${paramValue}$2`);\n }\n const newUrl = url.replace(/[?#]$/, '');\n return `${newUrl + paramName}=${paramValue}&`;\n};\n","import { IHash } from '../../common-types/IHash';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const getRedirectAPI = () => {};\n\nconst getUrlWithParams = (baseURL: string, params: IHash) => {\n const queryParams = new URLSearchParams(params).toString();\n return `${baseURL}&${queryParams}`;\n};\n\nexport const oneClickSubscribe = async ({\n window,\n extraParams,\n url\n}: {\n window: Window;\n extraParams?: IHash;\n url: string;\n}) => {\n const evinaTid = window?.tid || '';\n const isCleanTraffic = window?.shouldBlock ? 'false' : 'true';\n const antifraudId = window?.antifraud_id || '';\n\n const extraParamsQs = Object.entries(extraParams || {})\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n try {\n const resultUrl = getUrlWithParams(url, {\n sam_evina_tid: evinaTid,\n antifraud_id: antifraudId,\n 'is-clean-traffic': isCleanTraffic,\n ...Object.fromEntries(new URLSearchParams(extraParamsQs))\n });\n\n const response = await fetch(resultUrl);\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error fetching subscription:', error);\n throw error; // Rethrow or handle error as needed\n }\n};\n","import { IError } from '../../common-types/IError';\nimport { IHash } from '../../common-types/IHash';\nimport { IIDentifyUserResult, ILinkExtraParams, ISubscribeResult } from '../../sharedFlowTypes/OneClickTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { replaceUrlParam } from '../../utilities/replaceUrlParam';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { oneClickSubscribe } from './api';\n\nexport const additionalQueryString = `msisdnSubmitted=Y&legalCheckbox=Y&incentivizedCheckbox=Y&op_confirmCheckbox=N`;\n\nconst fetchJsonp: <T>(_url: string) => Promise<T> = (_url: string) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n // @ts-ignore\n window[ouisys_callback_function] = (arg) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\n\nexport const getRedirectUrl = async ({\n window,\n maybeConfig,\n extraParams\n}: {\n window: Window;\n maybeConfig: IConfig;\n extraParams?: ILinkExtraParams;\n}): Promise<{\n subscription_url?: string;\n redirect_url?: string;\n action?: () => Promise<string>;\n}> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-throw-literal, no-script-url\n throw \"javascript: console.error('SSR'); void 6\";\n } else {\n const { country, slug, queryString, apiAction } = maybeConfig;\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n let search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n Object.keys(extraParams).forEach((element, index) => {\n // Check if search already has query parameters\n if (search.length > 0) {\n // If there are existing parameters, add '&' before appending the new one\n search += '&';\n }\n search = `${replaceUrlParam(search, element, extraParams[element])}${index === 1 ? '&' : ''}`;\n });\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (apiAction === 'identify-user') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=identify-user&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetchJsonp<IIDentifyUserResult>(url);\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n action: () => subscribe(result.subscription_url)\n };\n }\n } else if (apiAction === 'he') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=he&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n loadScriptInnerHtml(result.source);\n return { redirect_url: result.redirectUrlWithReplacedUniqid };\n }\n } else {\n if (country.toLowerCase() === 'om') {\n const searchObj = searchToObject(window) as {\n redirect_url: string;\n url: string;\n msisdn: string;\n success: 'true' | 'false';\n };\n if (searchObj.success === 'false') {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: searchObj.redirect_url || searchObj.url };\n }\n }\n const url = `/tallyman/v1/?action=redirect&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&page=${encodeURIComponent(\n window?.location?.href\n )}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: result.redirect_url };\n }\n }\n }\n};\n\nexport const subscribe: (url: string, extraParams?: IHash) => Promise<string> = async (\n url: string,\n extraParams?: IHash\n) => {\n const result: ISubscribeResult = await oneClickSubscribe({\n window,\n extraParams,\n url\n });\n\n if (result.success === false) {\n const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as {\n productUrl: string;\n } & IError;\n subscribeError.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'SubscriptionError';\n subscribeError.productUrl = result.product_url ? result.product_url : '';\n subscribeError.message = result.message;\n throw subscribeError;\n } else {\n return result.product_url || result.redirect_url;\n }\n};\n\nexport const getRedirectUrlBupperWay = async (\n window: Window,\n maybeConfig: IConfig,\n extraParams?: ILinkExtraParams\n): Promise<string> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-script-url\n return \"javascript: console.error('SSR'); void 6\";\n }\n const { country, slug, queryString } = maybeConfig;\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // one click flow must use http not https\n const xcid = window.location.href.split('/')[3].split('?')[0];\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const baseHostBupper = window?.pac_analytics?.visitor?.bupperRedirectHost\n ? window.atob(window?.pac_analytics?.visitor?.bupperRedirectHost)\n : null;\n const host = baseHostBupper || (window as Window).DEV_BASE_URL_BUPPER || '';\n\n return `${host}/${bupperizeCountry(country)}/${slug}?offer=${offer}&atmobirun=1&rockman_id=${\n window.pac_analytics.visitor.rockmanId\n }&redirPixels=${window.location.host}&sam_evina_tid=${evinaTid}&x-xcid=${xcid}${extraParamsQs}&${search}`;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n AJAXSUBSCRIBEState,\n GETREDIRECTUrlState,\n IGETREDIRECTURLFailure,\n OneClickFlowState,\n SubscribeFailure\n} from '../../sharedFlowTypes/OneClickTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { addEmpelloToken } from '../../utilities/addEmpelloToken';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { getRedirectUrl, getRedirectUrlBupperWay, subscribe } from './main';\n\nexport const mockedRedirectUrlSuccessState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n // @ts-ignore\n result: RDS.Success<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>({ redirectUrl: '/product' })\n }\n};\n\nexport const mockedSubscribeAjaxState: OneClickFlowState = {\n currentState: {\n type: 'SUBCRIBE_AJAX',\n // @ts-ignore\n result: RDS.NothingYet()\n }\n};\n\nconst defaultInitialState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'redirect-url-success-state':\n return mockedRedirectUrlSuccessState;\n case 'subscribe-ajax-state':\n return mockedSubscribeAjaxState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface GetRedirectUrlArgs {\n window: Window;\n extraParams?: IHash;\n autoRedirect?: boolean;\n isGetRedirectBupperWay?: boolean;\n ignoreUrlParams?: boolean;\n}\n/**\n * getRedirectUrlAction\n * @returns {type: ' 'oneClickFlow/getRedirectUrlAction', payload: {type: PossibleTypes, result: GETREDIRECTUrlState}}\n \n * Calls redirect api to get a redirect url for the user to be redirected to\n * Can also create a bupper redirect url\n */\nexport const getRedirectUrlAction = createAsyncThunk<\n GETREDIRECTUrlState,\n GetRedirectUrlArgs,\n {\n rejectValue: IGETREDIRECTURLFailure;\n }\n>(\n 'oneClickFlow/getRedirectUrlAction',\n // @ts-ignore\n async ({ window, isGetRedirectBupperWay, extraParams, autoRedirect }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n return initialState.currentState;\n }\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n\n const { config, subscription_url, redirect_url, operator } = state.strategy.currentState.data;\n try {\n if (isGetRedirectBupperWay === true) {\n const redirectUrl = await getRedirectUrlBupperWay(window, config, {\n ...(operator && { operator }),\n ...extraParams\n });\n\n // add empellow token for specific country\n const updatedRedirectUrl = await addEmpelloToken({\n currentRedirectUrl: redirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: updatedRedirectUrl });\n if (window.isAutoFraudScreener === true) {\n // Wait for Evina to Check Fraud First\n const timer = setInterval(() => {\n if (window.isEvinaSessionChecked) {\n clearInterval(timer);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', {\n redirect_url: updatedRedirectUrl\n });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n }\n }, 100);\n } else if (autoRedirect === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { redirect_url: updatedRedirectUrl });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n }\n } else {\n if (subscription_url && subscription_url != null) {\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.NothingYet()\n };\n }\n if (redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url });\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: redirect_url\n })\n };\n }\n\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url');\n const { redirect_url: newRedirectUrl } = await getRedirectUrl({\n window,\n maybeConfig: config,\n extraParams: {\n ...(operator && { operator }),\n ...extraParams\n }\n });\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url-success');\n\n // add empellow token for specific country\n const updated_redirect_url = await addEmpelloToken({\n currentRedirectUrl: newRedirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { updated_redirect_url });\n\n if (autoRedirect === true || window.isAutoFraudScreener === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { updated_redirect_url });\n\n setTimeout(() => {\n // eslint-disable-next-line camelcase\n window.location.href = updated_redirect_url;\n }, 0);\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updated_redirect_url\n })\n };\n }\n }\n } catch (ex) {\n console.warn(ex);\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n return rejectWithValue({\n errorType: 'UnknownError',\n message: ex.message,\n error: ex.toString()\n });\n }\n }\n);\n\n/**\n * subscribeUrlAction\n * @returns {type: ' 'oneClickFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls oneclick subscripe api to subscribe the user\n * Returns a product url\n */\ninterface OneClickSubscribeArgs {\n window: Window;\n autoRedirect?: boolean;\n extraParams?: IHash;\n}\nexport const subscribeUrlAction = createAsyncThunk<\n AJAXSUBSCRIBEState,\n OneClickSubscribeArgs,\n {\n rejectValue: SubscribeFailure;\n }\n>('oneClickFlow/subscribeUrlAction', async ({ window, autoRedirect, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { subscription_url } = state.strategy.currentState.data;\n try {\n // Start Call to Subscribe ajax\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe');\n const product_url = await subscribe(subscription_url, extraParams);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe-success', { product_url });\n // End Call to Subscribe ajax\n\n if (autoRedirect === true) {\n tracker.customEvent('Flow', 'advance-auto', 'click-product-url', { product_url });\n window.location.href = product_url;\n }\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Success({\n productUrl: product_url\n })\n };\n } catch (ex) {\n console.warn(ex);\n\n tracker.recedeInFlow('tallyman.v1-one-click', 'click-subscribe-failure', { error: ex.toString() });\n\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString(),\n productUrl: ex.productUrl\n });\n }\n});\n\nconst oneClickFlowSlice = createSlice({\n name: 'oneClickFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getRedirectUrlAction.pending, (state) => {\n state.currentState = { type: 'GET_REDIRECT_URL', result: RDS.Loading() };\n })\n .addCase(getRedirectUrlAction.fulfilled, (state, action: PayloadAction<GETREDIRECTUrlState>) => {\n state.currentState = action.payload;\n })\n .addCase(getRedirectUrlAction.rejected, (state, action: PayloadAction<IGETREDIRECTURLFailure>) => {\n state.currentState = {\n type: 'GET_REDIRECT_URL',\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(subscribeUrlAction.pending, (state) => {\n state.currentState = { type: 'SUBCRIBE_AJAX', result: RDS.Loading() };\n })\n .addCase(subscribeUrlAction.fulfilled, (state, action: PayloadAction<AJAXSUBSCRIBEState>) => {\n state.currentState = action.payload;\n })\n .addCase(subscribeUrlAction.rejected, (state, action: PayloadAction<SubscribeFailure>) => {\n state.currentState = {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: oneClickFlowReducer, actions: oneClickFlowActions } = oneClickFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectOneClickFlowState = (state: any) => state.oneClickFlow;\n"],"names":["useOneClickFlowState","useSelector","state","oneClickFlow","currentState","oneClickFlowMatch","_a","getRedirectUrl","subscribe","type","result","addEmpelloToken","currentRedirectUrl","country","toLowerCase","Promise","resolve","checkEmpelloAvailability","setInterval","window","Empello","clearInterval","_b","sent","getToken","empelloToken","token","updateUrlParameter","oneClickSubscribe","extraParams","url","evinaTid","tid","isCleanTraffic","shouldBlock","antifraudId","antifraud_id","extraParamsQs","Object","entries","map","__read","key","value","concat","encodeURIComponent","join","baseURL","params","__assign","sam_evina_tid","fromEntries","URLSearchParams","queryParams","toString","resultUrl","fetch","json","console","error","error_1","fetchJsonp","_url","ouisys_callback_function","Math","floor","random","reject","arg","indexOf","script","document","createElement","src","id","body","appendChild","onerror","Error","maybeConfig","slug","queryString","apiAction","offer","pac_analytics","visitor","s","location","search","substr","search_1","length","k","v","keys","forEach","element","index","paramName","paramValue","pattern","RegExp","replace","newUrl","replaceUrlParam","rockmanId","host","DEV_BASE_URL","bupperizeCountry","result_1","_c","success","identifyError","message","subscription_url","redirect_url","action","then","x","loadScriptInnerHtml","source","redirectUrlWithReplacedUniqid","searchObj","searchToObject","href","__awaiter","subscribeError","productUrl","product_url","getRedirectUrlBupperWay","xcid","split","baseHostBupper","bupperRedirectHost","atob","_d","DEV_BASE_URL_BUPPER","mockedRedirectUrlSuccessState","RDS.Success","redirectUrl","mockedSubscribeAjaxState","RDS.NothingYet","defaultInitialState","initialState","setInitialState","getRedirectUrlAction","createAsyncThunk","isGetRedirectBupperWay","autoRedirect","getState","rejectWithValue","_f","strategy","_e","data","config","errorType","operator","_g","updatedRedirectUrl_1","tracker","customEvent","isAutoFraudScreener","advancedInFlow","setTimeout","timer_1","isEvinaSessionChecked","newRedirectUrl","updated_redirect_url_1","updated_redirect_url","warn","ex_1","recedeInFlow","subscribeUrlAction","ex_2","oneClickFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","oneClickFlowReducer","reducer","actions"],"mappings":"2cAGO,IAAMA,EAAuB,SAACC,GAEnC,OADqBA,GAAY,SAACC,GAAqB,OAAAA,EAAMC,aAAaC,YAAnB,GAEzD,ECGA,SAASC,EAAqBC,OAC5BC,EAAcD,EAAAC,eACdC,EAASF,EAAAE,UAKT,OAAO,SAACN,GACN,OAAQA,EAAMO,MACZ,IAAK,mBAIL,QAIE,OAAOF,EAAeL,EAAMQ,QAN9B,IAAK,gBACH,OAAOF,EAAUN,EAAMQ,QAO7B,CACF,CC3BM,SAAgBC,EAAgBL,OACpCM,EAAkBN,EAAAM,mBAClBC,EAAOP,EAAAO,8GAKuB,OAA1BA,EAAQC,cAAsB,CAAA,EAAA,GAGhC,CAAA,EAAM,IAAIC,SAAc,SAACC,GAEvB,IAAMC,EAA2BC,aAAY,WACvCC,OAAOC,UACTC,cAAeJ,GACfD,IAEH,GAAE,IACJ,mBARDM,EAAAC,OASsB,oBAAXJ,QAA0BA,OAAOC,QAE5B,CAAA,EAAM,IAAIL,SAAgB,SAACC,iBACvCV,EAAAa,OAAOC,wBAASI,UAAS,SAACC,GACxBT,EAAQS,EACV,GACD,KANgD,CAAA,EAAA,UASjD,OAPMC,EAAQJ,EAIZC,OAGF,CAAA,EADYI,EAAmBf,EAAoB,gBAAiBc,IAKxE,KAAA,EAAA,MAAA,CAAA,EAAOd,SACR,CCnCM,ICUMgB,EAAoB,SAAOtB,GACtC,IAAAa,WACAU,EAAWvB,EAAAuB,YACXC,EAAGxB,EAAAwB,gHAMGC,GAAWZ,aAAA,EAAAA,EAAQa,MAAO,GAC1BC,GAAiBd,eAAAA,EAAQe,aAAc,QAAU,OACjDC,GAAchB,aAAA,EAAAA,EAAQiB,eAAgB,GAEtCC,EAAgBC,OAAOC,QAAQV,GAAe,CAAA,GACjDW,KAAI,SAAClC,GAAA,IAAAgB,EAAAmB,OAACC,EAAGpB,EAAA,GAAEqB,EAAKrB,EAAA,GAAM,MAAA,UAAGoB,EAAG,KAAAE,OAAIC,mBAAmBF,GAA7B,IACtBG,KAAK,sBAUW,6BA9BKC,EAuBajB,EAvBIkB,EAwBrCC,EAAA,CAAAC,cAAenB,EACfK,aAAcD,EACd,mBAAoBF,GACjBK,OAAOa,YAAY,IAAIC,gBAAgBf,KA1BxCgB,EAAc,IAAID,gBAAgBJ,GAAQM,WAsBxCC,EArBD,GAAGX,OAAAG,EAAW,KAAAH,OAAAS,GA4BF,CAAA,EAAMG,MAAMD,WACd,MAAA,CAAA,EADEjC,EAAsBC,OACTkC,eAC9B,MAAA,CAAA,EADenC,EAAqBC,eAIpC,iBADAmC,QAAQC,MAAM,+BAAgCC,GACxCA,mBAnCe,IAACb,EAAiBC,EACnCK,SCMFQ,EAA8C,SAACC,GACnD,IAAIhC,EAAMgC,EACJC,EAA2B,2BAA2BnB,OAAAoB,KAAKC,MAAsB,IAAhBD,KAAKE,WAC5E,OAAO,IAAInD,SAAQ,SAACC,EAASmD,GAE3BhD,OAAO4C,GAA4B,SAACK,GAClCpD,EAAQoD,EACV,EAEAtC,IAA6B,IAAtBA,EAAIuC,QAAQ,KAAc,IAAM,IACvCvC,GAAO,SAAAc,OAASmB,GAChB,IAAMO,EAASC,SAASC,cAAc,UACtCF,EAAOG,IAAM3C,EACbwC,EAAOI,GAAKX,EACZQ,SAASI,KAAKC,YAAYN,GAG1BA,EAAOO,QAAU,WACfV,EAAO,IAAIW,MAAM,2BAAoBhB,EAAI,YAC3C,CACF,GACF,EAEavD,EAAiB,SAAOD,GACnC,IAAAa,WACA4D,EAAWzE,EAAAyE,YACXlD,EAAWvB,EAAAuB,4IAUP,QAAkB,IAAXV,EAAP,MAA6B,CAAA,EAAA,GAE/B,KAAM,kDAoBF,OAlBIN,EAA0CkE,EAAWlE,QAA5CmE,EAAiCD,EAA7BC,KAAEC,EAA2BF,EAAhBE,YAAEC,EAAcH,YAC5ChD,OAA6B,IAAXZ,GAA0BA,EAAOa,IAAMb,EAAOa,IAAM,GAEpEmD,EAAUhE,EAAOiE,cAAcC,cACjCC,EAAInE,EAAOoE,SAASC,OAAOC,OAAO,GAEpCC,GAAYJ,GAAKA,EAAEK,OAAS,EAAI,CAACL,GAAK,IAAI1C,QAAQqC,GAAe,IAAIzC,KAAI,SAAClC,GAAA,IAAAgB,EAAAmB,OAACmD,EAACtE,EAAA,GAAEuE,EAACvE,EAAA,GAAM,MAAA,GAAGsB,OAAAgD,EAAK,KAAAhD,OAAAiD,EAAR,KAAc/C,KAAK,KAE5GR,OAAOwD,KAAKjE,GAAakE,SAAQ,SAACC,EAASC,GAErCP,EAAOC,OAAS,IAElBD,GAAU,KAEZA,EAAS,GAAG9C,OFlEa,SAACd,EAAaoE,EAAmBC,QAAA,IAAAA,IAAAA,EAAe,IAC7E,IAAMC,EAAU,IAAIC,OAAO,OAAOzD,OAAAsD,EAAuB,iBACzD,GAAIpE,EAAI0D,OAAOY,IAAY,EACzB,OAAOtE,EAAIwE,QAAQF,EAAS,KAAKxD,OAAAuD,EAAc,OAEjD,IAAMI,EAASzE,EAAIwE,QAAQ,QAAS,IACpC,MAAO,UAAGC,EAASL,EAAa,KAAAtD,OAAAuD,MAClC,CE2DkBK,CAAgBd,EAAQM,EAASnE,EAAYmE,YAAsB,IAAVC,EAAc,IAAM,GAC3F,IACQQ,EAActF,EAAOiE,cAAcC,kBAEzB,kBAAdH,EAA6B,CAAA,EAAA,IACzBwB,EAAQvF,EAAkBwF,cAAgB,GAC1C7E,EAAM,UAAG4E,EAAI,+CAAA9D,OAA8CgE,EAC/D/F,GACQ,UAAA+B,OAAAoC,qBAAe,QAAO,aAAApC,OAAYuC,EAAoB,gBAAAvC,OAAA6D,4BAA2B1E,EAAQ,KAAAa,OAAI8C,GACxF,CAAA,EAAM7B,EAAgC/B,YACrD,IAAuB,KADjB+E,EAASC,EAA0CvF,QAC9CwF,QAGT,MAFMC,EAAgB,IAAIlC,MAAM,oDAAAlC,OAAoDiE,EAAOI,WAC7ExG,KAAO,UACfuG,EAEN,MAAO,CAAA,EAAA,CACLE,iBAAkBL,EAAOK,kBAAoBL,EAAOM,aACpDC,OAAQ,WAAM,OAAA5G,EAAUqG,EAAOK,iBAAiB,WAG3C,MAAc,OAAdhC,EAAkB,CAAA,EAAA,IACrBwB,EAAQvF,EAAkBwF,cAAgB,GAC1C7E,EAAM,UAAG4E,EAAI,oCAAA9D,OAAmCgE,EACpD/F,GACQ,UAAA+B,OAAAoC,qBAAe,QAAO,aAAApC,OAAYuC,EAAoB,gBAAAvC,OAAA6D,4BAA2B1E,EAAQ,KAAAa,OAAI8C,GACxF,CAAA,EAAMlC,MAAM1B,GAAKuF,MAAK,SAACC,GAAM,OAAAA,EAAE7D,MAAF,aAC5C,IAAuB,KADjB/C,EAASoG,EAAsCvF,QAC1CwF,QAGT,MAFMC,EAAgB,IAAIlC,MAAM,oDAAAlC,OAAoDlC,EAAOuG,WAC7ExG,KAAO,UACfuG,EAGN,OADAO,EAAoB7G,EAAO8G,QAC3B,CAAA,EAAO,CAAEL,aAAczG,EAAO+G,uCAGhC,GAA8B,OAA1B5G,EAAQC,cAAwB,CAOlC,GAA0B,WANpB4G,EAAYC,EAAexG,IAMnB4F,QAGZ,MAFMC,EAAgB,IAAIlC,MAAM,4CAClBrE,KAAO,UACfuG,EAEN,MAAO,CAAA,EAAA,CAAEG,aAAcO,EAAUP,cAAgBO,EAAU5F,KAE9D,CAMc,OALTA,EAAM,yCAAAc,OAAyCgE,EACnD/F,GACD,UAAA+B,OAASoC,EAAI,YAAApC,OAAW,QAAO,aAAAA,OAAYuC,EAAK,gBAAAvC,OAAe6D,EAAkB,UAAA7D,OAAAC,mBAC9D,QAAlBvB,EAAAH,aAAM,EAANA,EAAQoE,gBAAU,IAAAjE,OAAA,EAAAA,EAAAsG,MACD,mBAAAhF,OAAAb,EAAY,KAAAa,OAAA8C,GAChB,CAAA,EAAMlC,MAAM1B,GAAKuF,MAAK,SAACC,GAAM,OAAAA,EAAE7D,MAAF,YAE5C,IAAuB,KAFjB/C,EAASoG,EAAsCvF,QAE1CwF,QAGT,MAFMC,EAAgB,IAAIlC,MAAM,oDAAAlC,OAAoDlC,EAAOuG,WAC7ExG,KAAO,UACfuG,EAEN,MAAA,CAAA,EAAO,CAAEG,aAAczG,EAAOyG,wCAMzB3G,EAAmE,SAC9EsB,EACAD,GAAmB,OAAAgG,OAAA,OAAA,OAAA,GAAA,8DAEc,KAAA,EAAA,MAAA,CAAA,EAAMjG,EAAkB,CACvDT,OAAMA,OACNU,YAAWA,EACXC,IAAGA,YAGL,IAAuB,KANjBpB,EAA2BJ,EAI/BiB,QAESwF,QAOT,MANMe,EAAiB,IAAIhD,MAAM,qDAAAlC,OAAqDlC,EAAOuG,WAG9ExG,KAA0B,uBAAnBC,EAAOuG,QAAmC,oBAAsB,oBACtFa,EAAeC,WAAarH,EAAOsH,YAActH,EAAOsH,YAAc,GACtEF,EAAeb,QAAUvG,EAAOuG,QAC1Ba,EAEN,MAAA,CAAA,EAAOpH,EAAOsH,aAAetH,EAAOyG,sBAI3Bc,EAA0B,SACrC9G,EACA4D,EACAlD,GAA8B,OAAAgG,OAAA,OAAA,OAAA,GAAA,wEAE9B,YAAsB,IAAX1G,EAET,CAAA,EAAO,6CAEDN,EAA+BkE,EAAxBlE,QAAEmE,EAAsBD,EAAWC,KAA3BC,EAAgBF,cAC/BI,EAAUhE,EAAOiE,cAAcC,cACjCC,EAAInE,EAAOoE,SAASC,OAAOC,OAAO,GAElCD,GAAYF,GAAKA,EAAEK,OAAS,EAAI,CAACL,GAAK,IAAI1C,QAAQqC,GAAe,IAAIzC,KAAI,SAAClC,GAAA,IAAAgB,EAAAmB,OAACmD,EAACtE,EAAA,GAAEuE,EAACvE,EAAA,GAAM,MAAA,GAAGsB,OAAAgD,EAAK,KAAAhD,OAAAiD,EAAR,KAAc/C,KAAK,KACxGT,EAAiBR,EAEnB,IAAIe,OAAAN,OAAOwD,KAAKjE,GACbW,KAAI,SAACoD,GAAM,MAAA,GAAGhD,OAAAgD,EAAK,KAAAhD,OAAAf,EAAY+D,GAAI,IACnC9C,KAAK,MAHR,GAMEoF,EAAO/G,EAAOoE,SAASqC,KAAKO,MAAM,KAAK,GAAGA,MAAM,KAAK,GACrDpG,OAA6B,IAAXZ,GAA0BA,EAAOa,IAAMb,EAAOa,IAAM,GAEtEoG,WAAiB9G,EAAuB,QAAvBhB,EAAAa,aAAA,EAAAA,EAAQiE,qBAAe,IAAA9E,OAAA,EAAAA,EAAA+E,8BAASgD,oBACnDlH,EAAOmH,KAAmC,QAA9BC,YAAApH,aAAM,EAANA,EAAQiE,oCAAeC,eAAO,IAAAkD,OAAA,EAAAA,EAAEF,oBAC5C,KACE3B,EAAO0B,GAAmBjH,EAAkBqH,qBAAuB,GAEzE,CAAA,EAAO,GAAG5F,OAAA8D,EAAQ,KAAA9D,OAAAgE,EAAiB/F,GAAY,KAAA+B,OAAAoC,oBAAcG,EAAK,4BAAAvC,OAChEzB,EAAOiE,cAAcC,QAAQoB,UACf,iBAAA7D,OAAAzB,EAAOoE,SAASmB,KAAI,mBAAA9D,OAAkBb,EAAQ,YAAAa,OAAWsF,GAAOtF,OAAAP,EAAiB,KAAAO,OAAA4C,UAClG,EC7KYiD,EAAmD,CAC9DrI,aAAc,CACZK,KAAM,mBAENC,OAAQgI,EAA4D,CAAEC,YAAa,eAI1EC,EAA8C,CACzDxI,aAAc,CACZK,KAAM,gBAENC,OAAQmI,MAINC,EAAyC,CAC7C1I,aAAc,CACZK,KAAM,mBACNC,OAAQmI,MAqBNE,EAjBkB,SAAC5H,GACvB,IAAMqE,EAASmC,EAAexG,GAC9B,IAAIqE,EAAO,aAWT,OAAOsD,EAVP,OAAQtD,EAAO,kBACb,IAAK,6BACH,OAAOiD,EACT,IAAK,uBACH,OAAOG,EACT,QAEE,OADAlF,QAAQC,MAAM,2BACPmF,EAKf,CAEqBE,CAAgB7H,QAgBxB8H,EAAuBC,EAOlC,qCAEA,SAAO5I,EAA+DgB,OAA7DH,EAAMb,EAAAa,OAAEgI,EAAsB7I,EAAA6I,uBAAEtH,EAAWvB,EAAAuB,YAAEuH,EAAY9I,EAAA8I,aAAMC,EAAQ/H,EAAA+H,SAAEC,EAAehI,EAAAgI,4IAG/F,GAFMpJ,EAAmBmJ,IACV1B,EAAexG,GACnB,aACT,MAAO,CAAA,EAAA4H,EAAa3I,cAEtB,KAA0C,QAArCmJ,EAA6B,kBAA7BhB,EAAArI,aAAK,EAALA,EAAOsJ,+BAAUpJ,oBAAY,IAAAqJ,OAAA,EAAAA,EAAEC,YAAM,IAAAH,OAAA,EAAAA,EAAAI,QACxC,MAAA,CAAA,EAAOL,EAAgB,CACrBM,UAAW,qBAIT9C,EAAuD5G,EAAMsJ,SAASpJ,aAAasJ,KAAjFC,WAAQzC,qBAAkBC,iBAAc0C,8BAE1C,8BAA2B,IAA3BV,EAA+B,CAAA,EAAA,GACb,CAAA,EAAMlB,EAAwB9G,EAAQwI,SACpDE,GAAY,CAAEA,SAAQA,IACvBhI,YAIsB,MAAA,CAAA,EAAMlB,EAAgB,CAC/CC,mBAPkBkJ,EAGlBvI,OAKAV,QAAS8I,EAAO9I,kBAIlB,OANMkJ,EAAqBD,EAGzBvI,OAEFyI,EAAQC,YAAY,OAAQ,eAAgB,mBAAoB,CAAE9C,aAAc4C,KAC7C,IAA/B5I,EAAO+I,qBAaiB,IAAjBd,GACTY,EAAQG,eAAe,wBAAyB,qBAAsB,CAAEhD,aAAc4C,IACtFK,YAAW,WACTjJ,EAAOoE,SAASqC,KAAOmC,CACxB,GAAE,GACI,CAAA,EAAA,CACLtJ,KAAM,mBACNC,OAAQgI,EAAY,CAClBC,YAAaoB,OAIV,CAAA,EAAA,CACLtJ,KAAM,mBACNC,OAAQgI,EAAY,CAClBC,YAAaoB,OA1BXM,EAAQnJ,aAAY,WACpBC,EAAOmJ,wBACTjJ,cAAcgJ,GACdL,EAAQG,eAAe,wBAAyB,qBAAsB,CACpEhD,aAAc4C,IAEhBK,YAAW,WACTjJ,EAAOoE,SAASqC,KAAOmC,CACxB,GAAE,GAEN,GAAE,mBAqBL,OAAI7C,GAAwC,MAApBA,EACf,CAAA,EAAA,CACLzG,KAAM,gBACNC,OAAQmI,MAGR1B,GACF6C,EAAQC,YAAY,OAAQ,eAAgB,mBAAoB,CAAE9C,aAAYA,IACvE,CAAA,EAAA,CACL1G,KAAM,mBACNC,OAAQgI,EAAY,CAClBC,YAAaxB,QAKnB6C,EAAQG,eAAe,wBAAyB,oBACP,CAAA,EAAM5J,EAAe,CAC5DY,OAAMA,EACN4D,YAAa4E,EACb9H,YAAWoB,EAAAA,EAAA,GACL4G,GAAY,CAAEA,SAAQA,IACvBhI,cAMsB,OAXP0I,EAAmBT,EAOvCvI,OAPkC4F,aAQpC6C,EAAQG,eAAe,wBAAyB,4BAGnB,CAAA,EAAMxJ,EAAgB,CACjDC,mBAAoB2J,EACpB1J,QAAS8I,EAAO9I,kBAKlB,GAPM2J,EAAuBV,EAG3BvI,OAEFyI,EAAQC,YAAY,OAAQ,eAAgB,mBAAoB,CAAEQ,qBAAoBD,KAEjE,IAAjBpB,IAAwD,IAA/BjI,EAAO+I,oBAQlC,MAAO,CAAA,EAAA,CACLzJ,KAAM,mBACNC,OAAQgI,EAAY,CAClBC,YAAa6B,MAVjBR,EAAQG,eAAe,wBAAyB,qBAAsB,CAAEM,qBAAoBD,IAE5FJ,YAAW,WAETjJ,EAAOoE,SAASqC,KAAO4C,CACxB,GAAE,uCAeP,kBAJA9G,QAAQgH,KAAKC,GACbX,EAAQY,aAAa,wBAAyB,2BAA4B,CACxEhB,UAAW,iBAEb,CAAA,EAAON,EAAgB,CACrBM,UAAW,eACX3C,QAAS0D,EAAG1D,QACZtD,MAAOgH,EAAGrH,qCAGf,IAeUuH,EAAqB3B,EAMhC,mCAAmC,SAAO5I,EAAuCgB,GAArC,IAAAH,WAAQiI,EAAY9I,EAAA8I,aAAEvH,EAAWvB,EAAAuB,YAAMwH,EAAQ/H,EAAA+H,SAAEC,EAAehI,EAAAgI,8HAE5G,GADMpJ,EAAmBmJ,MACiB,QAArCI,EAA6B,kBAA7B3C,EAAA5G,aAAK,EAALA,EAAOsJ,+BAAUpJ,oBAAY,IAAAmI,OAAA,EAAAA,EAAEmB,YAAM,IAAAD,OAAA,EAAAA,EAAAE,QACxC,MAAA,CAAA,EAAOL,EAAgB,CACrBM,UAAW,qBAGP1C,EAAqBhH,EAAMsJ,SAASpJ,aAAasJ,KAAIxC,kCAIvC,6BADpB8C,EAAQG,eAAe,wBAAyB,mBAC5B,CAAA,EAAM3J,EAAU0G,EAAkBrF,WAQtD,OARMmG,EAAcuB,EAA8ChI,OAClEyI,EAAQG,eAAe,wBAAyB,0BAA2B,CAAEnC,YAAWA,KAGnE,IAAjBoB,IACFY,EAAQC,YAAY,OAAQ,eAAgB,oBAAqB,CAAEjC,YAAWA,IAC9E7G,EAAOoE,SAASqC,KAAOI,GAElB,CAAA,EAAA,CACLvH,KAAM,gBACNC,OAAQgI,EAAY,CAClBX,WAAYC,aAQhB,kBAJAtE,QAAQgH,KAAKI,GAEbd,EAAQY,aAAa,wBAAyB,0BAA2B,CAAEjH,MAAOmH,EAAGxH,aAErF,CAAA,EAAOgG,EAAgB,CACrBM,UAAW,eACXjG,MAAOmH,EAAGxH,WACVyE,WAAY+C,EAAG/C,qCAGpB,IAEKgD,EAAoBC,EAAY,CACpCC,KAAM,eACNlC,aAAYA,EACZmC,SAAU,CAAE,EACZC,cAAe,SAACC,GACdA,EACGC,QAAQpC,EAAqBqC,SAAS,SAACpL,GACtCA,EAAME,aAAe,CAAEK,KAAM,mBAAoBC,OAAQ6K,IAC3D,IACCF,QAAQpC,EAAqBuC,WAAW,SAACtL,EAAOkH,GAC/ClH,EAAME,aAAegH,EAAOqE,OAC9B,IACCJ,QAAQpC,EAAqByC,UAAU,SAACxL,EAAOkH,GAC9ClH,EAAME,aAAe,CACnBK,KAAM,mBACNC,OAAQiL,EAAYvE,EAAOqE,SAE/B,IACCJ,QAAQR,EAAmBS,SAAS,SAACpL,GACpCA,EAAME,aAAe,CAAEK,KAAM,gBAAiBC,OAAQ6K,IACxD,IACCF,QAAQR,EAAmBW,WAAW,SAACtL,EAAOkH,GAC7ClH,EAAME,aAAegH,EAAOqE,OAC9B,IACCJ,QAAQR,EAAmBa,UAAU,SAACxL,EAAOkH,GAC5ClH,EAAME,aAAe,CACnBK,KAAM,gBACNC,OAAQiL,EAAYvE,EAAOqE,SAE/B,GACH,IAIqBG,EAAsDb,EAAnCc,QAAmCd,EAAiBe"}
|
|
1
|
+
{"version":3,"file":"oneClickFlow.js","sources":["../src/flows/oneClickFlow/hooks/useOneClickFlowState.ts","../src/flows/oneClickFlow/match.ts","../src/utilities/addEmpelloToken.ts","../src/utilities/replaceUrlParam.ts","../src/flows/oneClickFlow/api.ts","../src/flows/oneClickFlow/main.ts","../src/flows/oneClickFlow/oneClickFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useOneClickFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.oneClickFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IGETREDIRECTURLFailure,\n IGETREDIRECTURLSuccess,\n OneClickFlowCurrentState,\n SubscribeFailure,\n SubscribeSuccess\n} from '../../sharedFlowTypes/OneClickTypes';\n\nfunction oneClickFlowMatch<R>({\n getRedirectUrl,\n subscribe\n}: {\n getRedirectUrl: (rds: RDS.RemoteDataState<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>) => R;\n subscribe?: (rds: RDS.RemoteDataState<SubscribeFailure, SubscribeSuccess>) => R;\n}): (state: OneClickFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'GET_REDIRECT_URL':\n return getRedirectUrl(state.result);\n case 'SUBCRIBE_AJAX':\n return subscribe(state.result);\n default:\n // TODO - this should be an error or something\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return getRedirectUrl(state.result);\n }\n };\n}\n\nexport { oneClickFlowMatch };\n","import { updateUrlParameter } from '../pacman/queryString';\n\nexport async function addEmpelloToken({\n currentRedirectUrl,\n country\n}: {\n currentRedirectUrl: string;\n country: string;\n}) {\n if (country.toLowerCase() === 'pe') {\n // Empello script is added on server\n\n await new Promise<void>((resolve) => {\n // check if empello script is loaded and available\n const checkEmpelloAvailability = setInterval(() => {\n if (window.Empello) {\n clearInterval((checkEmpelloAvailability as unknown) as number);\n resolve();\n }\n }, 100);\n });\n if (typeof window !== 'undefined' && window.Empello) {\n // call getToken function from empello\n const token = await new Promise<string>((resolve) => {\n window.Empello?.getToken((empelloToken: string) => {\n resolve(empelloToken);\n });\n });\n\n const url = updateUrlParameter(currentRedirectUrl, 'empello_token', token);\n return url;\n }\n }\n\n return currentRedirectUrl;\n}\n","export const replaceUrlParam = (url: string, paramName: string, paramValue = '') => {\n const pattern = new RegExp(`\\\\b(${paramName}=).*?(&|#|$)`);\n if (url.search(pattern) >= 0) {\n return url.replace(pattern, `$1${paramValue}$2`);\n }\n const newUrl = url.replace(/[?#]$/, '');\n return `${newUrl + paramName}=${paramValue}&`;\n};\n","import { IHash } from '../../common-types/IHash';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const getRedirectAPI = () => {};\n\nconst getUrlWithParams = (baseURL: string, params: IHash) => {\n const queryParams = new URLSearchParams(params).toString();\n return `${baseURL}&${queryParams}`;\n};\n\nexport const oneClickSubscribe = async ({\n window,\n extraParams,\n url\n}: {\n window: Window;\n extraParams?: IHash;\n url: string;\n}) => {\n const evinaTid = window?.tid || '';\n const isCleanTraffic = window?.shouldBlock ? 'false' : 'true';\n const antifraudId = window?.antifraud_id || '';\n\n const extraParamsQs = Object.entries(extraParams || {})\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n try {\n const resultUrl = getUrlWithParams(url, {\n sam_evina_tid: evinaTid,\n antifraud_id: antifraudId,\n 'is-clean-traffic': isCleanTraffic,\n ...Object.fromEntries(new URLSearchParams(extraParamsQs))\n });\n\n const response = await fetch(resultUrl);\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error fetching subscription:', error);\n throw error; // Rethrow or handle error as needed\n }\n};\n","import { IError } from '../../common-types/IError';\nimport { IHash } from '../../common-types/IHash';\nimport { IIDentifyUserResult, ILinkExtraParams, ISubscribeResult } from '../../sharedFlowTypes/OneClickTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { replaceUrlParam } from '../../utilities/replaceUrlParam';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { oneClickSubscribe } from './api';\n\nexport const additionalQueryString = `msisdnSubmitted=Y&legalCheckbox=Y&incentivizedCheckbox=Y&op_confirmCheckbox=N`;\n\nconst fetchJsonp: <T>(_url: string) => Promise<T> = (_url: string) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n // @ts-ignore\n window[ouisys_callback_function] = (arg) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\n\nexport const getRedirectUrl = async ({\n window,\n maybeConfig,\n extraParams\n}: {\n window: Window;\n maybeConfig: IConfig;\n extraParams?: ILinkExtraParams;\n}): Promise<{\n subscription_url?: string;\n redirect_url?: string;\n action?: () => Promise<string>;\n}> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-throw-literal, no-script-url\n throw \"javascript: console.error('SSR'); void 6\";\n } else {\n const { country, slug, queryString, apiAction } = maybeConfig;\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n let search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n Object.keys(extraParams).forEach((element, index) => {\n // Check if search already has query parameters\n if (search.length > 0) {\n // If there are existing parameters, add '&' before appending the new one\n search += '&';\n }\n search = `${replaceUrlParam(search, element, extraParams[element])}${index === 1 ? '&' : ''}`;\n });\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (apiAction === 'identify-user') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=identify-user&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetchJsonp<IIDentifyUserResult>(url);\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n action: () => subscribe(result.subscription_url)\n };\n }\n } else if (apiAction === 'he') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=he&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n loadScriptInnerHtml(result.source);\n return { redirect_url: result.redirectUrlWithReplacedUniqid };\n }\n } else {\n if (country.toLowerCase() === 'om') {\n const searchObj = searchToObject(window) as {\n redirect_url: string;\n url: string;\n msisdn: string;\n success: 'true' | 'false';\n };\n if (searchObj.success === 'false') {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: searchObj.redirect_url || searchObj.url };\n }\n }\n const url = `/tallyman/v1/?action=redirect&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&page=${encodeURIComponent(\n window?.location?.href\n )}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: result.redirect_url };\n }\n }\n }\n};\n\nexport const subscribe: (url: string, extraParams?: IHash) => Promise<string> = async (\n url: string,\n extraParams?: IHash\n) => {\n const result: ISubscribeResult = await oneClickSubscribe({\n window,\n extraParams,\n url\n });\n\n if (result.success === false) {\n const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as {\n productUrl: string;\n } & IError;\n subscribeError.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'SubscriptionError';\n subscribeError.productUrl = result.product_url ? result.product_url : '';\n subscribeError.message = result.message;\n throw subscribeError;\n } else {\n return result.product_url || result.redirect_url;\n }\n};\n\nexport const getRedirectUrlBupperWay = async (\n window: Window,\n maybeConfig: IConfig,\n extraParams?: ILinkExtraParams\n): Promise<string> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-script-url\n return \"javascript: console.error('SSR'); void 6\";\n }\n const { country, slug, queryString } = maybeConfig;\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // one click flow must use http not https\n const xcid = window.location.href.split('/')[3].split('?')[0];\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const baseHostBupper = window?.pac_analytics?.visitor?.bupperRedirectHost\n ? window.atob(window?.pac_analytics?.visitor?.bupperRedirectHost)\n : null;\n const host = baseHostBupper || (window as Window).DEV_BASE_URL_BUPPER || '';\n\n return `${host}/${bupperizeCountry(country)}/${slug}?offer=${offer}&atmobirun=1&rockman_id=${\n window.pac_analytics.visitor.rockmanId\n }&redirPixels=${window.location.host}&sam_evina_tid=${evinaTid}&x-xcid=${xcid}${extraParamsQs}&${search}`;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n AJAXSUBSCRIBEState,\n GETREDIRECTUrlState,\n IGETREDIRECTURLFailure,\n OneClickFlowState,\n SubscribeFailure\n} from '../../sharedFlowTypes/OneClickTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { addEmpelloToken } from '../../utilities/addEmpelloToken';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { getRedirectUrl, getRedirectUrlBupperWay, subscribe } from './main';\n\nexport const mockedRedirectUrlSuccessState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n // @ts-ignore\n result: RDS.Success<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>({ redirectUrl: '/product' })\n }\n};\n\nexport const mockedSubscribeAjaxState: OneClickFlowState = {\n currentState: {\n type: 'SUBCRIBE_AJAX',\n // @ts-ignore\n result: RDS.NothingYet()\n }\n};\n\nconst defaultInitialState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'redirect-url-success-state':\n return mockedRedirectUrlSuccessState;\n case 'subscribe-ajax-state':\n return mockedSubscribeAjaxState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface GetRedirectUrlArgs {\n window: Window;\n extraParams?: IHash;\n autoRedirect?: boolean;\n isGetRedirectBupperWay?: boolean;\n ignoreUrlParams?: boolean;\n}\n/**\n * getRedirectUrlAction\n * @returns {type: ' 'oneClickFlow/getRedirectUrlAction', payload: {type: PossibleTypes, result: GETREDIRECTUrlState}}\n \n * Calls redirect api to get a redirect url for the user to be redirected to\n * Can also create a bupper redirect url\n */\nexport const getRedirectUrlAction = createAsyncThunk<\n GETREDIRECTUrlState,\n GetRedirectUrlArgs,\n {\n rejectValue: IGETREDIRECTURLFailure;\n }\n>(\n 'oneClickFlow/getRedirectUrlAction',\n // @ts-ignore\n async ({ window, isGetRedirectBupperWay, extraParams, autoRedirect }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n return initialState.currentState;\n }\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n\n const { config, subscription_url, redirect_url, operator } = state.strategy.currentState.data;\n try {\n if (isGetRedirectBupperWay === true) {\n const redirectUrl = await getRedirectUrlBupperWay(window, config, {\n ...(operator && { operator }),\n ...extraParams\n });\n\n // add empellow token for specific country\n const updatedRedirectUrl = await addEmpelloToken({\n currentRedirectUrl: redirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: updatedRedirectUrl });\n if (window.isAutoFraudScreener === true) {\n // Wait for Evina to Check Fraud First\n const timer = setInterval(() => {\n if (window.isEvinaSessionChecked) {\n clearInterval(timer);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', {\n redirect_url: updatedRedirectUrl\n });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n }\n }, 100);\n } else if (autoRedirect === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { redirect_url: updatedRedirectUrl });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n }\n } else {\n if (subscription_url && subscription_url != null) {\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.NothingYet()\n };\n }\n if (redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url });\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: redirect_url\n })\n };\n }\n\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url');\n const { redirect_url: newRedirectUrl } = await getRedirectUrl({\n window,\n maybeConfig: config,\n extraParams: {\n ...(operator && { operator }),\n ...extraParams\n }\n });\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url-success');\n\n // add empellow token for specific country\n const updated_redirect_url = await addEmpelloToken({\n currentRedirectUrl: newRedirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { updated_redirect_url });\n\n if (autoRedirect === true || window.isAutoFraudScreener === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { updated_redirect_url });\n\n setTimeout(() => {\n // eslint-disable-next-line camelcase\n window.location.href = updated_redirect_url;\n }, 0);\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updated_redirect_url\n })\n };\n }\n }\n } catch (ex) {\n console.warn(ex);\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n return rejectWithValue({\n errorType: 'UnknownError',\n message: ex.message,\n error: ex.toString()\n });\n }\n }\n);\n\n/**\n * subscribeUrlAction\n * @returns {type: ' 'oneClickFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls oneclick subscripe api to subscribe the user\n * Returns a product url\n */\ninterface OneClickSubscribeArgs {\n window: Window;\n autoRedirect?: boolean;\n extraParams?: IHash;\n}\nexport const subscribeUrlAction = createAsyncThunk<\n AJAXSUBSCRIBEState,\n OneClickSubscribeArgs,\n {\n rejectValue: SubscribeFailure;\n }\n>('oneClickFlow/subscribeUrlAction', async ({ window, autoRedirect, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { subscription_url } = state.strategy.currentState.data;\n try {\n // Start Call to Subscribe ajax\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe');\n const product_url = await subscribe(subscription_url, extraParams);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe-success', { product_url });\n // End Call to Subscribe ajax\n\n if (autoRedirect === true) {\n tracker.customEvent('Flow', 'advance-auto', 'click-product-url', { product_url });\n window.location.href = product_url;\n }\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Success({\n productUrl: product_url\n })\n };\n } catch (ex) {\n console.warn(ex);\n\n tracker.recedeInFlow('tallyman.v1-one-click', 'click-subscribe-failure', { error: ex.toString() });\n\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString(),\n productUrl: ex.productUrl,\n message: ex.message || ''\n });\n }\n});\n\nconst oneClickFlowSlice = createSlice({\n name: 'oneClickFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getRedirectUrlAction.pending, (state) => {\n state.currentState = { type: 'GET_REDIRECT_URL', result: RDS.Loading() };\n })\n .addCase(getRedirectUrlAction.fulfilled, (state, action: PayloadAction<GETREDIRECTUrlState>) => {\n state.currentState = action.payload;\n })\n .addCase(getRedirectUrlAction.rejected, (state, action: PayloadAction<IGETREDIRECTURLFailure>) => {\n state.currentState = {\n type: 'GET_REDIRECT_URL',\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(subscribeUrlAction.pending, (state) => {\n state.currentState = { type: 'SUBCRIBE_AJAX', result: RDS.Loading() };\n })\n .addCase(subscribeUrlAction.fulfilled, (state, action: PayloadAction<AJAXSUBSCRIBEState>) => {\n state.currentState = action.payload;\n })\n .addCase(subscribeUrlAction.rejected, (state, action: PayloadAction<SubscribeFailure>) => {\n state.currentState = {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: oneClickFlowReducer, actions: oneClickFlowActions } = oneClickFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectOneClickFlowState = (state: any) => state.oneClickFlow;\n"],"names":["useOneClickFlowState","useSelector","state","oneClickFlow","currentState","oneClickFlowMatch","_a","getRedirectUrl","subscribe","type","result","addEmpelloToken","currentRedirectUrl","country","toLowerCase","Promise","resolve","checkEmpelloAvailability","setInterval","window","Empello","clearInterval","_b","sent","getToken","empelloToken","token","updateUrlParameter","oneClickSubscribe","extraParams","url","evinaTid","tid","isCleanTraffic","shouldBlock","antifraudId","antifraud_id","extraParamsQs","Object","entries","map","__read","key","value","concat","encodeURIComponent","join","baseURL","params","__assign","sam_evina_tid","fromEntries","URLSearchParams","queryParams","toString","resultUrl","fetch","json","console","error","error_1","fetchJsonp","_url","ouisys_callback_function","Math","floor","random","reject","arg","indexOf","script","document","createElement","src","id","body","appendChild","onerror","Error","maybeConfig","slug","queryString","apiAction","offer","pac_analytics","visitor","s","location","search","substr","search_1","length","k","v","keys","forEach","element","index","paramName","paramValue","pattern","RegExp","replace","newUrl","replaceUrlParam","rockmanId","host","DEV_BASE_URL","bupperizeCountry","result_1","_c","success","identifyError","message","subscription_url","redirect_url","action","then","x","loadScriptInnerHtml","source","redirectUrlWithReplacedUniqid","searchObj","searchToObject","href","__awaiter","subscribeError","productUrl","product_url","getRedirectUrlBupperWay","xcid","split","baseHostBupper","bupperRedirectHost","atob","_d","DEV_BASE_URL_BUPPER","mockedRedirectUrlSuccessState","RDS.Success","redirectUrl","mockedSubscribeAjaxState","RDS.NothingYet","defaultInitialState","initialState","setInitialState","getRedirectUrlAction","createAsyncThunk","isGetRedirectBupperWay","autoRedirect","getState","rejectWithValue","_f","strategy","_e","data","config","errorType","operator","_g","updatedRedirectUrl_1","tracker","customEvent","isAutoFraudScreener","advancedInFlow","setTimeout","timer_1","isEvinaSessionChecked","newRedirectUrl","updated_redirect_url_1","updated_redirect_url","warn","ex_1","recedeInFlow","subscribeUrlAction","ex_2","oneClickFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","oneClickFlowReducer","reducer","actions"],"mappings":"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"}
|
package/dist/pinFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as t,__generator as e,__read as r,__assign as n}from"tslib";import{createAsyncThunk as a,createSlice as i}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-CWs0icvt.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"./loadScriptSrc-Da4autZd.js";import"pacman-client";import"uuid";var h=function(t){return t((function(t){return t.pinFlow.currentState}))};function I(t){var e=t.msisdnEntry,r=t.pinEntry;return function(t){switch(t.type){case"MSISDNEntry":return e(t.result);case"PINEntry":return r(t.result,t.data);default:throw new Error("Invalid State")}}}var b=function(t){return"be"===t?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},_=function(n){var a=n.window,i=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 t(void 0,void 0,void 0,(function(){var t,n,m,y,S,w,g;return e(this,(function(e){return t=b(i),n="&".concat(Object.keys(l).map((function(t){return"".concat(t,"=").concat(l[t])})).join("&")),m={action:"trigger-pin",country:i,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==a?void 0:a.location)||void 0===g?void 0:g.href),language_code:a.languageCode||"",antifraud_id:a.antifraud_id||"",partner_transaction_id:a.partner_transaction_id||"",partner_timestamp:a.partner_timestamp||"",partner_cid:a.partner_cid||"",uniqid:v||""},y=Object.entries(m).filter((function(t){var e=r(t,2);return e[0],e[1]})).map((function(t){var e=r(t,2),n=e[0],a=e[1];return"".concat(n,"=").concat(a)})).join("&"),S=a.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(t).concat(n,"&").concat(p),[2,fetch(w).then((function(t){return t.json()}))]}))}))},E=function(n){var a=n.window,i=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 t(void 0,void 0,void 0,(function(){var t,n,f,y,S,w,g;return e(this,(function(e){return t=b(i),n="&".concat(Object.keys(l).map((function(t){return"".concat(t,"=").concat(l[t])})).join("&")),f={action:"verify-pin",country:m(i),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(g=null==a?void 0:a.location)||void 0===g?void 0:g.href),language_code:a.languageCode||"",antifraud_id:a.antifraud_id||"",ClickID:a.antifraud_click_id||"",partner_cid:a.partner_cid||"",sam_evina_tid:v,uniqid:p},y=Object.entries(f).filter((function(t){var e=r(t,2);return e[0],e[1]})).map((function(t){var e=r(t,2),n=e[0],a=e[1];return"".concat(n,"=").concat(a)})).join("&"),S=a.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(t).concat(n),[2,fetch(w).then((function(t){return t.json()}))]}))}))},k=function(r){var a=r.window,i=r.country,o=r.slug,s=r.device,c=r.offer,u=r.rockmanId,d=r.operator,l=r.uniqid;return t(void 0,void 0,void 0,(function(){var t,r,p,v,f;return e(this,(function(e){return t=a.location.href,r=a.pac_analytics.visitor.ip,p=new URLSearchParams(n(n({action:"mcp-shield",country:i,slug:o,device:s,offerId:c.toString(),rockman_id:u,client_lpu:t},d&&{operator:d}),l&&{uniqid:l})),r&&p.append("client_ip",r),v=a.DEV_BASE_URL||"",f="".concat(v,"/tallyman/v1/?").concat(p.toString()),[2,fetch(f).then((function(t){return t.json()}))]}))}))};function N(r,a,i,o){return t(this,void 0,void 0,(function(){var t;return e(this,(function(e){return!0===(t=n({offer:r.pac_analytics.visitor.offer},a||{})).automaticallySubmitAllOperators&&t.operators&&t.operators.length>0?[2,j(r,t,i,t.operators,o)]:[2,P(r,t,i,o)]}))}))}var U="";function P(r,n,a,i){return t(this,void 0,void 0,(function(){var t,o,s,c,u,d,l,v,f,m,y,S,w,h,I,b,E,N;return e(this,(function(e){switch(e.label){case 0:if(!a)throw(t=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",t;return o=i||{},s=!1,"true"===(null==(c=p(r))?void 0:c.success)&&"1"===c["msisdn-alias"]&&(o["skip-validation"]="1"),"1"===o["skip-validation"]&&(s=!0),u=s?a:a.match(/\d+/gi).join(""),d=r.pac_analytics.visitor.rockmanId,l=n.slug,v=n.country,f=n.device,m=n.offer,y=-1===r.location.search.indexOf("redirect-back=1")&&r.location.search.substr(1)||"",S=U&&""!==U?"&mcpUniqid=".concat(U):"",w=void 0!==r&&r.tid?r.tid:"",[4,_({window:r,country:v,slug:l,device:f,offer:m,msisdn:u,rockmanId:d,extraParams:o,search:y,uniqid:S,evinaTid:w})];case 1:if(!1!==(h=e.sent()).success)return[3,2];switch((I=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(h.message))).message=h.message,!0){case h.message.includes("ALREADY SUBSCRIBED"):I.type="AlreadySubscribed";break;case h.message.includes("invalid"):I.type="InvalidMSISDN";break;default:I.type=null}throw I.productUrl=h.product_url?h.product_url:"",console.error(I),I;case 2:if(r.operator=h.operator,b={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(v&&h.operator&&(b[v.toLowerCase()]&&b[v.toLowerCase()][h.operator.toLowerCase()]||"iq"===v.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];e.label=3;case 3:return e.trys.push([3,5,,6]),[4,k({window:r,country:v,slug:l,device:f,offer:m,rockmanId:d,operator:h.operator,uniqid:S})];case 4:return!1===(E=e.sent()).success?console.warn(E.message):(g(E.source),U=E.uniqid),[3,6];case 5:return N=e.sent(),console.warn(N),[3,6];case 6:return h.javascript&&g(h.javascript),[2,{type:"SingleMSISDNSubmissionResult",pin:h.pin,uniqidResult:U,operator:h.operator,redirectUrl:null==h?void 0:h.redirect_to_url}]}}))}))}function j(r,a,i,o,s){return t(this,void 0,void 0,(function(){var c,u,d=this;return e(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return t(d,void 0,void 0,(function(){var t,c;return e(this,(function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,P(r,a,i,n(n({},s),{operator:o}))];case 1:return t=e.sent(),[2,S(n(n({},t),{operator:o}))];case 2:return c=e.sent(),[2,y(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(t){var e;return"left"===t.type&&"AlreadySubscribed"===(null===(e=t.value)||void 0===e?void 0:e.type)})),c.every((function(t){return"left"===t.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function D(n,a,i,o){return t(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,y,S,g,h,I,b,_,k,N;return e(this,(function(P){switch(P.label){case 0:if(n.hostCountry&&n.hostSlug&&(i.country=n.hostCountry,i.slug=n.hostSlug),s=i.slug,c=i.country,u=i.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,!a)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:a,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"}[h.message],(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",k.message=h.message,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 a=n.window,i=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId;return t(void 0,void 0,void 0,(function(){var t,n,d,l;return e(this,(function(e){return t={action:"check-subscription",country:m(i),slug:o,device:s,offerId:c,rockman_id:u},n=Object.entries(t).filter((function(t){var e=r(t,2);return e[0],null!=e[1]})).map((function(t){var e=r(t,2),n=e[0],a=e[1];return"".concat(n,"=").concat(encodeURIComponent(a))})).join("&"),d=a.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(n),[2,fetch(l).then((function(t){return t.json()}))]}))}))}({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,w(b,100,(function(t){return t.success||"invalid_pin"===t.message}),0)]);case 3:if(!0===(_=P.sent()).success)return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:_.product_url||null,isAlreadySubscribed:N}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(_.message))).type="InvalidPIN",k.message=_.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(t){var e=p(t),r=new Event("onPinPage");if(!e["mock-flow"])return R;switch(e["current-state"]){case"msisdn-failure-state":return C;case"pin-state":return null==t||t.dispatchEvent(r),M;case"completed-state":return A;default:return console.error("Mock Flow not supported"),R}}(window),L=a("pinFlow/submitMSISDNAction",(function(r,a){var i=r.window,s=r.msisdn,c=r.extraParams,u=a.getState,p=a.dispatch,m=a.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,r,a,y,S,w,g,h,I,b,_,E,k,U,P;return e(this,(function(e){switch(e.label){case 0:if(t=u(),!(null===(U=null===(k=null===(E=null==t?void 0:t.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=t.strategy.currentState.data,a=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(P=t.pinFlow)||void 0===P?void 0:P.currentState,e.label=1;case 1:return e.trys.push([1,5,,6]),"ps"===(null==a?void 0:a.country.toLowerCase())&&(null==a?void 0:a.slug.includes("shemaroo"))&&"+970"===T(null==a?void 0:a.country,s)&&(s=s.replace("970","972")),f.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,N(i,a,s)];case 2:return w=e.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}),i.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,v(s).then((function(t){t&&t.data&&t.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){f.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:e.sent(),e.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==i||i.dispatchEvent(I),[2,n(n({},S),{type:"PINEntry",result:o(),data:{actualPIN:"SingleMSISDNSubmissionResult"===w.type?w.pin:null,msisdn:s,operator:g,pinMaxLength:""!==g&&h[g]?h[g]:null,isHeaderEnrichmentSuccess:y}})];case 5:switch(b=e.sent(),console.warn(b),_=void 0,b.type){case"AlreadySubscribed":_="AlreadySubscribed";break;case"InvalidMSISDN":_="InvalidMSISDN";break;default:_="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:_,error:b.toString()}),y&&p(d({type:l.PIN,data:{isHeaderEnrichmentSuccess:y}})),[2,m({errorType:_,error:b.toString(),message:b.message,productUrl:b.productUrl})];case 6:return[2]}}))}))})),B=a("pinFlow/submitPinAction",(function(r,a){var i=r.window,o=r.msisdn,c=r.pin,u=r.extraParams,d=a.getState,l=a.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,r,a,p,m,y,S,w,g,h;return e(this,(function(e){switch(e.label){case 0:if(t=d(),!(null===(g=null===(w=null===(S=null==t?void 0:t.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=t.strategy.currentState.data.config,a=null===(h=t.pinFlow)||void 0===h?void 0:h.currentState,e.label=1;case 1:return e.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,D(i,c,r,u)];case 2:return p=e.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}),i.location.href=p.gatewayRedirectUrl),u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,v(o).then((function(t){t&&t.data&&t.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){f.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:e.sent(),e.label=4;case 4:return[2,n(n({},a),{type:"PINEntry",result:s({finalUrl:p.productUrl,isAlreadySubscribed:p.isAlreadySubscribed||!1})})];case 5:switch(m=e.sent(),console.warn(m),y=void 0,m.type){case"AlreadySubscribed":y="AlreadySubscribed";break;case"InvalidPIN":y="InvalidPIN";break;case"SessionBlocked":y="SessionBlocked";break;default:y="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,error:m.toString(),errorType:y}),setTimeout((function(){m.productUrl&&(i.location.href=m.productUrl)}),0),[2,l({errorType:y,message:m.message,productUrl:m.productUrl})];case 6:return[2]}}))}))})),x={PS:"970"},T=function(t,e){if(!t||!e)return"";var r=t.toUpperCase(),n=x[r];return n?"+".concat(n):(console.error("Country code not found for",t),"")},q=i({name:"pinFlow",initialState:F,reducers:{backToStartAction:function(t){f.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),t.currentState={type:"MSISDNEntry",result:o()}}},extraReducers:function(t){t.addCase(L.pending,(function(t){t.currentState={type:"MSISDNEntry",result:c(),data:t.currentState.data}})).addCase(L.fulfilled,(function(t,e){t.currentState=e.payload})).addCase(L.rejected,(function(t,e){t.currentState={type:"MSISDNEntry",result:u(e.payload),data:t.currentState.data}})).addCase(B.pending,(function(t){t.currentState={type:"PINEntry",result:c(),data:t.currentState.data}})).addCase(B.fulfilled,(function(t,e){t.currentState=e.payload})).addCase(B.rejected,(function(t,e){t.currentState={type:"PINEntry",result:u(e.payload),data:t.currentState.data}}))}}),O=q.reducer,V=q.actions.backToStartAction;export{V as backToStartAction,I as pinFlowMatch,O as pinFlowReducer,L 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 a,createSlice as i}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-CWs0icvt.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"./loadScriptSrc-Da4autZd.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":""},_=function(n){var a=n.window,i=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(i),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),m={action:"trigger-pin",country:i,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==a?void 0:a.location)||void 0===g?void 0:g.href),language_code:a.languageCode||"",antifraud_id:a.antifraud_id||"",partner_transaction_id:a.partner_transaction_id||"",partner_timestamp:a.partner_timestamp||"",partner_cid:a.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],a=t[1];return"".concat(n,"=").concat(a)})).join("&"),S=a.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n,"&").concat(p),[2,fetch(w).then((function(e){return e.json()}))]}))}))},E=function(n){var a=n.window,i=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(i),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:m(i),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(g=null==a?void 0:a.location)||void 0===g?void 0:g.href),language_code:a.languageCode||"",antifraud_id:a.antifraud_id||"",ClickID:a.antifraud_click_id||"",partner_cid:a.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],a=t[1];return"".concat(n,"=").concat(a)})).join("&"),S=a.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 a=r.window,i=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=a.location.href,r=a.pac_analytics.visitor.ip,p=new URLSearchParams(n(n({action:"mcp-shield",country:i,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=a.DEV_BASE_URL||"",f="".concat(v,"/tallyman/v1/?").concat(p.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function N(r,a,i,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},a||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,D(r,e,i,e.operators,o)]:[2,P(r,e,i,o)]}))}))}var U="";function P(r,a,i,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,E,N,P;return t(this,(function(t){switch(t.label){case 0:if(!i)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?i:i.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=a.slug,f=a.country,m=a.device,y=a.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,_({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,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 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.userPlanType)?{userPlanType:null==I?void 0:I.userPlanType}:{})]}}))}))}function D(r,a,i,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,a,i,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,a,i,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(P){switch(P.label){case 0:if(n.hostCountry&&n.hostSlug&&(i.country=n.hostCountry,i.slug=n.hostSlug),s=i.slug,c=i.country,u=i.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,!a)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:a,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"}[h.message],(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",k.message=h.message,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 a=n.window,i=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(i),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],a=t[1];return"".concat(n,"=").concat(encodeURIComponent(a))})).join("&"),d=a.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===(_=P.sent()).success)return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:_.product_url||null,isAlreadySubscribed:N}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(_.message))).type="InvalidPIN",k.message=_.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");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=a("pinFlow/submitMSISDNAction",(function(r,a){var i=r.window,s=r.msisdn,c=r.extraParams,u=a.getState,p=a.dispatch,m=a.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,a,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===(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,a=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==a?void 0:a.country.toLowerCase())&&(null==a?void 0:a.slug.includes("shemaroo"))&&"+970"===x(null==a?void 0:a.country,s)&&(s=s.replace("970","972")),f.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,N(i,a,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}),i.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==i||i.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.userPlanType)?{userPlanType:w.userPlanType}:{})})];case 5:switch(b=t.sent(),console.warn(b),_=void 0,b.type){case"AlreadySubscribed":_="AlreadySubscribed";break;case"InvalidMSISDN":_="InvalidMSISDN";break;default:_="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:_,error:b.toString()}),y&&p(d({type:l.PIN,data:{isHeaderEnrichmentSuccess:y}})),[2,m({errorType:_,error:b.toString(),message:b.message,productUrl:b.productUrl})];case 6:return[2]}}))}))})),L=a("pinFlow/submitPinAction",(function(r,a){var i=r.window,o=r.msisdn,c=r.pin,u=r.extraParams,d=a.getState,l=a.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,a,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,a=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(i,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}),i.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({},a),{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;default:y="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,error:m.toString(),errorType:y}),setTimeout((function(){m.productUrl&&(i.location.href=m.productUrl)}),0),[2,l({errorType:y,message:m.message,productUrl:m.productUrl})];case 6:return[2]}}))}))})),B={PS:"970"},x=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=B[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},q=i({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(L.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(L.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(L.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,L as submitPinAction,h as usePinFlowState};
|
|
2
2
|
//# sourceMappingURL=pinFlow.js.map
|
package/dist/pinFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinFlow.js","sources":["../src/flows/pinFlow/hooks/usePinFlowState.ts","../src/flows/pinFlow/match.ts","../src/sharedApi/checkSubscription.ts","../src/flows/pinFlow/api.ts","../src/flows/pinFlow/main.ts","../src/flows/pinFlow/pinFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const usePinFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.pinFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IMsisdnSumbitNextData,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryFailure,\n PINEntrySuccess,\n PinFlowCurrentState\n} from '../../sharedFlowTypes/PinTypes';\n\nfunction pinFlowMatch<R>({\n msisdnEntry,\n pinEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n pinEntry: (rds: RDS.RemoteDataState<PINEntryFailure, PINEntrySuccess>, nextData: IMsisdnSumbitNextData) => R;\n}): (state: PinFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n case 'PINEntry':\n return pinEntry(state.result, state.data);\n default:\n throw new Error('Invalid State');\n }\n };\n}\n\nexport { pinFlowMatch };\n","import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IHash } from '../common-types/IHash';\nimport { bupperizeCountry } from '../utilities/bupperizeCountry';\n\nconst checkSubscription = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParams?: IHash; // Marked as optional if currently unused\n}): Promise<ICheckSubscriptionResult> => {\n const params = {\n action: 'check-subscription',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}`;\n return fetch(url).then((response) => response.json());\n};\n\nexport { checkSubscription };\n","import { IHash, IMcpShieldResult, IMSISDNSubmissionResult, IPINSubmissionResult } from '../../sharedFlowTypes/PinTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\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) => `${k}=${extraParams[k]}`)\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}`;\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 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 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 };\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 };\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 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};\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// 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 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 }\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 });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess\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 default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n error: ex.toString(),\n errorType\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 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","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","filter","__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","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorMessage","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","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) => `${k}=${extraParams[k]}`)\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}`;\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 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 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?.userPlanType ? { userPlanType: result?.userPlanType } : {}) // 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 };\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 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};\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// 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 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?.userPlanType\n ? { userPlanType: msisdnSubmissionResult.userPlanType }\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 });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess\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 default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n error: ex.toString(),\n errorType\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 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","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","filter","__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","userPlanType","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorMessage","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","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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"}
|
|
@@ -85,6 +85,7 @@ declare type IMSISDNSubmissionResult = {
|
|
|
85
85
|
operator: string;
|
|
86
86
|
redirect_to_url?: string;
|
|
87
87
|
javascript?: string;
|
|
88
|
+
userPlanType?: string;
|
|
88
89
|
} | {
|
|
89
90
|
success: false;
|
|
90
91
|
rockman_id: string;
|
|
@@ -111,6 +112,7 @@ declare type SingleMSISDNSubmissionResult = {
|
|
|
111
112
|
pin?: string;
|
|
112
113
|
uniqidResult?: string;
|
|
113
114
|
redirectUrl?: string;
|
|
115
|
+
userPlanType?: string;
|
|
114
116
|
};
|
|
115
117
|
declare type MultiOperatorMSISDNSubmissionResult = {
|
|
116
118
|
type: 'MultiOperatorMSISDNSubmissionResult';
|
|
@@ -2,8 +2,8 @@ import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
|
|
|
2
2
|
import { C as CreditCardFlowState } from './CreditCardTypes-B-IT-l6I.js';
|
|
3
3
|
import { e as MoRedirFlowState } from './MoRedirTypes-4tEJjT1g.js';
|
|
4
4
|
import { d as MoFlowState } from './MoTypes-D-UK92gs.js';
|
|
5
|
-
import { O as OneClickFlowState } from './OneClickTypes-
|
|
6
|
-
import { h as PinFlowState } from './PinTypes-
|
|
5
|
+
import { O as OneClickFlowState } from './OneClickTypes-CgHVbYo3.js';
|
|
6
|
+
import { h as PinFlowState } from './PinTypes-Qg7uoCYw.js';
|
|
7
7
|
import { U as UssdFlowState } from './UssdTypes-C7QlIW11.js';
|
|
8
8
|
|
|
9
9
|
declare type IWithMultiKeywordShortcode = IKeywordShortcode & {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { V as LOAD_OC2SMSState, W as Click2smsFlowState, j as IHash, X as IWithMultiKeywordShortcode, Y as Click2smsFlowCurrentState } from './StrategyTypes-
|
|
2
|
-
export { a5 as ICheckSubscriptionResult, a2 as IClick2smsConfig, a6 as IFetchResult, a1 as IKeywordShortcode, _ as ILOADOC2SMSFailure, $ as ILOADOC2SMSSuccess, a0 as ILoadOc2click2smsPayload, Z as MSISDNEntryErrorTypes, a4 as MultiOperatorSubmissionResult, a3 as SingleSubmissionResult } from './StrategyTypes-
|
|
1
|
+
import { V as LOAD_OC2SMSState, W as Click2smsFlowState, j as IHash, X as IWithMultiKeywordShortcode, Y as Click2smsFlowCurrentState } from './StrategyTypes-ByJRIdxj.js';
|
|
2
|
+
export { a5 as ICheckSubscriptionResult, a2 as IClick2smsConfig, a6 as IFetchResult, a1 as IKeywordShortcode, _ as ILOADOC2SMSFailure, $ as ILOADOC2SMSSuccess, a0 as ILoadOc2click2smsPayload, Z as MSISDNEntryErrorTypes, a4 as MultiOperatorSubmissionResult, a3 as SingleSubmissionResult } from './StrategyTypes-ByJRIdxj.js';
|
|
3
3
|
import * as redux from 'redux';
|
|
4
4
|
import * as _reduxjs_toolkit from '@reduxjs/toolkit';
|
|
5
5
|
import * as _reduxjs_toolkit_dist_createAsyncThunk from '@reduxjs/toolkit/dist/createAsyncThunk';
|
|
@@ -8,8 +8,8 @@ import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
|
|
|
8
8
|
import './CreditCardTypes-B-IT-l6I.js';
|
|
9
9
|
import './MoRedirTypes-4tEJjT1g.js';
|
|
10
10
|
import './MoTypes-D-UK92gs.js';
|
|
11
|
-
import './OneClickTypes-
|
|
12
|
-
import './PinTypes-
|
|
11
|
+
import './OneClickTypes-CgHVbYo3.js';
|
|
12
|
+
import './PinTypes-Qg7uoCYw.js';
|
|
13
13
|
import './UssdTypes-C7QlIW11.js';
|
|
14
14
|
|
|
15
15
|
interface LOAD_OC2SMSArgs {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as OneClickFlowCurrentState, I as IGETREDIRECTURLFailure, b as IGETREDIRECTURLSuccess, S as SubscribeFailure, c as SubscribeSuccess, G as GETREDIRECTUrlState, A as AJAXSUBSCRIBEState, O as OneClickFlowState } from './OneClickTypes-
|
|
2
|
-
export { g as IHEResult, f as IIDentifyUserResult, e as ILinkExtraParams, i as IMockOneClickFlowStates, h as ISubscribeResult, d as SubscribeUserErrorTypes } from './OneClickTypes-
|
|
1
|
+
import { a as OneClickFlowCurrentState, I as IGETREDIRECTURLFailure, b as IGETREDIRECTURLSuccess, S as SubscribeFailure, c as SubscribeSuccess, G as GETREDIRECTUrlState, A as AJAXSUBSCRIBEState, O as OneClickFlowState } from './OneClickTypes-CgHVbYo3.js';
|
|
2
|
+
export { g as IHEResult, f as IIDentifyUserResult, e as ILinkExtraParams, i as IMockOneClickFlowStates, h as ISubscribeResult, d as SubscribeUserErrorTypes } from './OneClickTypes-CgHVbYo3.js';
|
|
3
3
|
import { useSelector } from 'react-redux';
|
|
4
4
|
import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
|
|
5
5
|
import * as redux from 'redux';
|
package/dist/types/pinFlow.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as PinFlowCurrentState, M as MSISDNEntryFailure, a as MSISDNEntrySuccess, b as PINEntryFailure, c as PINEntrySuccess, I as IMsisdnSumbitNextData, d as PINEntryState, e as PINEntryErrorTypes, f as IHash } from './PinTypes-
|
|
2
|
-
export { E as ExtraData, n as IBackToStartPayload, o as IConfig, p as IMSISDNSubmissionResult, s as IMcpShieldResult, t as IMockPinFlowStates, k as IMsisdnSubmitErrorPayload, j as IMsisnSubmitActionPayload, q as IPINSubmissionResult, m as IPinErrorPayload, l as IPinSubmitPayload, i as MSISDNEntryErrorTypes, g as MSISDNEntryState, r as MultiOperatorMSISDNSubmissionResult, h as PinFlowState, S as SingleMSISDNSubmissionResult } from './PinTypes-
|
|
1
|
+
import { P as PinFlowCurrentState, M as MSISDNEntryFailure, a as MSISDNEntrySuccess, b as PINEntryFailure, c as PINEntrySuccess, I as IMsisdnSumbitNextData, d as PINEntryState, e as PINEntryErrorTypes, f as IHash } from './PinTypes-Qg7uoCYw.js';
|
|
2
|
+
export { E as ExtraData, n as IBackToStartPayload, o as IConfig, p as IMSISDNSubmissionResult, s as IMcpShieldResult, t as IMockPinFlowStates, k as IMsisdnSubmitErrorPayload, j as IMsisnSubmitActionPayload, q as IPINSubmissionResult, m as IPinErrorPayload, l as IPinSubmitPayload, i as MSISDNEntryErrorTypes, g as MSISDNEntryState, r as MultiOperatorMSISDNSubmissionResult, h as PinFlowState, S as SingleMSISDNSubmissionResult } from './PinTypes-Qg7uoCYw.js';
|
|
3
3
|
import { useSelector } from 'react-redux';
|
|
4
4
|
import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
|
|
5
5
|
import * as _reduxjs_toolkit from '@reduxjs/toolkit';
|
package/dist/types/strategy.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
|
|
2
2
|
export { a as RDS } from './RemoteDataState-D1aFrz8W.js';
|
|
3
|
-
import { S as StrategyCurrentState, I as IDENTIFYMSISDNEntryFailure, a as IDENTIFYMSISDNEntrySuccess, P as PossibleTypes, C as ConfigDetails, b as IConfig, c as StrategyState } from './StrategyTypes-
|
|
4
|
-
export { R as ExtraStrategyData, H as HEResult, t as IDENTIFYFailure, k as IDENTIFYMSISDNEntryErrorTypes, u as IDENTIFYSuccess, q as IDENTIFY_FLOW_HESuccess, p as IDENTIFY_OPERATOR_MSISDNEntrySuccess, n as IDETECTYOPERATOBYIPFailure, o as IDETECTYOPERATOBYIPSuccess, w as IDetectOperatorByIpPayload, f as IFlow, j as IHash, E as IIdentfyFlowByIPOperatorNextAction, B as IIdentfyFlowByMsisdnNextAction, D as IIdentfyFlowByOperatorNextAction, A as IIdentifyFlowByHePayload, z as IIdentifyFlowByIpOperatorPayload, d as IIdentifyResult, G as IIdenyifyFlowByMsisdnPayload, F as IIdenyifyFlowByMsisdnSumbitNextData, J as IIdenyifyStrategyPayload, N as IMockFlowParams, M as IMockFlows, T as IMockPinFlowStates, v as IOperatorSelectFlowIdentifyPayload, x as IOperatorSelectPayload, Q as IScriptHeaderEnrichmentSuccess, h as IStrategy, K as IStrategyCurrentState, L as IStrategyIDentifyUserResult, i as IStrategyNames, y as ISubmitMsisdnPayload, e as ISupportedFlows, l as IdentifyFlowOptionsResult, O as OPERATORSelectFailure, r as OPERATORSelectFlowIdentifyFailure, s as OPERATORSelectFlowIdentifySuccess, m as OPERATORSelectSuccess, U as RootState, g as StrategyConfig } from './StrategyTypes-
|
|
3
|
+
import { S as StrategyCurrentState, I as IDENTIFYMSISDNEntryFailure, a as IDENTIFYMSISDNEntrySuccess, P as PossibleTypes, C as ConfigDetails, b as IConfig, c as StrategyState } from './StrategyTypes-ByJRIdxj.js';
|
|
4
|
+
export { R as ExtraStrategyData, H as HEResult, t as IDENTIFYFailure, k as IDENTIFYMSISDNEntryErrorTypes, u as IDENTIFYSuccess, q as IDENTIFY_FLOW_HESuccess, p as IDENTIFY_OPERATOR_MSISDNEntrySuccess, n as IDETECTYOPERATOBYIPFailure, o as IDETECTYOPERATOBYIPSuccess, w as IDetectOperatorByIpPayload, f as IFlow, j as IHash, E as IIdentfyFlowByIPOperatorNextAction, B as IIdentfyFlowByMsisdnNextAction, D as IIdentfyFlowByOperatorNextAction, A as IIdentifyFlowByHePayload, z as IIdentifyFlowByIpOperatorPayload, d as IIdentifyResult, G as IIdenyifyFlowByMsisdnPayload, F as IIdenyifyFlowByMsisdnSumbitNextData, J as IIdenyifyStrategyPayload, N as IMockFlowParams, M as IMockFlows, T as IMockPinFlowStates, v as IOperatorSelectFlowIdentifyPayload, x as IOperatorSelectPayload, Q as IScriptHeaderEnrichmentSuccess, h as IStrategy, K as IStrategyCurrentState, L as IStrategyIDentifyUserResult, i as IStrategyNames, y as ISubmitMsisdnPayload, e as ISupportedFlows, l as IdentifyFlowOptionsResult, O as OPERATORSelectFailure, r as OPERATORSelectFlowIdentifyFailure, s as OPERATORSelectFlowIdentifySuccess, m as OPERATORSelectSuccess, U as RootState, g as StrategyConfig } from './StrategyTypes-ByJRIdxj.js';
|
|
5
5
|
import { useSelector } from 'react-redux';
|
|
6
6
|
import * as _reduxjs_toolkit from '@reduxjs/toolkit';
|
|
7
7
|
import * as _reduxjs_toolkit_dist_createAsyncThunk from '@reduxjs/toolkit/dist/createAsyncThunk';
|
|
@@ -10,8 +10,8 @@ import { C as ConfigDetails$1 } from './Strategy-CSis_Epd.js';
|
|
|
10
10
|
import './CreditCardTypes-B-IT-l6I.js';
|
|
11
11
|
import './MoRedirTypes-4tEJjT1g.js';
|
|
12
12
|
import './MoTypes-D-UK92gs.js';
|
|
13
|
-
import './OneClickTypes-
|
|
14
|
-
import './PinTypes-
|
|
13
|
+
import './OneClickTypes-CgHVbYo3.js';
|
|
14
|
+
import './PinTypes-Qg7uoCYw.js';
|
|
15
15
|
import './UssdTypes-C7QlIW11.js';
|
|
16
16
|
|
|
17
17
|
declare const useStrategyState: (useSelector: typeof useSelector) => StrategyCurrentState;
|