ouisys-engine 5.0.56 → 5.0.58
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/creditCardFlow.js +1 -1
- package/dist/creditCardFlow.js.map +1 -1
- package/dist/moFlow.js +1 -1
- package/dist/moFlow.js.map +1 -1
- package/dist/moRedirFlow.js +1 -1
- package/dist/moRedirFlow.js.map +1 -1
- 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/strategy.js +1 -1
- package/dist/strategySlice-RK7roJPB.js +2 -0
- package/dist/strategySlice-RK7roJPB.js.map +1 -0
- package/dist/types/getConfig.d.ts +1 -1
- package/package.json +1 -1
- package/dist/strategySlice-DpsjdF6a.js +0 -2
- package/dist/strategySlice-DpsjdF6a.js.map +0 -1
package/dist/creditCardFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as e,__generator as
|
|
1
|
+
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as i,L as o,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l}from"./loadScriptInnerHtml-BzQm-AFb.js";import{searchToObject as d}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var v=function(n){var a=n.window,i=n.slug,o=n.country,c=n.msisdn,s=n.device,l=n.offer,d=n.rockmanId,u=n.ip_range_name,v=n.search,m=n.extraParamsQs,f=n.email,y=n.password;return e(void 0,void 0,void 0,(function(){var e,n,p,g,w,_;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:i,country:o,device:s,offerId:l.toString(),rockman_id:d,page:encodeURIComponent(a.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(_=null===(w=null===(g=a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===w?void 0:w.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:d}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),f&&y?{email:f,password:y}:{msisdn:c}),m&&{extraParams:m})).toString(),n=a.DEV_BASE_URL||"",p="".concat(n,"/tallyman/v1/?").concat(e),[2,fetch(p).then((function(e){return e.json()}))]}))}))},m=function(n){var a=n.window,i=n.userDetails,o=n.extraConfig;return e(void 0,void 0,void 0,(function(){var e,n,c,s,l,u,v;return r(this,(function(r){return e="cc_number"in i,n=a.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(n,"/api/v1"),"/frontend/initiate-payment-generic",s=d(a),l=t(t(t({rockman_id:null===(v=a.pac_analytics.visitor)||void 0===v?void 0:v.rockmanId,landing_page_url:a.location.href,service_id:e?null==o?void 0:o.serviceId:"2"},(null==o?void 0:o.slug)?{slug:"".concat(null==o?void 0:o.slug).concat((null==s?void 0:s.d_country)||"")}:{}),e?{}:{user_agent:a.navigator.userAgent,ip:a.pac_analytics.visitor.ip}),i),u={method:"POST",headers:new Headers({"Content-Type":"application/json"}),body:JSON.stringify(l)},[2,fetch("".concat(c).concat("/frontend/initiate-payment-generic"),u).then((function(e){return e.json()}))]}))}))};function f(t,n,a){var i,o,c,s,l;return e(this,void 0,void 0,(function(){var e,d,u,f,y,p,g,w,_,h,S,E;return r(this,(function(r){switch(r.label){case 0:return e=n.slug,d=n.country,u=n.device,f=n.serviceId,y=t.location.search.substr(1)||"",p=t.pac_analytics.visitor,g=p.rockmanId,w={serviceId:f,slug:e},(null===(c=null===(o=null===(i=null==t?void 0:t.pac_analytics)||void 0===i?void 0:i.visitor)||void 0===o?void 0:o.page)||void 0===c?void 0:c.includes("agency"))?[4,v({window:t,slug:e,country:d,device:u,offer:null===(l=null===(s=null==t?void 0:t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===l?void 0:l.offer,rockmanId:g,email:null==a?void 0:a.email,password:null==a?void 0:a.password,search:y})]:[3,2];case 1:return h=r.sent(),[3,4];case 2:return[4,m({window:t,userDetails:a,extraConfig:w})];case 3:h=r.sent(),r.label=4;case 4:if(!1===(_=h).success)throw S="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":_.message,(E=new Error("".concat(S,":\n").concat(_.message))).type=S,console.error(E),E;return[2,{gateway_url:_.gateway_url||_.redirect_url,method:_.redirect_url?"redirection":_.method,html:_.html}]}}))}))}var y={currentState:{type:"USER_DETAILS_ENTRY",result:i({gateway_url:"https://www.google.com",method:"jslink"})}},p={currentState:{type:"USER_DETAILS_ENTRY",result:c({errorType:"AlreadySubscribed",error:"Already Subscribed"})}},g={currentState:{type:"USER_DETAILS_ENTRY",result:s()}},w=function(e){var r=d(e);if(!r["mock-flow"])return g;switch(r["current-state"]){case"user-details-entry-failure-state":return p;case"user-details-entry-success-state":return y;default:return console.error("Mock Flow not supported"),g}}(window),_=n("creditCardFlow/submitUserDetailsAction",(function(t,n){var a=t.window,o=t.userDetails,c=n.getState,s=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,n,d,v,m,y,p,g,w,_;return r(this,(function(r){switch(r.label){case 0:if(e=c(),!(null===(_=null===(w=null===(g=null==e?void 0:e.strategy)||void 0===g?void 0:g.currentState)||void 0===w?void 0:w.data)||void 0===_?void 0:_.config))return[2,s({errorType:"UnexpectedState"})];t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,3,,4]),u.advancedInFlow("tallyman.v1-credit-card","cc-form-submitted",{email:null==o?void 0:o.email}),[4,f(a,t,o)];case 2:return n=r.sent(),d=n.gateway_url,v=n.method,m=n.html,u.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==o?void 0:o.email,gateway_url:d}),"jslink"===v&&d&&(u.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:d}),function(e){var r=e.url,t=e.key,n=e.isRecaptcha,a=void 0!==n&&n,i=e.callBack,o=e.id,c=void 0===o?"":o,s=document.createElement("script");s.type="text/javascript",s.src=r,s.id="injected_script_".concat(c);var d=document.getElementsByTagName("head")[0];d.insertBefore(s,d.firstChild),a&&(s.onload=function(){var e='\n grecaptcha.ready(function() {\n grecaptcha.execute("'.concat(t,'", {action: \'submit\'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log("-------" + token);\n });\n });\n ');l(e,!0)}),s.onerror=function(){console.error("Error loading script",r),i&&i()}}({id:"ecardon-credit-card",url:d,callBack:function(){u.advancedInFlow("tallyman.v1-credit-card","load-script-success",{gateway_url:d})}})),"redirection"===v&&d&&(u.customEvent("Flow","advance-auto","redirect-success",{redirect_url:d}),a.location.href=d),"html"===v&&m&&u.advancedInFlow("tallyman.v1-credit-card","get-html-success"),[2,{type:"USER_DETAILS_ENTRY",result:i({gateway_url:d,method:v,html:m})}];case 3:switch(y=r.sent(),console.warn(y),p=void 0,y.type){case"AlreadySubscribed":p="AlreadySubscribed";break;case"InvalidUserDetails":p="InvalidUserDetails";break;default:p="UnknownError"}return u.recedeInFlow("tallyman.v1-credit-card","cc-form-submission-failure",{email:null==o?void 0:o.email,errorType:p||y.type}),[2,s({errorType:p,error:y.toString()})];case 4:return[2]}}))}))})),h=a({name:"creditCardFlow",initialState:w,reducers:{},extraReducers:function(e){e.addCase(_.pending,(function(e){e.currentState={type:"USER_DETAILS_ENTRY",result:o()}})).addCase(_.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(_.rejected,(function(e,r){e.currentState={type:"USER_DETAILS_ENTRY",result:c(r.payload)}}))}}),S=h.reducer;h.actions;var E=function(e){return e((function(e){return e.creditCardFlow.currentState}))};function I(e){var r=e.userDetailsEntry;return function(e){return e.type,r(e.result)}}export{I as creditCardFlowMatch,S as creditCardFlowReducer,_ as submitUserDetailsAction,E as useCreditCardFlowState};
|
|
2
2
|
//# sourceMappingURL=creditCardFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditCardFlow.js","sources":["../src/utilities/loadScriptSrc.ts","../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { loadScriptInnerHtml } from './loadScriptInnerHtml';\n\n/**\n * Loads a script from the specified URL and optionally executes a reCAPTCHA if the `isRecaptcha` flag is set.\n *\n * @param {Object} options - An object containing the following properties:\n * - {string} url: The URL of the script to load.\n * - {string} [key]: The reCAPTCHA key to use for execution. (Optional)\n * - {boolean} [isRecaptcha]: Flag indicating whether to execute a reCAPTCHA. Defaults to false.\n * - {function} [callBack]: A callback function to be called if there is an error loading the script. (Optional)\n * - {string} [id]: The ID to assign to the injected script. Defaults to an empty string.\n * @return {void}\n */\nconst loadScriptSrc = ({\n url,\n key,\n isRecaptcha = false,\n callBack,\n id = ''\n}: {\n url: string;\n key?: string;\n isRecaptcha?: boolean;\n callBack?: () => void;\n id?: string;\n}) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n script.id = `injected_script_${id}`;\n const headElem = document.getElementsByTagName('head')[0];\n headElem.insertBefore(script, headElem.firstChild);\n\n if (isRecaptcha) {\n script.onload = () => {\n const scriptInner = `\n grecaptcha.ready(function() {\n grecaptcha.execute(\"${key}\", {action: 'submit'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log(\"-------\" + token);\n });\n });\n `;\n loadScriptInnerHtml(scriptInner, true);\n };\n }\n\n script.onerror = () => {\n console.error('Error loading script', url);\n if (callBack) {\n callBack();\n }\n };\n};\n\nexport default loadScriptSrc;\n","import { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: string; slug: string };\n}): Promise<IUserDetailsSubmissionResult> => {\n const isMaxPay = 'cc_number' in userDetails;\n const host = window.DEV_BASE_URL_CREDIT_CARD || '';\n const apiBaseURL = `${host}/api/v1`;\n const apiPath = '/frontend/initiate-payment-generic';\n const search = searchToObject(window) as any;\n // Common userDetails properties\n const commonDetails = {\n rockman_id: window.pac_analytics.visitor?.rockmanId,\n landing_page_url: window.location.href,\n // Use conditional operation for service_id as it varies\n service_id: isMaxPay ? extraConfig?.serviceId : '2',\n ...(extraConfig?.slug ? { slug: `${extraConfig?.slug}${search?.d_country || ''}` } : {}),\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n ...userDetails\n };\n\n const requestOptions = {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(commonDetails)\n };\n\n return fetch(`${apiBaseURL}${apiPath}`, requestOptions).then((response) => response.json());\n};\n\nexport { redirect, creditCardPayment };\n","import { IError } from '../../common-types/IError';\nimport { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { creditCardPayment, redirect } from './api';\n\nexport async function submitUserDetails(\n window: Window,\n config: IConfig,\n userDetails: IUserDetails | IUserDetailsEcardon\n): Promise<{\n method: string;\n gateway_url?: string;\n html?: string;\n}> {\n const { slug, country, device, serviceId } = config;\n const search = window.location.search.substr(1) || '';\n const { visitor } = window.pac_analytics;\n\n const { rockmanId } = visitor;\n const extraConfig = { serviceId, slug };\n const result: IUserDetailsSubmissionResult = window?.pac_analytics?.visitor?.page?.includes('agency')\n ? await redirect({\n window,\n slug,\n country,\n device,\n offer: window?.pac_analytics?.visitor?.offer,\n rockmanId,\n email: userDetails?.email,\n password: userDetails?.password,\n search\n })\n : await creditCardPayment({ window, userDetails, extraConfig });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return {\n gateway_url: result.gateway_url || result.redirect_url,\n method: result.redirect_url ? 'redirection' : result.method,\n html: result.html\n };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowState,\n IUserDetails,\n IUserDetailsEcardon,\n SubmitUserDetailsErrorTypes,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess,\n USERDETAILSEntryState\n} from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { submitUserDetails } from './main';\n\nconst mockedUserDetailsEntrySuccess: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n gateway_url: 'https://www.google.com',\n method: 'jslink'\n })\n }\n};\n\nconst mockedUserDetailsEntryFailure: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n errorType: 'AlreadySubscribed',\n error: 'Already Subscribed'\n })\n }\n};\n\nconst defaultInitialState: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\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 'user-details-entry-failure-state':\n return mockedUserDetailsEntryFailure;\n case 'user-details-entry-success-state':\n return mockedUserDetailsEntrySuccess;\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 SubmitUserDetailsArgs {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n}\n/**\n * submitUserDetailsAction\n * @returns {type: ' 'pinFlow/submitUserDetailsAction', payload: {type: PossibleTypes, result: USERDETAILSEntryState}}\n \n * Calls redirect or max api and returns a url\n * \n */\nexport const submitUserDetailsAction = createAsyncThunk<\n USERDETAILSEntryState,\n SubmitUserDetailsArgs,\n {\n rejectValue: SubmitUserDetailsFailure;\n }\n>('creditCardFlow/submitUserDetailsAction', async ({ window, userDetails }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Credit Card API\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails?.email });\n const { gateway_url, method, html } = await submitUserDetails(window, config, userDetails);\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {\n email: userDetails?.email,\n gateway_url\n });\n // Start Credit Card API\n\n if (method === 'jslink' && gateway_url) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url });\n loadScriptSrc({\n id: 'ecardon-credit-card',\n url: gateway_url,\n callBack: () => {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url });\n }\n });\n }\n\n if (method === 'redirection' && gateway_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url });\n window.location.href = gateway_url;\n }\n\n if (method === 'html' && html) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'get-html-success');\n }\n console.log('SubmitUserDetails: ', { gateway_url, method, html });\n return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method, html })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: SubmitUserDetailsErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidUserDetails':\n errorType = 'InvalidUserDetails';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {\n email: userDetails?.email,\n errorType: errorType || ex.type\n });\n\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n});\n\nconst creditCardFlowSlice = createSlice({\n name: 'creditCardFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitUserDetailsAction.pending, (state) => {\n state.currentState = { type: 'USER_DETAILS_ENTRY', result: RDS.Loading() };\n })\n .addCase(submitUserDetailsAction.fulfilled, (state, action: PayloadAction<USERDETAILSEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitUserDetailsAction.rejected, (state, action: PayloadAction<SubmitUserDetailsFailure>) => {\n state.currentState = {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: creditCardFlowReducer, actions: creditCardFlowActions } = creditCardFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectCreditCardFlowState = (state: any) => state.creditCardFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useCreditCardFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.creditCardFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowCurrentState,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\n\nfunction creditCardFlowMatch<R>({\n userDetailsEntry\n}: {\n userDetailsEntry: (rds: RDS.RemoteDataState<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>) => R;\n}): (state: CreditCardFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'USER_DETAILS_ENTRY':\n return userDetailsEntry(state.result);\n default:\n // TODO - this should be an error or something\n return userDetailsEntry(state.result);\n }\n };\n}\n\nexport { creditCardFlowMatch };\n"],"names":["redirect","_a","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","searchToObject","commonDetails","landing_page_url","service_id","serviceId","d_country","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","success","type","message","error","Error","console","gateway_url","redirect_url","html","mockedUserDetailsEntrySuccess","currentState","RDS.Success","mockedUserDetailsEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","setInitialState","submitUserDetailsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","data","tracker","advancedInFlow","sent","gateway_url_1","key","isRecaptcha","callBack","id","script","document","createElement","src","headElem","getElementsByTagName","insertBefore","firstChild","onload","scriptInner","loadScriptInnerHtml","onerror","loadScriptSrc","customEvent","log","warn","ex_1","recedeInFlow","creditCardFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","creditCardFlowReducer","reducer","actions","useCreditCardFlowState","useSelector","creditCardFlow","creditCardFlowMatch","userDetailsEntry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"creditCardFlow.js","sources":["../src/utilities/loadScriptSrc.ts","../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { loadScriptInnerHtml } from './loadScriptInnerHtml';\n\n/**\n * Loads a script from the specified URL and optionally executes a reCAPTCHA if the `isRecaptcha` flag is set.\n *\n * @param {Object} options - An object containing the following properties:\n * - {string} url: The URL of the script to load.\n * - {string} [key]: The reCAPTCHA key to use for execution. (Optional)\n * - {boolean} [isRecaptcha]: Flag indicating whether to execute a reCAPTCHA. Defaults to false.\n * - {function} [callBack]: A callback function to be called if there is an error loading the script. (Optional)\n * - {string} [id]: The ID to assign to the injected script. Defaults to an empty string.\n * @return {void}\n */\nconst loadScriptSrc = ({\n url,\n key,\n isRecaptcha = false,\n callBack,\n id = ''\n}: {\n url: string;\n key?: string;\n isRecaptcha?: boolean;\n callBack?: () => void;\n id?: string;\n}) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n script.id = `injected_script_${id}`;\n const headElem = document.getElementsByTagName('head')[0];\n headElem.insertBefore(script, headElem.firstChild);\n\n if (isRecaptcha) {\n script.onload = () => {\n const scriptInner = `\n grecaptcha.ready(function() {\n grecaptcha.execute(\"${key}\", {action: 'submit'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log(\"-------\" + token);\n });\n });\n `;\n loadScriptInnerHtml(scriptInner, true);\n };\n }\n\n script.onerror = () => {\n console.error('Error loading script', url);\n if (callBack) {\n callBack();\n }\n };\n};\n\nexport default loadScriptSrc;\n","import { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: string; slug: string };\n}): Promise<IUserDetailsSubmissionResult> => {\n const isMaxPay = 'cc_number' in userDetails;\n const host = window.DEV_BASE_URL_CREDIT_CARD || '';\n const apiBaseURL = `${host}/api/v1`;\n const apiPath = '/frontend/initiate-payment-generic';\n const search = searchToObject(window) as any;\n // Common userDetails properties\n const commonDetails = {\n rockman_id: window.pac_analytics.visitor?.rockmanId,\n landing_page_url: window.location.href,\n // Use conditional operation for service_id as it varies\n service_id: isMaxPay ? extraConfig?.serviceId : '2',\n ...(extraConfig?.slug ? { slug: `${extraConfig?.slug}${search?.d_country || ''}` } : {}),\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n ...userDetails\n };\n\n const requestOptions = {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(commonDetails)\n };\n\n return fetch(`${apiBaseURL}${apiPath}`, requestOptions).then((response) => response.json());\n};\n\nexport { redirect, creditCardPayment };\n","import { IError } from '../../common-types/IError';\nimport { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { creditCardPayment, redirect } from './api';\n\nexport async function submitUserDetails(\n window: Window,\n config: IConfig,\n userDetails: IUserDetails | IUserDetailsEcardon\n): Promise<{\n method: string;\n gateway_url?: string;\n html?: string;\n}> {\n const { slug, country, device, serviceId } = config;\n const search = window.location.search.substr(1) || '';\n const { visitor } = window.pac_analytics;\n\n const { rockmanId } = visitor;\n const extraConfig = { serviceId, slug };\n const result: IUserDetailsSubmissionResult = window?.pac_analytics?.visitor?.page?.includes('agency')\n ? await redirect({\n window,\n slug,\n country,\n device,\n offer: window?.pac_analytics?.visitor?.offer,\n rockmanId,\n email: userDetails?.email,\n password: userDetails?.password,\n search\n })\n : await creditCardPayment({ window, userDetails, extraConfig });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return {\n gateway_url: result.gateway_url || result.redirect_url,\n method: result.redirect_url ? 'redirection' : result.method,\n html: result.html\n };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowState,\n IUserDetails,\n IUserDetailsEcardon,\n SubmitUserDetailsErrorTypes,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess,\n USERDETAILSEntryState\n} from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { submitUserDetails } from './main';\n\nconst mockedUserDetailsEntrySuccess: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n gateway_url: 'https://www.google.com',\n method: 'jslink'\n })\n }\n};\n\nconst mockedUserDetailsEntryFailure: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n errorType: 'AlreadySubscribed',\n error: 'Already Subscribed'\n })\n }\n};\n\nconst defaultInitialState: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\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 'user-details-entry-failure-state':\n return mockedUserDetailsEntryFailure;\n case 'user-details-entry-success-state':\n return mockedUserDetailsEntrySuccess;\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 SubmitUserDetailsArgs {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n}\n/**\n * submitUserDetailsAction\n * @returns {type: ' 'pinFlow/submitUserDetailsAction', payload: {type: PossibleTypes, result: USERDETAILSEntryState}}\n \n * Calls redirect or max api and returns a url\n * \n */\nexport const submitUserDetailsAction = createAsyncThunk<\n USERDETAILSEntryState,\n SubmitUserDetailsArgs,\n {\n rejectValue: SubmitUserDetailsFailure;\n }\n>('creditCardFlow/submitUserDetailsAction', async ({ window, userDetails }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Credit Card API\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails?.email });\n const { gateway_url, method, html } = await submitUserDetails(window, config, userDetails);\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {\n email: userDetails?.email,\n gateway_url\n });\n // Start Credit Card API\n\n if (method === 'jslink' && gateway_url) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url });\n loadScriptSrc({\n id: 'ecardon-credit-card',\n url: gateway_url,\n callBack: () => {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url });\n }\n });\n }\n\n if (method === 'redirection' && gateway_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url });\n window.location.href = gateway_url;\n }\n\n if (method === 'html' && html) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'get-html-success');\n }\n return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method, html })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: SubmitUserDetailsErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidUserDetails':\n errorType = 'InvalidUserDetails';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {\n email: userDetails?.email,\n errorType: errorType || ex.type\n });\n\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n});\n\nconst creditCardFlowSlice = createSlice({\n name: 'creditCardFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitUserDetailsAction.pending, (state) => {\n state.currentState = { type: 'USER_DETAILS_ENTRY', result: RDS.Loading() };\n })\n .addCase(submitUserDetailsAction.fulfilled, (state, action: PayloadAction<USERDETAILSEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitUserDetailsAction.rejected, (state, action: PayloadAction<SubmitUserDetailsFailure>) => {\n state.currentState = {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: creditCardFlowReducer, actions: creditCardFlowActions } = creditCardFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectCreditCardFlowState = (state: any) => state.creditCardFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useCreditCardFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.creditCardFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowCurrentState,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\n\nfunction creditCardFlowMatch<R>({\n userDetailsEntry\n}: {\n userDetailsEntry: (rds: RDS.RemoteDataState<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>) => R;\n}): (state: CreditCardFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'USER_DETAILS_ENTRY':\n return userDetailsEntry(state.result);\n default:\n // TODO - this should be an error or something\n return userDetailsEntry(state.result);\n }\n };\n}\n\nexport { creditCardFlowMatch };\n"],"names":["redirect","_a","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","searchToObject","commonDetails","landing_page_url","service_id","serviceId","d_country","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","success","type","message","error","Error","console","gateway_url","redirect_url","html","mockedUserDetailsEntrySuccess","currentState","RDS.Success","mockedUserDetailsEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","setInitialState","submitUserDetailsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","data","tracker","advancedInFlow","sent","gateway_url_1","key","isRecaptcha","callBack","id","script","document","createElement","src","headElem","getElementsByTagName","insertBefore","firstChild","onload","scriptInner","loadScriptInnerHtml","onerror","loadScriptSrc","customEvent","warn","ex_1","recedeInFlow","creditCardFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","creditCardFlowReducer","reducer","actions","useCreditCardFlowState","useSelector","creditCardFlow","creditCardFlowMatch","userDetailsEntry"],"mappings":"gYAaA,ICTMA,EAAW,SAAOC,GACtB,IAAAC,EAAMD,EAAAC,OACNC,EAAIF,EAAAE,KACJC,EAAOH,EAAAG,QACPC,EAAMJ,EAAAI,OACNC,EAAML,EAAAK,OACNC,EAAKN,EAAAM,MACLC,EAASP,EAAAO,UACTC,EAAaR,EAAAQ,cACbC,EAAMT,EAAAS,OACNC,kBACAC,EAAKX,EAAAW,MACLC,EAAQZ,EAAAY,8FAmCR,OApBMC,EAAS,IAAIC,gBAAeC,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CAChCC,OAAQ,WACRd,OACAC,QAAOA,EACPE,OAAMA,EACNY,QAASX,EAAMY,WACfC,WAAYZ,EACZa,KAAMC,mBAAmBpB,EAAOqB,SAASC,MACzCC,aAAchB,EAAgB,GAAK,QAC/BC,GAAU,CAAEA,OAAMA,KACmB,QAArCgB,EAA6B,QAA7BC,EAAoB,QAApBC,EAAA1B,EAAO2B,qBAAa,IAAAD,OAAA,EAAAA,EAAEE,eAAO,IAAAH,OAAA,EAAAA,EAAEN,YAAM,IAAAK,OAAA,EAAAA,EAAAK,SAAS,YAAa,CAAEC,QAASxB,IACtEN,EAAO+B,mBAAqB,CAAEA,kBAAmB/B,EAAO+B,oBACxD/B,EAAOgC,cAAgB,CAAEC,cAAejC,EAAOgC,eAC/CtB,GAASC,EAAW,CAAED,MAAKA,EAAEC,SAAQA,GAAK,CAAER,OAAMA,IAClDM,GAAiB,CAAEyB,YAAazB,KACnCQ,WAEGkB,EAAOnC,EAAOoC,cAAgB,GAC9BC,EAAM,GAAGC,OAAAH,EAAqB,kBAAAG,OAAA1B,GAEpC,CAAA,EAAO2B,MAAMF,GAAKG,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YAG1BC,EAAoB,SAAO5C,GAC/B,IAAAC,WACA4C,EAAW7C,EAAA6C,YACXC,EAAW9C,EAAA8C,mGA4BX,OAtBMC,EAAW,cAAeF,EAC1BT,EAAOnC,EAAO+C,0BAA4B,GAC1CC,EAAa,GAAAV,OAAGH,EAAI,WACV,qCACV3B,EAASyC,EAAejD,GAExBkD,SACJhC,WAA0C,UAA9BlB,EAAO2B,cAAcC,eAAS,IAAAF,OAAA,EAAAA,EAAApB,UAC1C6C,iBAAkBnD,EAAOqB,SAASC,KAElC8B,WAAYN,EAAWD,aAAW,EAAXA,EAAaQ,UAAY,MAC5CR,aAAA,EAAAA,EAAa5C,MAAO,CAAEA,KAAM,GAAAqC,OAAGO,eAAAA,EAAa5C,MAAOqC,QAAA9B,eAAAA,EAAQ8C,YAAa,KAAS,CAAA,GACjFR,EAAW,CAAA,EAAK,CAAES,WAAYvD,EAAOwD,UAAUC,UAAWC,GAAI1D,EAAO2B,cAAcC,QAAQ8B,KAC5Fd,GAGCe,EAAiB,CACrBC,OAAQ,OACRC,QAAS,IAAIC,QAAQ,CAAE,eAAgB,qBACvCC,KAAMC,KAAKC,UAAUf,IAGhB,CAAA,EAAAX,MAAM,GAAAD,OAAGU,GAAUV,OAnBV,sCAmBwBqB,GAAgBnB,MAAK,SAAC0B,GAAa,OAAAA,EAASxB,MAAM,qBChFtEyB,EACpBnE,EACAoE,EACAxB,uIAY6C,OANrC3C,EAAqCmE,EAAMnE,KAArCC,EAA+BkE,EAAxBlE,QAAEE,EAAsBgE,EAAhBhE,OAAEiD,EAAce,YACvC5D,EAASR,EAAOqB,SAASb,OAAO6D,OAAO,IAAM,GAC3CzC,EAAY5B,EAAO2B,sBAEnBrB,EAAcsB,EAAOtB,UACvBuC,EAAc,CAAEQ,UAASA,EAAEpD,KAAIA,YACQwB,EAAgC,UAAX,QAArB1B,EAAAC,eAAAA,EAAQ2B,qBAAa,IAAA5B,OAAA,EAAAA,EAAE6B,eAAS,IAAAF,OAAA,EAAAA,EAAAP,2BAAMU,SAAS,WACxF,CAAA,EAAM/B,EAAS,CACbE,OAAMA,EACNC,KAAIA,EACJC,QAAOA,EACPE,OAAMA,EACNC,cAAOiE,EAAuB,QAAvB9C,EAAAxB,aAAA,EAAAA,EAAQ2B,qBAAe,IAAAH,OAAA,EAAAA,EAAAI,8BAASvB,MACvCC,UAASA,EACTI,MAAOkC,aAAA,EAAAA,EAAalC,MACpBC,SAAUiC,aAAA,EAAAA,EAAajC,SACvBH,OAAMA,KAVyF,CAAA,EAAA,iBACjG+D,EAAAC,eAWA,KAAA,EAAA,MAAA,CAAA,EAAM7B,EAAkB,CAAE3C,OAAMA,EAAE4C,YAAWA,EAAEC,YAAWA,YAA1D0B,EAAAC,0BAEJ,IAAuB,KAdjBC,EAY2DF,GAEtDG,QAKT,MAJMC,EAA0B,uBAAnBF,EAAOG,QAAmC,oBAAsBH,EAAOG,SAC9EC,EAAQ,IAAIC,MAAM,GAAGxC,OAAAqC,EAAU,OAAArC,OAAAmC,EAAOG,WACtCD,KAAOA,EACbI,QAAQF,MAAMA,GACRA,EAEN,MAAO,CAAA,EAAA,CACLG,YAAaP,EAAOO,aAAeP,EAAOQ,aAC1CrB,OAAQa,EAAOQ,aAAe,cAAgBR,EAAOb,OACrDsB,KAAMT,EAAOS,aAGlB,CC9BD,IAAMC,EAAqD,CACzDC,aAAc,CACZT,KAAM,qBACNF,OAAQY,EAAgE,CACtEL,YAAa,yBACbpB,OAAQ,aAKR0B,EAAqD,CACzDF,aAAc,CACZT,KAAM,qBACNF,OAAQc,EAAgE,CACtEC,UAAW,oBACXX,MAAO,yBAKPY,EAA2C,CAC/CL,aAAc,CACZT,KAAM,qBACNF,OAAQiB,MAqBNC,EAjBkB,SAAC3F,GACvB,IAAMQ,EAASyC,EAAejD,GAC9B,IAAIQ,EAAO,aAWT,OAAOiF,EAVP,OAAQjF,EAAO,kBACb,IAAK,mCACH,OAAO8E,EACT,IAAK,mCACH,OAAOH,EACT,QAEE,OADAJ,QAAQF,MAAM,2BACPY,EAKf,CAEqBG,CAAgB5F,QAaxB6F,EAA0BC,EAMrC,0CAA0C,SAAO/F,EAAyB2B,OAAvB1B,EAAMD,EAAAC,OAAE4C,EAAW7C,EAAA6C,YAAMmD,EAAQrE,EAAAqE,SAAEC,EAAetE,EAAAsE,sIAErG,GADMC,EAAmBF,MACiB,QAArCxB,EAA6B,kBAA7B/C,EAAAyE,aAAK,EAALA,EAAOC,+BAAUd,oBAAY,IAAAd,OAAA,EAAAA,EAAE6B,YAAM,IAAA5B,OAAA,EAAAA,EAAAH,QACxC,MAAA,CAAA,EAAO4B,EAAgB,CACrBR,UAAW,qBAGPpB,EAAW6B,EAAMC,SAASd,aAAae,KAAI/B,wBAKX,6BADtCgC,EAAQC,eAAe,0BAA2B,oBAAqB,CAAE3F,MAAOkC,aAAA,EAAAA,EAAalC,QACjD,CAAA,EAAAyD,EAAkBnE,EAAQoE,EAAQxB,WA0B9E,OA1BMnB,EAAgC+C,EAAA8B,OAA9BC,EAAW9E,EAAAuD,YAAEpB,EAAMnC,EAAAmC,OAAEsB,EAAIzD,EAAAyD,KACjCkB,EAAQC,eAAe,0BAA2B,6BAA8B,CAC9E3F,MAAOkC,aAAA,EAAAA,EAAalC,MACpBsE,YAAWuB,IAIE,WAAX3C,GAAuB2C,IACzBH,EAAQC,eAAe,0BAA2B,oBAAqB,CAAErB,YAAWuB,IHvFpE,SAACxG,OACrBsC,EAAGtC,EAAAsC,IACHmE,EAAGzG,EAAAyG,IACH9E,EAAmB3B,EAAA0G,YAAnBA,OAAc,IAAA/E,KACdgF,aACAjF,EAAA1B,EAAA4G,GAAAA,OAAE,IAAAlF,EAAG,GAAEA,EAQDmF,EAASC,SAASC,cAAc,UACtCF,EAAOjC,KAAO,kBACdiC,EAAOG,IAAM1E,EACbuE,EAAOD,GAAK,mBAAmBrE,OAAAqE,GAC/B,IAAMK,EAAWH,SAASI,qBAAqB,QAAQ,GACvDD,EAASE,aAAaN,EAAQI,EAASG,YAEnCV,IACFG,EAAOQ,OAAS,WACd,IAAMC,EAAc,4EAEQ/E,OAAAkE,iOAO5Bc,EAAoBD,GAAa,EACnC,GAGFT,EAAOW,QAAU,WACfxC,QAAQF,MAAM,uBAAwBxC,GAClCqE,GACFA,GAEJ,CACF,CG+CMc,CAAc,CACZb,GAAI,sBACJtE,IAAKkE,EACLG,SAAU,WACRN,EAAQC,eAAe,0BAA2B,sBAAuB,CAAErB,YAAWuB,GACvF,KAIU,gBAAX3C,GAA4B2C,IAC9BH,EAAQqB,YAAY,OAAQ,eAAgB,mBAAoB,CAAExC,aAAcsB,IAChFvG,EAAOqB,SAASC,KAAOiF,GAGV,SAAX3C,GAAqBsB,GACvBkB,EAAQC,eAAe,0BAA2B,oBAE7C,CAAA,EAAA,CACL1B,KAAM,qBACNF,OAAQY,EAAgE,CAAEL,YAAWuB,EAAE3C,OAAMA,EAAEsB,KAAIA,aAKrG,kBAFAH,QAAQ2C,KAAKC,GACTnC,SACImC,EAAGhD,MACT,IAAK,oBACHa,EAAY,oBACZ,MACF,IAAK,qBACHA,EAAY,qBACZ,MACF,QACEA,EAAY,eAQhB,OALAY,EAAQwB,aAAa,0BAA2B,6BAA8B,CAC5ElH,MAAOkC,aAAA,EAAAA,EAAalC,MACpB8E,UAAWA,GAAamC,EAAGhD,OAG7B,CAAA,EAAOqB,EAAgB,CACrBR,UAASA,EACTX,MAAO8C,EAAG1G,qCAGf,IAEK4G,EAAsBC,EAAY,CACtCC,KAAM,iBACNpC,aAAYA,EACZqC,SAAU,CAAE,EACZC,cAAe,SAACC,GACdA,EACGC,QAAQtC,EAAwBuC,SAAS,SAACnC,GACzCA,EAAMb,aAAe,CAAET,KAAM,qBAAsBF,OAAQ4D,IAC7D,IACCF,QAAQtC,EAAwByC,WAAW,SAACrC,EAAOlF,GAClDkF,EAAMb,aAAerE,EAAOwH,OAC9B,IACCJ,QAAQtC,EAAwB2C,UAAU,SAACvC,EAAOlF,GACjDkF,EAAMb,aAAe,CACnBT,KAAM,qBACNF,OAAQc,EAAYxE,EAAOwH,SAE/B,GACH,IAIqBE,EAA0DZ,EAArCa,QAAqCb,EAAmBc,QCvK9F,IAAMC,EAAyB,SAACC,GAErC,OADqBA,GAAY,SAAC5C,GAAqB,OAAAA,EAAM6C,eAAe1D,YAArB,GAEzD,ECCA,SAAS2D,EAAuBhJ,GAC9B,IAAAiJ,EAAgBjJ,EAAAiJ,iBAIhB,OAAO,SAAC/C,GAMF,OALIA,EAAMtB,KAKHqE,EAAiB/C,EAAMxB,OAEpC,CACF"}
|
package/dist/moFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as t,__generator as
|
|
1
|
+
import{__awaiter as t,__generator as r,__read as e,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as a}from"@reduxjs/toolkit";import{S as s,N as i,L as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var f=function(t){return t((function(t){return t.moFlow.currentState}))};function v(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var p=function(n){var o=n.window,a=n.slug,s=n.country,i=n.msisdn,c=n.device,u=n.offer,d=n.rockmanId,l=n.extraParamsQs;return t(void 0,void 0,void 0,(function(){var t,n,m,f,v,p,y;return r(this,(function(r){switch(r.label){case 0:return o.api_ajax_url?[4,fetch(o.api_ajax_url).then((function(t){return t.json()}))]:[3,2];case 1:return n=r.sent(),[3,3];case 2:n=null,r.label=3;case 3:return t=n,m={action:"trigger-message",slug:a,country:s,msisdn:i,device:c,offerId:u,rockman_id:d,page:encodeURIComponent(null===(y=null==o?void 0:o.location)||void 0===y?void 0:y.href),sam_g_token:o.reCaptchaToken||"",language_code:o.languageCode||"",partner_form_action:(null==t?void 0:t.form_action)?encodeURIComponent(null==t?void 0:t.form_action):"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||""},f=Object.entries(m).filter((function(t){var r=e(t,2);return r[0],r[1]})).map((function(t){var r=e(t,2),n=r[0],o=r[1];return"".concat(n,"=").concat(o)})).join("&"),v=o.DEV_BASE_URL||"",p="".concat(v,"/tallyman/v1/?").concat(f,"&").concat(l),[2,fetch(p).then((function(t){return t.json()}))]}}))}))};function y(e,o,a,s){var i,c;return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=n(n({},o||{}),{offer:null===(c=null===(i=e.pac_analytics)||void 0===i?void 0:i.visitor)||void 0===c?void 0:c.offer}),[2,S(e,t,a,s)]}))}))}function S(e,o,a,s){var i;return t(this,void 0,void 0,(function(){var t,c,u,d,l,m,f,v,y,S,w;return r(this,(function(r){switch(r.label){case 0:return t=o.slug,c=o.country,u=o.device,d=o.offer,l=e.location.search.substr(1)||"",m=s?"&".concat(Object.keys(s).map((function(t){return"".concat(t,"=").concat(s[t])})).join("&")):"",f=(null===(i=a.match(/\d+/gi))||void 0===i?void 0:i.join(""))||"",v=e.pac_analytics.visitor.rockmanId,[4,p({window:e,slug:t,country:c,msisdn:f,device:u,offer:d,rockmanId:v,search:l,extraParamsQs:m})];case 1:if(!1===(y=r.sent()).success)throw S="ALREADY SUBSCRIBED"===y.message?"AlreadySubscribed":"InvalidMSISDN",(w=new Error("".concat(S,":\n").concat(y.message))).type=S,w.productUrl=y.product_url?y.product_url:"",console.error(w),w;return[2,n(n({},y),{keyword:y.displayKeyword})]}}))}))}var w={currentState:{type:"MSISDNEntry",result:s({keyword:"TEST OK",shortcode:"777"})}},_={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},h={currentState:{type:"MSISDNEntry",result:i()}},b=function(t){var r=d(t);if(!r["mock-flow"])return h;switch(r["current-state"]){case"msisdn-entry-failure-state":return _;case"msisdn-entry-success-state":return w;default:return console.error("Mock Flow not supported"),h}}(window),I=o("moFlow/submitMSISDNAction",(function(e,o){var a=e.window,i=e.msisdn,c=e.extraParams,u=o.getState,d=o.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,o,f,v,p,S,w;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(w=null===(S=null===(p=null==t?void 0:t.strategy)||void 0===p?void 0:p.currentState)||void 0===S?void 0:S.data)||void 0===w?void 0:w.config))return[2,d({errorType:"UnexpectedState"})];e=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:i}),[4,y(a,e,i,c)];case 2:return o=r.sent(),m.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:i}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,l(i).then((function(t){t&&t.data&&t.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){m.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:s(n({},o))}];case 5:switch(f=r.sent(),console.warn(f),v=void 0,f.type){case"AlreadySubscribed":v="AlreadySubscribed";break;case"InvalidMSISDN":v="InvalidMSISDN";break;default:v="UnknownError"}return m.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:i,errorType:v||"UnknownError"}),[2,d({errorType:v,productUrl:f.productUrl})];case 6:return[2]}}))}))})),g=a({name:"moFlow",initialState:b,reducers:{backToStartAction:function(t){m.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),t.currentState={type:"MSISDNEntry",result:i()}}},extraReducers:function(t){t.addCase(I.pending,(function(t){t.currentState={type:"MSISDNEntry",result:c()}})).addCase(I.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(I.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:u(r.payload)}}))}}),j=g.reducer,k=g.actions.backToStartAction;export{k as backToStartAction,v as moFlowMatch,j as moFlowReducer,I as submitMSISDNAction,f as useMoFlowState};
|
|
2
2
|
//# sourceMappingURL=moFlow.js.map
|
package/dist/moFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n antifraud_id: window.antifraud_id || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}&${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string; productUrl: string };\n error.type = type;\n error.productUrl = result.product_url ? result.product_url : '';\n\n console.error(error);\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = checkResult.product_url;\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType: errorType || 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\nexport const { backToStartAction } = moFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","antifraud_id","language_code","languageCode","partner_form_action","form_action","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","search","substr","keys","k","match","sent","success","message","error","Error","productUrl","product_url","console","__assign","keyword","displayKeyword","mockedMSISDNEntrySuccess","RDS.Success","shortcode","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_e","strategy","data","tracker","advancedInFlow","keywordAndShortcode","_f","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","moFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}&${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string; productUrl: string };\n error.type = type;\n error.productUrl = result.product_url ? result.product_url : '';\n\n console.error(error);\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = checkResult.product_url;\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType: errorType || 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\nexport const { backToStartAction } = moFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","language_code","languageCode","partner_form_action","form_action","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","search","substr","keys","k","match","sent","success","message","error","Error","productUrl","product_url","console","__assign","keyword","displayKeyword","mockedMSISDNEntrySuccess","RDS.Success","shortcode","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_e","strategy","data","tracker","advancedInFlow","keywordAndShortcode","_f","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","moFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"yYAGO,IAAMA,EAAiB,SAACC,GAE7B,OADqBA,GAAY,SAACC,GAAqB,OAAAA,EAAMC,OAAOC,YAAb,GAEzD,ECHA,SAASC,EAAeC,GACtB,IAAAC,EAAWD,EAAAC,YAIX,OAAO,SAACL,GAMF,OALIA,EAAMM,KAKHD,EAAYL,EAAMO,OAE/B,CACF,CCDA,IAAMC,EAAiB,SAAOJ,OAC5BK,EAAML,EAAAK,OACNC,EAAIN,EAAAM,KACJC,EAAOP,EAAAO,QACPC,EAAMR,EAAAQ,OACNC,EAAMT,EAAAS,OACNC,EAAKV,EAAAU,MACLC,EAASX,EAAAW,UACTC,EAAaZ,EAAAY,mIAeTP,EAAOQ,aAAqB,CAAA,EAAAC,MAAMT,EAAOQ,cAAcE,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,KAAhD,CAAA,EAAA,iBAAGC,EAAAC,sBAAyDD,EAAA,sBA8BnF,OAhCME,EAEiFF,EAEjFG,EAAS,CACbC,OAAQ,kBACRhB,KAAIA,EACJC,QAAOA,EACPC,OAAMA,EACNC,OAAMA,EACNc,QAASb,EACTc,WAAYb,EACZc,KAAMC,mBAAmC,QAAhBC,EAAAtB,aAAM,EAANA,EAAQuB,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,MAC3CC,YAAazB,EAAO0B,gBAAkB,GACtCC,cAAe3B,EAAO4B,cAAgB,GACtCC,qBAAqBd,eAAAA,EAAqBe,aAAcT,mBAAmBN,aAAA,EAAAA,EAAqBe,aAAe,GAE/GC,aAAc/B,EAAO+B,cAAgB,GAGrCC,qBAAsBhC,EAAOgC,sBAAwB,GACrDC,qBAAsBjC,EAAOiC,sBAAwB,IAGjDC,EAAcC,OAAOC,QAAQpB,GAChCqB,QAAO,SAAC1C,GAAA,IAAAkB,EAAAyB,OAAe,OAAbzB,EAAA,GAAOA,EAAA,EAAM,IACvB0B,KAAI,SAAC5C,GAAA,IAAAkB,EAAAyB,OAACE,EAAG3B,EAAA,GAAE4B,EAAK5B,EAAA,GAAM,MAAA,GAAG6B,OAAAF,EAAO,KAAAE,OAAAD,EAAV,IACtBE,KAAK,KAEFC,EAAQ5C,EAAkB6C,cAAgB,GAC1CC,EAAM,UAAGF,EAAI,kBAAAF,OAAiBR,EAAe,KAAAQ,OAAAnC,GAEnD,CAAA,EAAOE,MAAMqC,GAAKpC,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,aC5DlB,SAAgBmC,EAC5B/C,EACAgD,EACAC,EACAC,oFAGA,OADMC,SAAoBH,GAAe,CAAE,IAAG3C,MAAsC,UAAX,QAApBV,EAAAK,EAAOoD,qBAAa,IAAAzD,OAAA,EAAAA,EAAE0D,eAAS,IAAAxC,OAAA,EAAAA,EAAAR,QAC7E,CAAA,EAAAiD,EAAuBtD,EAAQmD,EAAQF,EAAqBC,SACpE,CAiBK,SAAgBI,EACpBtD,EACAmD,EACAF,EACAC,6HAYwC,OAVhCjD,EAAiCkD,EAAMlD,KAAjCC,EAA2BiD,EAApBjD,QAAEE,EAAkB+C,EAAZ/C,OAAEC,EAAU8C,QACnCI,EAASvD,EAAOuB,SAASgC,OAAOC,OAAO,IAAM,GAC7CjD,EAAiB2C,EAEnB,IAAIR,OAAAP,OAAOsB,KAAKP,GACbX,KAAI,SAACmB,GAAM,MAAA,GAAGhB,OAAAgB,EAAK,KAAAhB,OAAAQ,EAAYQ,GAAI,IACnCf,KAAK,MAHR,GAIExC,GAA2C,QAAlCR,EAAAsD,EAAoBU,MAAM,gBAAQ,IAAAhE,OAAA,EAAAA,EAAEgD,KAAK,MAAO,GACvDrC,EAAcN,EAAOoD,cAAcC,kBAEH,CAAA,EAAMtD,EAAe,CAC3DC,OAAMA,EACNC,KAAIA,EACJC,QAAOA,EACPC,OAAMA,EACNC,OAAMA,EACNC,MAAKA,EACLC,UAASA,EACTiD,OAAMA,EACNhD,cAAaA,YAGf,IAAuB,KAZjBT,EAAkCe,EAUtC+C,QAESC,QAOT,MANMhE,EAA0B,uBAAnBC,EAAOgE,QAAmC,oBAAsB,iBACvEC,EAAQ,IAAIC,MAAM,GAAGtB,OAAA7C,EAAU,OAAA6C,OAAA5C,EAAOgE,WACtCjE,KAAOA,EACbkE,EAAME,WAAanE,EAAOoE,YAAcpE,EAAOoE,YAAc,GAE7DC,QAAQJ,MAAMA,GACRA,EAEN,MAAY,CAAA,EAAAK,EAAAA,EAAA,CAAA,EAAAtE,IAAQuE,QAASvE,EAAOwE,wBAEvC,CC1DM,IAAMC,EAAwC,CACnD9E,aAAc,CACZI,KAAM,cACNC,OAAQ0E,EAAoD,CAC1DH,QAAS,UACTI,UAAW,UAKJC,EAAwC,CACnDjF,aAAc,CACZI,KAAM,cACNC,OAAQ6E,EAAoD,CAC1DC,UAAW,gBACXb,MAAO,4BAWPc,EAAmC,CACvCpF,aAAc,CACZI,KAAM,cACNC,OAAQgF,MAqBNC,EAjBkB,SAAC/E,GACvB,IAAMuD,EAASyB,EAAehF,GAC9B,IAAIuD,EAAO,aAWT,OAAOsB,EAVP,OAAQtB,EAAO,kBACb,IAAK,6BACH,OAAOmB,EACT,IAAK,6BACH,OAAOH,EACT,QAEE,OADAJ,QAAQJ,MAAM,2BACPc,EAKf,CAEqBI,CAAgBjF,QAcxBkF,EAAqBC,EAMhC,6BAA6B,SAAOxF,EAAiCkB,GAA/B,IAAAb,WAAQG,EAAMR,EAAAQ,OAAE+C,EAAWvD,EAAAuD,YAAMkC,EAAQvE,EAAAuE,SAAEC,EAAexE,EAAAwE,gIAEhG,GADM9F,EAAmB6F,MACiB,QAArCE,EAA6B,kBAA7BhE,EAAA/B,aAAK,EAALA,EAAOgG,+BAAU9F,oBAAY,IAAAqB,OAAA,EAAAA,EAAE0E,YAAM,IAAAF,OAAA,EAAAA,EAAAnC,QACxC,MAAA,CAAA,EAAOkC,EAAgB,CACrBT,UAAW,qBAGPzB,EAAW5D,EAAMgG,SAAS9F,aAAa+F,KAAIrC,wBAKrB,6BAD5BsC,EAAQC,eAAe,iBAAkB,mBAAoB,CAAEvF,OAAMA,IACnC,CAAA,EAAA4C,EAAa/C,EAAQmD,EAAQhD,EAAQ+C,WAMnE,OANEyC,EAAsBC,EAAuDhC,OACnF6B,EAAQC,eAAe,iBAAkB,4BAA6B,CAAEvF,OAAMA,IAK1E+C,GAAeA,EAAY2C,aAA2C,SAA5B3C,EAAY2C,YAClD,CAAA,EAAAA,EAAY1F,GACfO,MAAK,SAAC8E,GACDA,GAAQA,EAAKA,MAAQA,EAAKA,KAAK3B,QACjC4B,EAAQK,YAAY,OAAQ,eAAgB,yBAE5CL,EAAQK,YAAY,OAAQ,eAAgB,uBAEhD,IACCC,OAAM,SAAChC,GACN0B,EAAQK,YAAY,OAAQ,eAAgB,sBAAuB/B,EACpE,KAX2E,CAAA,EAAA,UAC9E6B,EAAAhC,wBAcF,MAAO,CAAA,EAAA,CACL/D,KAAM,cACNC,OAAQ0E,EAAWJ,EAAA,CAAA,EAA8CuB,aAKnE,kBAFAxB,QAAQ6B,KAAKC,GACTrB,SACIqB,EAAGpG,MACT,IAAK,oBACH+E,EAAY,oBACZ,MACF,IAAK,gBACHA,EAAY,gBACZ,MACF,QACEA,EAAY,eAQhB,OALAa,EAAQS,aAAa,iBAAkB,4BAA6B,CAClE/F,OAAMA,EACNyE,UAAWA,GAAa,iBAG1B,CAAA,EAAOS,EAAgB,CACrBT,UAASA,EACTX,WAAYgC,EAAGhC,qCAGpB,IAEKkC,EAAcC,EAAY,CAC9BC,KAAM,SACNtB,aAAYA,EACZuB,SAAU,CACRC,2BAAkBhH,GAChBkG,EAAQS,aAAa,iBAAkB,WAAY,oCAGnD3G,EAAME,aAAe,CAAEI,KAAM,cAAeC,OAAQgF,IACrD,GAEH0B,cAAe,SAACC,GACdA,EACGC,QAAQxB,EAAmByB,SAAS,SAACpH,GACpCA,EAAME,aAAe,CAAEI,KAAM,cAAeC,OAAQ8G,IACtD,IACCF,QAAQxB,EAAmB2B,WAAW,SAACtH,EAAO0B,GAC7C1B,EAAME,aAAewB,EAAO6F,OAC9B,IACCJ,QAAQxB,EAAmB6B,UAAU,SAACxH,EAAO0B,GAC5C1B,EAAME,aAAe,CACnBI,KAAM,cACNC,OAAQ6E,EAAY1D,EAAO6F,SAE/B,GACH,IAIqBE,EAA0Cb,EAA7Bc,QACtBV,EADmDJ,EAAWe"}
|
package/dist/moRedirFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as
|
|
1
|
+
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as i,N as o,L as s,F as c}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as u}from"./storeMsisdn-Cjq8_qYH.js";import{t as l}from"./tracker-DaaILhEr.js";import{t as m}from"./tryGetIPRangeName-QW-9NgzE.js";import"pacman-client";import"uuid";var f=function(e){return e((function(e){return e.moRedirFlow.currentState}))};function v(e){var r=e.msisdnEntry;return function(e){return e.type,r(e.result)}}var y=function(n){var a=n.window,i=n.slug,o=n.country,s=n.msisdn,c=n.device,d=n.offer,u=n.rockmanId,l=n.ip_range_name,m=n.search,f=n.extraParamsQs,v=n.email,y=n.password;return e(void 0,void 0,void 0,(function(){var e,n,p,S,w,_,I,h;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t(t({action:"redirect",slug:i,country:o,device:c,offerId:d.toString(),rockman_id:u,page:encodeURIComponent(a.location.href),antifraud_id:a.antifraud_id||"",antifraud_id_js_code:a.antifraud_id_js_code||"",antifraud_id_js_link:a.antifraud_id_js_link||"",network_type:l?"":"wifi"},m&&{search:m}),(null===(_=null===(w=null===(S=a.pac_analytics)||void 0===S?void 0:S.visitor)||void 0===w?void 0:w.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:u}),(null===(h=null===(I=a.pac_analytics)||void 0===I?void 0:I.visitor)||void 0===h?void 0:h.ip)&&{client_ip:a.pac_analytics.visitor.ip}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),v&&y?{email:v,password:y}:{msisdn:s}),f&&{extraParams:f})).toString(),n=a.DEV_BASE_URL||"",p="".concat(n,"/tallyman/v1/?").concat(e),i.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:u,redirect_url:p}]:[2,fetch(p).then((function(e){return e.json()}))]}))}))};function p(n,a,i,o){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){return e=t({offer:n.pac_analytics.visitor.offer},a||{}),[2,S(n,e,i,o)]}))}))}function S(t,n,a,i){return e(this,void 0,void 0,(function(){var e,o,s,c,d,u,l,f,v,p,S,w,_;return r(this,(function(r){switch(r.label){case 0:return e=n.slug,o=n.country,s=n.device,c=n.offer,d=t.location.search.substr(1)||"",u=i?"&".concat(Object.keys(i).map((function(e){return"".concat(e,"=").concat(i[e])})).join("&")):"",l=a.match(/\d+/gi).join(""),f=t.pac_analytics.visitor,v=f.rockmanId,"ci"!==o?[3,2]:[4,m(f)];case 1:return p=r.sent(),[3,3];case 2:p=null,r.label=3;case 3:return[4,y({window:t,slug:e,country:o,msisdn:l,device:s,offer:c,rockmanId:v,ip_range_name:p,search:d,extraParamsQs:u})];case 4:if(!1===(S=r.sent()).success)throw w="ALREADY SUBSCRIBED"===S.message?"AlreadySubscribed":"InvalidMSISDN",(_=new Error("".concat(w,":\n").concat(S.message))).type=w,console.error(_),_;return[2,S.redirect_url]}}))}))}var w={currentState:{type:"MSISDNEntry",result:i({href:"/product"})}},_={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},I={currentState:{type:"MSISDNEntry",result:o()}},h=function(e){var r=d(e);if(!r["mock-flow"])return I;switch(r["current-state"]){case"msisdn-entry-failure-state":return _;case"msisdn-entry-success-state":return w;default:return console.error("Mock Flow not supported"),I}}(window),g=n("moRedirFlow/submitMSISDNAction",(function(t,n){var a=t.window,o=t.msisdn,s=t.extraParams,c=n.getState,d=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,n,m,f,v,y,S;return r(this,(function(r){switch(r.label){case 0:if(e=c(),!(null===(S=null===(y=null===(v=null==e?void 0:e.strategy)||void 0===v?void 0:v.currentState)||void 0===y?void 0:y.data)||void 0===S?void 0:S.config))return[2,d({errorType:"UnexpectedState"})];t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submitted",{msisdn:o}),[4,p(a,t,o,s)];case 2:return n=r.sent(),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:o}),s&&s.storeMsisdn&&"true"===s.storeMsisdn?[4,u(o).then((function(e){e&&e.data&&e.data.success?l.customEvent("Flow","advance-auto","msisdn-stored-success"):l.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){l.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:i({href:n})}];case 5:switch(m=r.sent(),console.warn(m),f=void 0,m.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidMSISDN":f="InvalidMSISDN";break;default:f="UnknownError"}return l.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:o,errorType:"UnknownError"}),[2,d({errorType:f,productUrl:m.productUrl})];case 6:return[2]}}))}))})),b=a({name:"moRedirFlow",initialState:h,reducers:{backToStartAction:function(e){l.recedeInFlow("tallyman.v1-mo-redir","mo-redir-state","requested to change phone number"),e.currentState={type:"MSISDNEntry",result:o()}}},extraReducers:function(e){e.addCase(g.pending,(function(e){e.currentState={type:"MSISDNEntry",result:s()}})).addCase(g.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(g.rejected,(function(e,r){e.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),k=b.reducer,E=b.actions.backToStartAction;export{E as backToStartAction,v as moRedirFlowMatch,k as moRedirFlowReducer,g as submitMSISDNAction,f as useMoRedirFlowState};
|
|
2
2
|
//# sourceMappingURL=moRedirFlow.js.map
|
package/dist/moRedirFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moRedirFlow.js","sources":["../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../src/flows/moRedirFlow/match.ts","../src/flows/moRedirFlow/api.ts","../src/flows/moRedirFlow/main.ts","../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.pac_analytics?.visitor?.ip && { client_ip: window.pac_analytics.visitor.ip }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(window.antifraud_id && { antifraud_id: window.antifraud_id }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi).join('');\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nconst mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nconst mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\nconst defaultInitialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\nexport const { backToStartAction } = moRedirFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["useMoRedirFlowState","useSelector","state","moRedirFlow","currentState","moRedirFlowMatch","_a","msisdnEntry","type","result","redirect","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","pac_analytics","_b","visitor","includes","evinaTi","_f","_e","ip","client_ip","securityProcessId","languageCode","language_code","antifraud_id","extraParams","host","DEV_BASE_URL","url","concat","success","redirect_url","fetch","then","x","json","submitMSISDN","maybeConfig","internationalMSISDN","config","submitMSISDNWithConfig","substr","Object","keys","map","k","join","match","tryGetIPRangeName","sent","message","error","Error","console","mockedMSISDNEntrySuccess","RDS.Success","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","strategy","data","tracker","advancedInFlow","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","productUrl","moRedirFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moRedirFlowReducer","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"moRedirFlow.js","sources":["../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../src/flows/moRedirFlow/match.ts","../src/flows/moRedirFlow/api.ts","../src/flows/moRedirFlow/main.ts","../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.pac_analytics?.visitor?.ip && { client_ip: window.pac_analytics.visitor.ip }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi).join('');\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nconst mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nconst mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\nconst defaultInitialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\nexport const { backToStartAction } = moRedirFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["useMoRedirFlowState","useSelector","state","moRedirFlow","currentState","moRedirFlowMatch","_a","msisdnEntry","type","result","redirect","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","_f","_e","ip","client_ip","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","success","redirect_url","fetch","then","x","json","submitMSISDN","maybeConfig","internationalMSISDN","config","submitMSISDNWithConfig","substr","Object","keys","map","k","join","match","tryGetIPRangeName","sent","message","error","Error","console","mockedMSISDNEntrySuccess","RDS.Success","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","strategy","data","tracker","advancedInFlow","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","productUrl","moRedirFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moRedirFlowReducer","reducer","actions"],"mappings":"ibAGO,IAAMA,EAAsB,SAACC,GAElC,OADqBA,GAAY,SAACC,GAAqB,OAAAA,EAAMC,YAAYC,YAAlB,GAEzD,ECHA,SAASC,EAAoBC,GAC3B,IAAAC,EAAWD,EAAAC,YAIX,OAAO,SAACL,GAMF,OALIA,EAAMM,KAKHD,EAAYL,EAAMO,OAE/B,CACF,CCfA,IAAMC,EAAW,SAAOJ,GACtB,IAAAK,EAAML,EAAAK,OACNC,EAAIN,EAAAM,KACJC,EAAOP,EAAAO,QACPC,EAAMR,EAAAQ,OACNC,EAAMT,EAAAS,OACNC,EAAKV,EAAAU,MACLC,EAASX,EAAAW,UACTC,EAAaZ,EAAAY,cACbC,EAAMb,EAAAa,OACNC,kBACAC,EAAKf,EAAAe,MACLC,EAAQhB,EAAAgB,kGA0CR,OA3BMC,EAAS,IAAIC,gBAAeC,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CAChCC,OAAQ,WACRd,KAAIA,EACJC,QAAOA,EACPE,OAAMA,EACNY,QAASX,EAAMY,WACfC,WAAYZ,EACZa,KAAMC,mBAAmBpB,EAAOqB,SAASC,MAEzCC,aAAcvB,EAAOuB,cAAgB,GAGrCC,qBAAsBxB,EAAOwB,sBAAwB,GACrDC,qBAAsBzB,EAAOyB,sBAAwB,GACrDC,aAAcnB,EAAgB,GAAK,QAC/BC,GAAU,CAAEA,OAAMA,KACmB,QAArCmB,EAA6B,QAA7BC,EAAoB,QAApBC,EAAA7B,EAAO8B,qBAAa,IAAAD,OAAA,EAAAA,EAAEE,eAAO,IAAAH,OAAA,EAAAA,EAAET,YAAM,IAAAQ,OAAA,EAAAA,EAAAK,SAAS,YAAa,CAAEC,QAAS3B,KACvC,QAA/B4B,EAAsB,QAAtBC,EAAAnC,EAAO8B,qBAAe,IAAAK,OAAA,EAAAA,EAAAJ,eAAS,IAAAG,OAAA,EAAAA,EAAAE,KAAM,CAAEC,UAAWrC,EAAO8B,cAAcC,QAAQK,KAC/EpC,EAAOsC,mBAAqB,CAAEA,kBAAmBtC,EAAOsC,oBACxDtC,EAAOuC,cAAgB,CAAEC,cAAexC,EAAOuC,eAC/C7B,GAASC,EAAW,CAAED,MAAKA,EAAEC,SAAQA,GAAK,CAAER,OAAMA,IAClDM,GAAiB,CAAEgC,YAAahC,KACnCQ,WAEGyB,EAAO1C,EAAO2C,cAAgB,GAC9BC,EAAM,GAAGC,OAAAH,EAAqB,kBAAAG,OAAAjC,GAEhCX,EAAK+B,SAAS,sBACT,CAAA,EAAA,CACLc,SAAS,EACT5B,WAAYZ,EACZyC,aAAcH,IAIlB,CAAA,EAAOI,MAAMJ,GAAKK,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YC1DlB,SAAgBC,EAC5BpD,EACAqD,EACAC,EACAb,4EAGA,OADMc,KAAoBlD,MAAOL,EAAO8B,cAAcC,QAAQ1B,OAAWgD,GAAe,CAAA,GACjF,CAAA,EAAAG,EAAuBxD,EAAQuD,EAAQD,EAAqBb,SACpE,CAEK,SAAgBe,EACpBxD,EACAuD,EACAD,EACAb,2HAasB,OAXdxC,EAAiCsD,EAAMtD,KAAjCC,EAA2BqD,EAApBrD,QAAEE,EAAkBmD,EAAZnD,OAAEC,EAAUkD,QACnC/C,EAASR,EAAOqB,SAASb,OAAOiD,OAAO,IAAM,GAC7ChD,EAAiBgC,EAEnB,IAAII,OAAAa,OAAOC,KAAKlB,GACbmB,KAAI,SAACC,GAAM,MAAA,GAAGhB,OAAAgB,EAAK,KAAAhB,OAAAJ,EAAYoB,GAAI,IACnCC,KAAK,MAHR,GAIE3D,EAASmD,EAAoBS,MAAM,SAASD,KAAK,IAC/C/B,EAAY/B,EAAO8B,sBACnBxB,EAAcyB,EAAOzB,UAEK,OAAZJ,EAAgB,CAAA,EAAA,GAAG,CAAA,EAAM8D,EAAkBjC,kBAAxBpC,EAAAkC,sBAAmClC,EAAA,sBACpC,MAAA,CAAA,EAAMI,EAAS,CACrDC,OAAMA,EACNC,KAAIA,EACJC,QAAOA,EACPC,OAAMA,EACNC,OAAMA,EACNC,MAAKA,EACLC,UAASA,EACTC,cAT8EZ,EAU9Ea,OAAMA,EACNC,cAAaA,YAGf,IAAuB,KAbjBX,EAAkC+B,EAWtCoC,QAESnB,QAKT,MAJMjD,EAA0B,uBAAnBC,EAAOoE,QAAmC,oBAAsB,iBACvEC,EAAQ,IAAIC,MAAM,GAAGvB,OAAAhD,EAAU,OAAAgD,OAAA/C,EAAOoE,WACtCrE,KAAOA,EACbwE,QAAQF,MAAMA,GACRA,EAEN,MAAO,CAAA,EAAArE,EAAOiD,oBAEjB,CCxCD,IAAMuB,EAA6C,CACjD7E,aAAc,CACZI,KAAM,cACNC,OAAQyE,EAAoD,CAC1DjD,KAAM,eAKNkD,EAA6C,CACjD/E,aAAc,CACZI,KAAM,cACNC,OAAQ2E,EAAoD,CAC1DC,UAAW,gBACXP,MAAO,4BAKPQ,EAAwC,CAC5ClF,aAAc,CACZI,KAAM,cACNC,OAAQ8E,MAqBNC,EAjBkB,SAAC7E,GACvB,IAAMQ,EAASsE,EAAe9E,GAC9B,IAAIQ,EAAO,aAWT,OAAOmE,EAVP,OAAQnE,EAAO,kBACb,IAAK,6BACH,OAAOgE,EACT,IAAK,6BACH,OAAOF,EACT,QAEE,OADAD,QAAQF,MAAM,2BACPQ,EAKf,CAEqBI,CAAgB/E,QAcxBgF,EAAqBC,EAMhC,kCAAkC,SAAOtF,EAAiCkC,GAA/B,IAAA7B,WAAQG,EAAMR,EAAAQ,OAAEsC,EAAW9C,EAAA8C,YAAMyC,EAAQrD,EAAAqD,SAAEC,EAAetD,EAAAsD,gIAErG,GADM5F,EAAmB2F,MACiB,QAArC/C,EAA6B,kBAA7BP,EAAArC,aAAK,EAALA,EAAO6F,+BAAU3F,oBAAY,IAAAkC,OAAA,EAAAA,EAAE0D,YAAM,IAAAlD,OAAA,EAAAA,EAAAoB,QACxC,MAAA,CAAA,EAAO4B,EAAgB,CACrBT,UAAW,qBAGPnB,EAAWhE,EAAM6F,SAAS3F,aAAa4F,KAAI9B,wBAKpC,6BADb+B,EAAQC,eAAe,uBAAwB,mBAAoB,CAAEpF,OAAMA,IACxD,CAAA,EAAAiD,EAAapD,EAAQuD,EAAQpD,EAAQsC,WAMpD,OANEnB,EAAOY,EAAuD+B,OACpEqB,EAAQC,eAAe,uBAAwB,4BAA6B,CAAEpF,OAAMA,IAKhFsC,GAAeA,EAAY+C,aAA2C,SAA5B/C,EAAY+C,YAClD,CAAA,EAAAA,EAAYrF,GACf8C,MAAK,SAACoC,GACDA,GAAQA,EAAKA,MAAQA,EAAKA,KAAKvC,QACjCwC,EAAQG,YAAY,OAAQ,eAAgB,yBAE5CH,EAAQG,YAAY,OAAQ,eAAgB,uBAEhD,IACCC,OAAM,SAACvB,GACNmB,EAAQG,YAAY,OAAQ,eAAgB,sBAAuBtB,EACpE,KAX2E,CAAA,EAAA,UAC9EjC,EAAA+B,wBAcF,MAAO,CAAA,EAAA,CACLpE,KAAM,cACNC,OAAQyE,EAAoD,CAAEjD,KAAIA,aAKpE,kBAFA+C,QAAQsB,KAAKC,GACTlB,SACIkB,EAAG/F,MACT,IAAK,oBACH6E,EAAY,oBACZ,MACF,IAAK,gBACHA,EAAY,gBACZ,MACF,QACEA,EAAY,eAQhB,OALAY,EAAQO,aAAa,uBAAwB,4BAA6B,CACxE1F,OAAMA,EACNuE,UAAW,iBAGb,CAAA,EAAOS,EAAgB,CACrBT,UAASA,EACToB,WAAYF,EAAGE,qCAGpB,IAEKC,EAAmBC,EAAY,CACnCC,KAAM,cACNpB,aAAYA,EACZqB,SAAU,CACRC,2BAAkB5G,GAChB+F,EAAQO,aAAa,uBAAwB,iBAAkB,oCAG/DtG,EAAME,aAAe,CAAEI,KAAM,cAAeC,OAAQ8E,IACrD,GAEHwB,cAAe,SAACC,GACdA,EACGC,QAAQtB,EAAmBuB,SAAS,SAAChH,GACpCA,EAAME,aAAe,CAAEI,KAAM,cAAeC,OAAQ0G,IACtD,IACCF,QAAQtB,EAAmByB,WAAW,SAAClH,EAAOwB,GAC7CxB,EAAME,aAAesB,EAAO2F,OAC9B,IACCJ,QAAQtB,EAAmB2B,UAAU,SAACpH,EAAOwB,GAC5CxB,EAAME,aAAe,CACnBI,KAAM,cACNC,OAAQ2E,EAAY1D,EAAO2F,SAE/B,GACH,IAIqBE,EAAoDb,EAAlCc,QAC3BV,EAD6DJ,EAAgBe"}
|
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 f}from"./searchToObject.js";import{b as v}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 w(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 y=function(c){var o=c.window,a=c.extraParams,i=c.search,u=c.url;return r(void 0,void 0,void 0,(function(){var r,c,s,l,d,f;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",s=(null==o?void 0:o.antifraud_id)||"",l=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=u,p=t({sam_evina_tid:r,antifraud_id:s,"is-clean-traffic":c},Object.fromEntries(new URLSearchParams(l))),m=new URLSearchParams(p).toString(),d="".concat(v,"&").concat(m),[4,fetch("".concat(d).concat(i?"&".concat(i):""))];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw f=e.sent(),console.error("Error fetching subscription:",f),f;case 5:return[2]}var v,p,m}))}))},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,_,w,y,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]:(R=c.DEV_BASE_URL||"",g="".concat(R,"/tallyman/v1/?action=identify-user&country=").concat(v(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===(w=e.sent()).success)throw(S=new Error("Error in getRedirectUrl() identify-user action:\n".concat(w.message))).type="NotOn3g",S;return[2,{subscription_url:w.subscription_url||w.redirect_url,action:function(){return h(w.subscription_url,o)}}];case 3:return"he"!==u?[3,5]:(R=c.DEV_BASE_URL||"",g="".concat(R,"/tallyman/v1/?action=he&country=").concat(v(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"===(y=f(c)).success)throw(S=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",S;return[2,{redirect_url:y.redirect_url||y.url}]}return R=c.DEV_BASE_URL||"",g="".concat(R,"/tallyman/v1/?action=redirect&country=").concat(v(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,c,o){return r(void 0,void 0,void 0,(function(){var r,a,i,u,s;return e(this,(function(e){switch(e.label){case 0:return r=c.queryString,a=window.location.search.substr(1),i=(a&&a.length>0?[a]:[]).concat((r||[]).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(c)}))).join("&"),[4,y({window:window,extraParams:o,search:i,url:t})];case 1:if(!1===(u=e.sent()).success)throw(s=new Error("Error in subscribe() one-click-subscribe action:\n".concat(u.message))).type="ALREADY SUBSCRIBED"===u.message?"AlreadySubscribed":"SubscriptionError",s.productUrl=u.product_url?u.product_url:"",s.message=u.message,s;return[2,u.product_url||u.redirect_url]}}))}))},g=function(t,c,o){return r(void 0,void 0,void 0,(function(){var r,a,i,u,s,l,d,f,p,m,_,w,y,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("&")):"",f=t.location.href.split("/")[3].split("?")[0],p=void 0!==t&&t.tid?t.tid:"",m=(null===(y=null===(w=null==t?void 0:t.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===y?void 0:y.bupperRedirectHost)?t.atob(null===(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(v(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(f).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=f(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,v=c.getState,p=c.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,c,m,_,y,E,h,b,S,U,I,C,T;return e(this,(function(e){switch(e.label){case 0:if(r=v(),f(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,y=n.operator,e.label=1;case 1:return e.trys.push([1,8,,9]),!0!==i?[3,4]:[4,g(o,c,t(t({},y&&{operator:y}),u))];case 2:return[4,w({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({},y&&{operator:y}),u)})]);case 5:return b=e.sent().redirect_url,d.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),[4,w({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,f,v,p,m,_;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(_=null===(m=null===(p=null==r?void 0:r.strategy)||void 0===p?void 0:p.currentState)||void 0===m?void 0:m.data)||void 0===_?void 0:_.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data,n=t.subscription_url,l=t.config,e.label=1;case 1:return e.trys.push([1,3,,4]),d.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,h(n,l,i)];case 2:return f=e.sent(),d.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:f}),!0===o&&(d.customEvent("Flow","advance-auto","click-product-url",{product_url:f}),c.location.href=f),[2,{type:"SUBCRIBE_AJAX",result:a({productUrl:f})}];case 3:return v=e.sent(),console.warn(v),d.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:v.toString()}),[2,s({errorType:"UnknownError",error:v.toString(),productUrl:v.productUrl,message:v.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};
|
|
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 f}from"./searchToObject.js";import{b as v}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 w(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 y=function(c){var o=c.window,a=c.extraParams,i=c.search,u=c.url;return r(void 0,void 0,void 0,(function(){var r,c,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",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]),f=u,v=t({sam_evina_tid:r,antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||"","is-clean-traffic":c},Object.fromEntries(new URLSearchParams(s))),p=new URLSearchParams(v).toString(),l="".concat(f,"&").concat(p),[4,fetch("".concat(l).concat(i?"&".concat(i):""))];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 f,v,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,_,w,y,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]:(R=c.DEV_BASE_URL||"",g="".concat(R,"/tallyman/v1/?action=identify-user&country=").concat(v(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===(w=e.sent()).success)throw(S=new Error("Error in getRedirectUrl() identify-user action:\n".concat(w.message))).type="NotOn3g",S;return[2,{subscription_url:w.subscription_url||w.redirect_url,action:function(){return h(w.subscription_url,o)}}];case 3:return"he"!==u?[3,5]:(R=c.DEV_BASE_URL||"",g="".concat(R,"/tallyman/v1/?action=he&country=").concat(v(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"===(y=f(c)).success)throw(S=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",S;return[2,{redirect_url:y.redirect_url||y.url}]}return R=c.DEV_BASE_URL||"",g="".concat(R,"/tallyman/v1/?action=redirect&country=").concat(v(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,c,o){return r(void 0,void 0,void 0,(function(){var r,a,i,u,s;return e(this,(function(e){switch(e.label){case 0:return r=c.queryString,a=window.location.search.substr(1),i=(a&&a.length>0?[a]:[]).concat((r||[]).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(c)}))).join("&"),[4,y({window:window,extraParams:o,search:i,url:t})];case 1:if(!1===(u=e.sent()).success)throw(s=new Error("Error in subscribe() one-click-subscribe action:\n".concat(u.message))).type="ALREADY SUBSCRIBED"===u.message?"AlreadySubscribed":"SubscriptionError",s.productUrl=u.product_url?u.product_url:"",s.message=u.message,s;return[2,u.product_url||u.redirect_url]}}))}))},g=function(t,c,o){return r(void 0,void 0,void 0,(function(){var r,a,i,u,s,l,d,f,p,m,_,w,y,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("&")):"",f=t.location.href.split("/")[3].split("?")[0],p=void 0!==t&&t.tid?t.tid:"",m=(null===(y=null===(w=null==t?void 0:t.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===y?void 0:y.bupperRedirectHost)?t.atob(null===(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(v(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(f).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=f(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,v=c.getState,p=c.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,c,m,_,y,E,h,b,S,U,I,C,j;return e(this,(function(e){switch(e.label){case 0:if(r=v(),f(o)["mock-flow"])return[2,k.currentState];if(!(null===(j=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===j?void 0:j.config))return[2,p({errorType:"UnexpectedState"})];n=r.strategy.currentState.data,c=n.config,m=n.subscription_url,_=n.redirect_url,y=n.operator,e.label=1;case 1:return e.trys.push([1,8,,9]),!0!==i?[3,4]:[4,g(o,c,t(t({},y&&{operator:y}),u))];case 2:return[4,w({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({},y&&{operator:y}),u)})]);case 5:return b=e.sent().redirect_url,d.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),[4,w({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,f,v,p,m,_;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(_=null===(m=null===(p=null==r?void 0:r.strategy)||void 0===p?void 0:p.currentState)||void 0===m?void 0:m.data)||void 0===_?void 0:_.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data,n=t.subscription_url,l=t.config,e.label=1;case 1:return e.trys.push([1,3,,4]),d.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,h(n,l,i)];case 2:return f=e.sent(),d.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:f}),!0===o&&(d.customEvent("Flow","advance-auto","click-product-url",{product_url:f}),c.location.href=f),[2,{type:"SUBCRIBE_AJAX",result:a({productUrl:f})}];case 3:return v=e.sent(),console.warn(v),d.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:v.toString()}),[2,s({errorType:"UnknownError",error:v.toString(),productUrl:v.productUrl,message:v.message||""})];case 4:return[2]}}))}))})),j=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)}}))}}),T=j.reducer;j.actions;export{I as getRedirectUrlAction,_ as oneClickFlowMatch,T as oneClickFlowReducer,C as subscribeUrlAction,m as useOneClickFlowState};
|
|
2
2
|
//# sourceMappingURL=oneClickFlow.js.map
|