ouisys-engine 5.0.5 → 5.0.7
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
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as a,createSlice as n}from"@reduxjs/toolkit";import{S as i,L as o,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l as d}from"./loadScriptSrc-Da4autZd.js";import{searchToObject as l}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"./loadScriptInnerHtml-BzQm-AFb.js";import"pacman-client";import"uuid";var v=function(a){var n=a.window,i=a.slug,o=a.country,c=a.msisdn,s=a.device,d=a.offer,l=a.rockmanId,u=a.ip_range_name,v=a.search,m=a.extraParamsQs,
|
|
1
|
+
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as a,createSlice as n}from"@reduxjs/toolkit";import{S as i,L as o,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l as d}from"./loadScriptSrc-Da4autZd.js";import{searchToObject as l}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"./loadScriptInnerHtml-BzQm-AFb.js";import"pacman-client";import"uuid";var v=function(a){var n=a.window,i=a.slug,o=a.country,c=a.msisdn,s=a.device,d=a.offer,l=a.rockmanId,u=a.ip_range_name,v=a.search,m=a.extraParamsQs,y=a.email,f=a.password;return e(void 0,void 0,void 0,(function(){var e,a,p,w,g,_;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:i,country:o,device:s,offerId:d.toString(),rockman_id:l,page:encodeURIComponent(n.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(_=null===(g=null===(w=n.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===g?void 0:g.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:l}),n.securityProcessId&&{securityProcessId:n.securityProcessId}),n.languageCode&&{language_code:n.languageCode}),y&&f?{email:y,password:f}:{msisdn:c}),m&&{extraParams:m})).toString(),a=n.DEV_BASE_URL||"",p="".concat(a,"/tallyman/v1/?").concat(e),i.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:l,redirect_url:p}]:[2,fetch(p).then((function(e){return e.json()}))]}))}))},m=function(a){var n=a.window,i=a.userDetails,o=a.extraConfig;return e(void 0,void 0,void 0,(function(){var e,a,c,s,d,u,v,m;return r(this,(function(r){return e="cc_number"in i,a=n.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(a,"/api/v1"),s=e?"/maxpay/frontend/initiate-payment":"/ecardon/frontend/initiate-payment",d=l(n),u=t(t(t({rockman_id:null===(m=n.pac_analytics.visitor)||void 0===m?void 0:m.rockmanId,landing_page_url:n.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.serviceId).concat(d.d_country)}:{}),e?{}:{user_agent:n.navigator.userAgent,ip:n.pac_analytics.visitor.ip}),i),v={method:"POST",headers:new Headers({"Content-Type":"application/json"}),body:JSON.stringify(u)},[2,fetch("".concat(c).concat(s),v).then((function(e){return e.json()}))]}))}))};function y(t,a,n){var i,o,c,s,d;return e(this,void 0,void 0,(function(){var e,l,u,y,f,p,w,g,_,S,h,E;return r(this,(function(r){switch(r.label){case 0:return e=a.slug,l=a.country,u=a.device,y=a.serviceId,f=t.location.search.substr(1)||"",p=t.pac_analytics.visitor,w=p.rockmanId,g={serviceId:y,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:l,device:u,offer:null===(d=null===(s=null==t?void 0:t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===d?void 0:d.offer,rockmanId:w,email:null==n?void 0:n.email,password:null==n?void 0:n.password,search:f})]:[3,2];case 1:return S=r.sent(),[3,4];case 2:return[4,m({window:t,userDetails:n,extraConfig:g})];case 3:S=r.sent(),r.label=4;case 4:if(!1===(_=S).success)throw h="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":_.message,(E=new Error("".concat(h,":\n").concat(_.message))).type=h,console.error(E),E;return[2,{gateway_url:_.gateway_url||_.redirect_url,method:_.redirect_url?"redirection":_.method}]}}))}))}var f={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"})}},w={currentState:{type:"USER_DETAILS_ENTRY",result:s()}},g=function(e){var r=l(e);if(!r["mock-flow"])return w;switch(r["current-state"]){case"user-details-entry-failure-state":return p;case"user-details-entry-success-state":return f;default:return console.error("Mock Flow not supported"),w}}(window),_=a("creditCardFlow/submitUserDetailsAction",(function(t,a){var n=t.window,o=t.userDetails,c=a.getState,s=a.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,a,l,v,m,f,p,w,g;return r(this,(function(r){switch(r.label){case 0:if(e=c(),!(null===(g=null===(w=null===(p=null==e?void 0:e.strategy)||void 0===p?void 0:p.currentState)||void 0===w?void 0:w.data)||void 0===g?void 0:g.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,y(n,t,o)];case 2:return a=r.sent(),l=a.gateway_url,v=a.method,u.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==o?void 0:o.email,gateway_url:l}),"jslink"===v&&l&&(u.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:l}),d({id:"ecardon-credit-card",url:l,callBack:function(){u.advancedInFlow("tallyman.v1-credit-card","load-script-success",{gateway_url:l})}})),"redirection"===v&&l&&(u.customEvent("Flow","advance-auto","redirect-success",{redirect_url:l}),n.location.href=l),[2,{type:"USER_DETAILS_ENTRY",result:i({gateway_url:l,method:v})}];case 3:switch(m=r.sent(),console.warn(m),f=void 0,m.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidUserDetails":f="InvalidUserDetails";break;default:f="UnknownError"}return u.recedeInFlow("tallyman.v1-credit-card","cc-form-submission-failure",{email:null==o?void 0:o.email,errorType:f||m.type}),[2,s({errorType:f,error:m.toString()})];case 4:return[2]}}))}))})),S=n({name:"creditCardFlow",initialState:g,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)}}))}}),h=S.reducer;S.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,h as creditCardFlowReducer,_ as submitUserDetailsAction,E as useCreditCardFlowState};
|
|
2
2
|
//# sourceMappingURL=creditCardFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditCardFlow.js","sources":["../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 { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { 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.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\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: 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 = isMaxPay ? '/maxpay/frontend/initiate-payment' : '/ecardon/frontend/initiate-payment';\n\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 ...(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 gateway_url: string;\n method: 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 };\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 };\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 } = 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 return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method })\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","success","redirect_url","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","apiPath","commonDetails","landing_page_url","service_id","serviceId","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","type","message","error","Error","console","gateway_url","mockedUserDetailsEntrySuccess","currentState","RDS.Success","mockedUserDetailsEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitUserDetailsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","data","tracker","advancedInFlow","sent","gateway_url_1","loadScriptSrc","id","callBack","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":"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"}
|
|
1
|
+
{"version":3,"file":"creditCardFlow.js","sources":["../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 { 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 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\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 = isMaxPay ? '/maxpay/frontend/initiate-payment' : '/ecardon/frontend/initiate-payment';\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?.serviceId}${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 gateway_url: string;\n method: 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 };\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 } = 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 return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method })\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","success","redirect_url","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","apiPath","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","type","message","error","Error","console","gateway_url","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","loadScriptSrc","id","callBack","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":"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"}
|
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.url;return r(void 0,void 0,void 0,(function(){var r,c,u,s,l,d;return e(this,(function(e){switch(e.label){case 0:r=(null==o?void 0:o.tid)||"",c=(null==o?void 0:o.shouldBlock)?"false":"true",u=(null==o?void 0:o.antifraud_id)||"",s=Object.entries(a||{}).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(encodeURIComponent(c))})).join("&"),e.label=1;case 1:return e.trys.push([1,4,,5]),f=i,v=t({sam_evina_tid:r,antifraud_id:u,"is-clean-traffic":c},Object.fromEntries(new URLSearchParams(s))),p=new URLSearchParams(v).toString(),l="".concat(f).concat(p),[4,fetch(l)];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw d=e.sent(),console.error("Error fetching subscription:",d),d;case 5:return[2]}var 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,S,b,U,g;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]:(y=c.DEV_BASE_URL||"",S="".concat(y,"/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(S)]);case 2:if(!1===(w=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(w.message))).type="NotOn3g",U;return[2,{subscription_url:w.subscription_url||w.redirect_url,action:function(){return h(w.subscription_url)}}];case 3:return"he"!==u?[3,5]:(y=c.DEV_BASE_URL||"",S="".concat(y,"/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(S).then((function(r){return r.json()}))]);case 4:if(!1===(b=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(b.message))).type="NotOn3g",U;return p(b.source),[2,{redirect_url:b.redirectUrlWithReplacedUniqid}];case 5:if("om"===r.toLowerCase()){if("false"===(R=f(c)).success)throw(U=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",U;return[2,{redirect_url:R.redirect_url||R.url}]}return S="/tallyman/v1/?action=redirect&country=".concat(v(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&page=").concat(encodeURIComponent(null===(g=null==c?void 0:c.location)||void 0===g?void 0:g.href),"&sam_evina_tid=").concat(s,"&").concat(m),[4,fetch(S).then((function(r){return r.json()}))];case 6:if(!1===(b=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(b.message))).type="NotOn3g",U;return[2,{redirect_url:b.redirect_url}];case 7:return[2]}}))}))},h=function(t,n){return r(void 0,void 0,void 0,(function(){var r,c;return e(this,(function(e){switch(e.label){case 0:return[4,y({window:window,extraParams:n,url:t})];case 1:if(!1===(r=e.sent()).success)throw(c=new Error("Error in subscribe() one-click-subscribe action:\n".concat(r.message))).type="ALREADY SUBSCRIBED"===r.message?"AlreadySubscribed":"SubscriptionError",c.productUrl=r.product_url?r.product_url:"",c;return[2,r.product_url||r.redirect_url]}}))}))},S=function(t,c,o){return r(void 0,void 0,void 0,(function(){var r,a,i,u,s,l,d,f,p,m;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=t.DEV_BASE_URL_BUPPER||"",[2,"".concat(m,"/").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"})}},U={currentState:{type:"SUBCRIBE_AJAX",result:s()}},g={currentState:{type:"GET_REDIRECT_URL",result:s()}},k=function(r){var e=f(r);if(!e["mock-flow"])return g;switch(e["current-state"]){case"redirect-url-success-state":return b;case"subscribe-ajax-state":return U;default:return console.error("Mock Flow not supported"),g}}(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,U,g,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,S(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(U=e.sent(),d.customEvent("Flow","advance-auto","redirect-success",{updated_redirect_url:U}),!0!==l&&!0!==o.isAutoFraudScreener)return[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:U})}];d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{updated_redirect_url:U}),setTimeout((function(){o.location.href=U}),0),e.label=7;case 7:return[3,9];case 8:return g=e.sent(),console.warn(g),d.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),[2,p({errorType:"UnknownError",error:g.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;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(p=null===(v=null===(f=null==r?void 0:r.strategy)||void 0===f?void 0:f.currentState)||void 0===v?void 0:v.data)||void 0===p?void 0:p.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data.subscription_url,e.label=1;case 1:return e.trys.push([1,4,,5]),d.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,h(t,i)];case 2:return[4,e.sent()];case 3:return n=e.sent(),d.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:n}),!0===o&&(d.customEvent("Flow","advance-auto","click-product-url",{product_url:n}),c.location.href=n),[2,{type:"SUBCRIBE_AJAX",result:a({productUrl:n})}];case 4:return l=e.sent(),console.warn(l),d.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:l.toString()}),[2,s({errorType:"UnknownError",error:l.toString(),productUrl:l.productUrl})];case 5:return[2]}}))}))})),T=o({name:"oneClickFlow",initialState:k,reducers:{},extraReducers:function(r){r.addCase(I.pending,(function(r){r.currentState={type:"GET_REDIRECT_URL",result:i()}})).addCase(I.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(I.rejected,(function(r,e){r.currentState={type:"GET_REDIRECT_URL",result:u(e.payload)}})).addCase(C.pending,(function(r){r.currentState={type:"SUBCRIBE_AJAX",result:i()}})).addCase(C.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(C.rejected,(function(r,e){r.currentState={type:"SUBCRIBE_AJAX",result:u(e.payload)}}))}}),j=T.reducer;T.actions;export{I as getRedirectUrlAction,_ as oneClickFlowMatch,j as oneClickFlowReducer,C as subscribeUrlAction,m as useOneClickFlowState};
|
|
1
|
+
import{__awaiter as r,__generator as e,__assign as t,__read as n}from"tslib";import{createAsyncThunk as c,createSlice as o}from"@reduxjs/toolkit";import{S as a,L as i,F as u,N as s}from"./RemoteDataState-lcf8PfJd.js";import{u as l,t as d}from"./tracker-DaaILhEr.js";import{searchToObject as v}from"./searchToObject.js";import{b as f}from"./bupperizeCountry-CEtt0MKz.js";import{l as p}from"./loadScriptInnerHtml-BzQm-AFb.js";import"pacman-client";import"uuid";var m=function(r){return r((function(r){return r.oneClickFlow.currentState}))};function _(r){var e=r.getRedirectUrl,t=r.subscribe;return function(r){switch(r.type){case"GET_REDIRECT_URL":default:return e(r.result);case"SUBCRIBE_AJAX":return t(r.result)}}}function y(t){var n=t.currentRedirectUrl,c=t.country;return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){switch(e.label){case 0:return"pe"!==c.toLowerCase()?[3,3]:[4,new Promise((function(r){var e=setInterval((function(){window.Empello&&(clearInterval(e),r())}),100)}))];case 1:return e.sent(),"undefined"!=typeof window&&window.Empello?[4,new Promise((function(r){var e;null===(e=window.Empello)||void 0===e||e.getToken((function(e){r(e)}))}))]:[3,3];case 2:return r=e.sent(),[2,l(n,"empello_token",r)];case 3:return[2,n]}}))}))}var w=function(c){var o=c.window,a=c.extraParams,i=c.url;return r(void 0,void 0,void 0,(function(){var r,c,u,s,l,d;return e(this,(function(e){switch(e.label){case 0:r=(null==o?void 0:o.tid)||"",c=(null==o?void 0:o.shouldBlock)?"false":"true",u=(null==o?void 0:o.antifraud_id)||"",s=Object.entries(a||{}).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(encodeURIComponent(c))})).join("&"),e.label=1;case 1:return e.trys.push([1,4,,5]),v=i,f=t({sam_evina_tid:r,antifraud_id:u,"is-clean-traffic":c},Object.fromEntries(new URLSearchParams(s))),p=new URLSearchParams(f).toString(),l="".concat(v).concat(p),[4,fetch(l)];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw d=e.sent(),console.error("Error fetching subscription:",d),d;case 5:return[2]}var v,f,p}))}))},E=function(r){var e=r,t="ouisys_callback_function".concat(Math.floor(1e4*Math.random()));return new Promise((function(n,c){window[t]=function(r){n(r)},e+=-1===e.indexOf("?")?"?":"&",e+="jsonp=".concat(t);var o=document.createElement("script");o.src=e,o.id=t,document.body.appendChild(o),o.onerror=function(){c(new Error("JSONP request to ".concat(r," failed")))}}))},R=function(t){var c=t.window,o=t.maybeConfig,a=t.extraParams;return r(void 0,void 0,void 0,(function(){var r,t,i,u,s,l,d,m,_,y,w,R,b,S,U,g;return e(this,(function(e){switch(e.label){case 0:if(void 0!==c)return[3,1];throw"javascript: console.error('SSR'); void 6";case 1:return r=o.country,t=o.slug,i=o.queryString,u=o.apiAction,s=void 0!==c&&c.tid?c.tid:"",l=c.pac_analytics.visitor.offer,d=c.location.search.substr(1),m=(d&&d.length>0?[d]:[]).concat((i||[]).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(c)}))).join("&"),Object.keys(a).forEach((function(r,e){m.length>0&&(m+="&"),m="".concat(function(r,e,t){void 0===t&&(t="");var n=new RegExp("\\b(".concat(e,"=).*?(&|#|$)"));if(r.search(n)>=0)return r.replace(n,"$1".concat(t,"$2"));var c=r.replace(/[?#]$/,"");return"".concat(c+e,"=").concat(t,"&")}(m,r,a[r])).concat(1===e?"&":"")})),_=c.pac_analytics.visitor.rockmanId,"identify-user"!==u?[3,3]:(w=c.DEV_BASE_URL||"",b="".concat(w,"/tallyman/v1/?action=identify-user&country=").concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&sam_evina_tid=").concat(s,"&").concat(m),[4,E(b)]);case 2:if(!1===(y=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(y.message))).type="NotOn3g",U;return[2,{subscription_url:y.subscription_url||y.redirect_url,action:function(){return h(y.subscription_url)}}];case 3:return"he"!==u?[3,5]:(w=c.DEV_BASE_URL||"",b="".concat(w,"/tallyman/v1/?action=he&country=").concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&sam_evina_tid=").concat(s,"&").concat(m),[4,fetch(b).then((function(r){return r.json()}))]);case 4:if(!1===(S=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(S.message))).type="NotOn3g",U;return p(S.source),[2,{redirect_url:S.redirectUrlWithReplacedUniqid}];case 5:if("om"===r.toLowerCase()){if("false"===(R=v(c)).success)throw(U=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",U;return[2,{redirect_url:R.redirect_url||R.url}]}return b="/tallyman/v1/?action=redirect&country=".concat(f(r),"&slug=").concat(t,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(_,"&page=").concat(encodeURIComponent(null===(g=null==c?void 0:c.location)||void 0===g?void 0:g.href),"&sam_evina_tid=").concat(s,"&").concat(m),[4,fetch(b).then((function(r){return r.json()}))];case 6:if(!1===(S=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(S.message))).type="NotOn3g",U;return[2,{redirect_url:S.redirect_url}];case 7:return[2]}}))}))},h=function(t,n){return r(void 0,void 0,void 0,(function(){var r,c;return e(this,(function(e){switch(e.label){case 0:return[4,w({window:window,extraParams:n,url:t})];case 1:if(!1===(r=e.sent()).success)throw(c=new Error("Error in subscribe() one-click-subscribe action:\n".concat(r.message))).type="ALREADY SUBSCRIBED"===r.message?"AlreadySubscribed":"SubscriptionError",c.productUrl=r.product_url?r.product_url:"",c;return[2,r.product_url||r.redirect_url]}}))}))},b=function(t,c,o){return r(void 0,void 0,void 0,(function(){var r,a,i,u,s,l,d,v,p,m,_,y,w,E,R;return e(this,(function(e){return void 0===t?[2,"javascript: console.error('SSR'); void 6"]:(r=c.country,a=c.slug,i=c.queryString,u=t.pac_analytics.visitor.offer,s=t.location.search.substr(1),l=(s&&s.length>0?[s]:[]).concat((i||[]).map((function(r){var e=n(r,2),t=e[0],c=e[1];return"".concat(t,"=").concat(c)}))).join("&"),d=o?"&".concat(Object.keys(o).map((function(r){return"".concat(r,"=").concat(o[r])})).join("&")):"",v=t.location.href.split("/")[3].split("?")[0],p=void 0!==t&&t.tid?t.tid:"",m=(null===(w=null===(y=null==t?void 0:t.pac_analytics)||void 0===y?void 0:y.visitor)||void 0===w?void 0:w.bupperRedirectHost)?t.atob(null===(R=null===(E=null==t?void 0:t.pac_analytics)||void 0===E?void 0:E.visitor)||void 0===R?void 0:R.bupperRedirectHost):null,_=m||t.DEV_BASE_URL_BUPPER||"",[2,"".concat(_,"/").concat(f(r),"/").concat(a,"?offer=").concat(u,"&atmobirun=1&rockman_id=").concat(t.pac_analytics.visitor.rockmanId,"&redirPixels=").concat(t.location.host,"&sam_evina_tid=").concat(p,"&x-xcid=").concat(v).concat(d,"&").concat(l)])}))}))},S={currentState:{type:"GET_REDIRECT_URL",result:a({redirectUrl:"/product"})}},U={currentState:{type:"SUBCRIBE_AJAX",result:s()}},g={currentState:{type:"GET_REDIRECT_URL",result:s()}},k=function(r){var e=v(r);if(!e["mock-flow"])return g;switch(e["current-state"]){case"redirect-url-success-state":return S;case"subscribe-ajax-state":return U;default:return console.error("Mock Flow not supported"),g}}(window),I=c("oneClickFlow/getRedirectUrlAction",(function(n,c){var o=n.window,i=n.isGetRedirectBupperWay,u=n.extraParams,l=n.autoRedirect,f=c.getState,p=c.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,c,m,_,w,E,h,S,U,g,I,C,T;return e(this,(function(e){switch(e.label){case 0:if(r=f(),v(o)["mock-flow"])return[2,k.currentState];if(!(null===(T=null===(C=null===(I=null==r?void 0:r.strategy)||void 0===I?void 0:I.currentState)||void 0===C?void 0:C.data)||void 0===T?void 0:T.config))return[2,p({errorType:"UnexpectedState"})];n=r.strategy.currentState.data,c=n.config,m=n.subscription_url,_=n.redirect_url,w=n.operator,e.label=1;case 1:return e.trys.push([1,8,,9]),!0!==i?[3,4]:[4,b(o,c,t(t({},w&&{operator:w}),u))];case 2:return[4,y({currentRedirectUrl:e.sent(),country:c.country})];case 3:return E=e.sent(),d.customEvent("Flow","advance-auto","redirect-success",{redirect_url:E}),!0!==o.isAutoFraudScreener?!0===l?(d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:E}),setTimeout((function(){o.location.href=E}),0),[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:E})}]):[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:E})}]:(h=setInterval((function(){o.isEvinaSessionChecked&&(clearInterval(h),d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:E}),setTimeout((function(){o.location.href=E}),0))}),100),[3,7]);case 4:return m&&null!=m?[2,{type:"SUBCRIBE_AJAX",result:s()}]:_?(d.customEvent("Flow","advance-auto","redirect-success",{redirect_url:_}),[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:_})}]):(d.advancedInFlow("tallyman.v1-one-click","get-redirect-url"),[4,R({window:o,maybeConfig:c,extraParams:t(t({},w&&{operator:w}),u)})]);case 5:return S=e.sent().redirect_url,d.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),[4,y({currentRedirectUrl:S,country:c.country})];case 6:if(U=e.sent(),d.customEvent("Flow","advance-auto","redirect-success",{updated_redirect_url:U}),!0!==l&&!0!==o.isAutoFraudScreener)return[2,{type:"GET_REDIRECT_URL",result:a({redirectUrl:U})}];d.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{updated_redirect_url:U}),setTimeout((function(){o.location.href=U}),0),e.label=7;case 7:return[3,9];case 8:return g=e.sent(),console.warn(g),d.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),[2,p({errorType:"UnknownError",error:g.toString()})];case 9:return[2]}}))}))})),C=c("oneClickFlow/subscribeUrlAction",(function(t,n){var c=t.window,o=t.autoRedirect,i=t.extraParams,u=n.getState,s=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,l,v,f,p;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(p=null===(f=null===(v=null==r?void 0:r.strategy)||void 0===v?void 0:v.currentState)||void 0===f?void 0:f.data)||void 0===p?void 0:p.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data.subscription_url,e.label=1;case 1:return e.trys.push([1,4,,5]),d.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,h(t,i)];case 2:return[4,e.sent()];case 3:return n=e.sent(),d.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:n}),!0===o&&(d.customEvent("Flow","advance-auto","click-product-url",{product_url:n}),c.location.href=n),[2,{type:"SUBCRIBE_AJAX",result:a({productUrl:n})}];case 4:return l=e.sent(),console.warn(l),d.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:l.toString()}),[2,s({errorType:"UnknownError",error:l.toString(),productUrl:l.productUrl})];case 5:return[2]}}))}))})),T=o({name:"oneClickFlow",initialState:k,reducers:{},extraReducers:function(r){r.addCase(I.pending,(function(r){r.currentState={type:"GET_REDIRECT_URL",result:i()}})).addCase(I.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(I.rejected,(function(r,e){r.currentState={type:"GET_REDIRECT_URL",result:u(e.payload)}})).addCase(C.pending,(function(r){r.currentState={type:"SUBCRIBE_AJAX",result:i()}})).addCase(C.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(C.rejected,(function(r,e){r.currentState={type:"SUBCRIBE_AJAX",result:u(e.payload)}}))}}),j=T.reducer;T.actions;export{I as getRedirectUrlAction,_ as oneClickFlowMatch,j as oneClickFlowReducer,C as subscribeUrlAction,m as useOneClickFlowState};
|
|
2
2
|
//# sourceMappingURL=oneClickFlow.js.map
|
package/dist/oneClickFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oneClickFlow.js","sources":["../src/flows/oneClickFlow/hooks/useOneClickFlowState.ts","../src/flows/oneClickFlow/match.ts","../src/utilities/addEmpelloToken.ts","../src/utilities/replaceUrlParam.ts","../src/flows/oneClickFlow/api.ts","../src/flows/oneClickFlow/main.ts","../src/flows/oneClickFlow/oneClickFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useOneClickFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.oneClickFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IGETREDIRECTURLFailure,\n IGETREDIRECTURLSuccess,\n OneClickFlowCurrentState,\n SubscribeFailure,\n SubscribeSuccess\n} from '../../sharedFlowTypes/OneClickTypes';\n\nfunction oneClickFlowMatch<R>({\n getRedirectUrl,\n subscribe\n}: {\n getRedirectUrl: (rds: RDS.RemoteDataState<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>) => R;\n subscribe?: (rds: RDS.RemoteDataState<SubscribeFailure, SubscribeSuccess>) => R;\n}): (state: OneClickFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'GET_REDIRECT_URL':\n return getRedirectUrl(state.result);\n case 'SUBCRIBE_AJAX':\n return subscribe(state.result);\n default:\n // TODO - this should be an error or something\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return getRedirectUrl(state.result);\n }\n };\n}\n\nexport { oneClickFlowMatch };\n","import { updateUrlParameter } from '../pacman/queryString';\n\nexport async function addEmpelloToken({\n currentRedirectUrl,\n country\n}: {\n currentRedirectUrl: string;\n country: string;\n}) {\n if (country.toLowerCase() === 'pe') {\n // Empello script is added on server\n\n await new Promise<void>((resolve) => {\n // check if empello script is loaded and available\n const checkEmpelloAvailability = setInterval(() => {\n if (window.Empello) {\n clearInterval((checkEmpelloAvailability as unknown) as number);\n resolve();\n }\n }, 100);\n });\n if (typeof window !== 'undefined' && window.Empello) {\n // call getToken function from empello\n const token = await new Promise<string>((resolve) => {\n window.Empello?.getToken((empelloToken: string) => {\n resolve(empelloToken);\n });\n });\n\n const url = updateUrlParameter(currentRedirectUrl, 'empello_token', token);\n return url;\n }\n }\n\n return currentRedirectUrl;\n}\n","export const replaceUrlParam = (url: string, paramName: string, paramValue = '') => {\n const pattern = new RegExp(`\\\\b(${paramName}=).*?(&|#|$)`);\n if (url.search(pattern) >= 0) {\n return url.replace(pattern, `$1${paramValue}$2`);\n }\n const newUrl = url.replace(/[?#]$/, '');\n return `${newUrl + paramName}=${paramValue}&`;\n};\n","import { IHash } from '../../common-types/IHash';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const getRedirectAPI = () => {};\n\nconst getUrlWithParams = (baseURL: string, params: IHash) => {\n const queryParams = new URLSearchParams(params).toString();\n return `${baseURL}${queryParams}`;\n};\n\nexport const oneClickSubscribe = async ({\n window,\n extraParams,\n url\n}: {\n window: Window;\n extraParams?: IHash;\n url: string;\n}) => {\n const evinaTid = window?.tid || '';\n const isCleanTraffic = window?.shouldBlock ? 'false' : 'true';\n const antifraudId = window?.antifraud_id || '';\n\n const extraParamsQs = Object.entries(extraParams || {})\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n try {\n const resultUrl = getUrlWithParams(url, {\n sam_evina_tid: evinaTid,\n antifraud_id: antifraudId,\n 'is-clean-traffic': isCleanTraffic,\n ...Object.fromEntries(new URLSearchParams(extraParamsQs))\n });\n\n const response = await fetch(resultUrl);\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error fetching subscription:', error);\n throw error; // Rethrow or handle error as needed\n }\n};\n","import { IError } from '../../common-types/IError';\nimport { IHash } from '../../common-types/IHash';\nimport { IIDentifyUserResult, ILinkExtraParams, ISubscribeResult } from '../../sharedFlowTypes/OneClickTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { replaceUrlParam } from '../../utilities/replaceUrlParam';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { oneClickSubscribe } from './api';\n\nexport const additionalQueryString = `msisdnSubmitted=Y&legalCheckbox=Y&incentivizedCheckbox=Y&op_confirmCheckbox=N`;\n\nconst fetchJsonp: <T>(_url: string) => Promise<T> = (_url: string) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n // @ts-ignore\n window[ouisys_callback_function] = (arg) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\n\nexport const getRedirectUrl = async ({\n window,\n maybeConfig,\n extraParams\n}: {\n window: Window;\n maybeConfig: IConfig;\n extraParams?: ILinkExtraParams;\n}): Promise<{\n subscription_url?: string;\n redirect_url?: string;\n action?: () => Promise<string>;\n}> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-throw-literal, no-script-url\n throw \"javascript: console.error('SSR'); void 6\";\n } else {\n const { country, slug, queryString, apiAction } = maybeConfig;\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n let search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n Object.keys(extraParams).forEach((element, index) => {\n // Check if search already has query parameters\n if (search.length > 0) {\n // If there are existing parameters, add '&' before appending the new one\n search += '&';\n }\n search = `${replaceUrlParam(search, element, extraParams[element])}${index === 1 ? '&' : ''}`;\n });\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (apiAction === 'identify-user') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=identify-user&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetchJsonp<IIDentifyUserResult>(url);\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n action: () => subscribe(result.subscription_url)\n };\n }\n } else if (apiAction === 'he') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=he&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n loadScriptInnerHtml(result.source);\n return { redirect_url: result.redirectUrlWithReplacedUniqid };\n }\n } else {\n if (country.toLowerCase() === 'om') {\n const searchObj = searchToObject(window) as {\n redirect_url: string;\n url: string;\n msisdn: string;\n success: 'true' | 'false';\n };\n if (searchObj.success === 'false') {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: searchObj.redirect_url || searchObj.url };\n }\n }\n const url = `/tallyman/v1/?action=redirect&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&page=${encodeURIComponent(\n window?.location?.href\n )}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: result.redirect_url };\n }\n }\n }\n};\n\nexport const subscribe: (url: string, extraParams?: IHash) => Promise<string> = async (\n url: string,\n extraParams?: IHash\n) => {\n const result: ISubscribeResult = await oneClickSubscribe({\n window,\n extraParams,\n url\n });\n\n if (result.success === false) {\n const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as {\n productUrl: string;\n } & IError;\n subscribeError.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'SubscriptionError';\n subscribeError.productUrl = result.product_url ? result.product_url : '';\n throw subscribeError;\n } else {\n return result.product_url || result.redirect_url;\n }\n};\n\nexport const getRedirectUrlBupperWay = async (\n window: Window,\n maybeConfig: IConfig,\n extraParams?: ILinkExtraParams\n): Promise<string> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-script-url\n return \"javascript: console.error('SSR'); void 6\";\n }\n const { country, slug, queryString } = maybeConfig;\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // one click flow must use http not https\n const xcid = window.location.href.split('/')[3].split('?')[0];\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const host = (window as Window).DEV_BASE_URL_BUPPER || '';\n return `${host}/${bupperizeCountry(country)}/${slug}?offer=${offer}&atmobirun=1&rockman_id=${\n window.pac_analytics.visitor.rockmanId\n }&redirPixels=${window.location.host}&sam_evina_tid=${evinaTid}&x-xcid=${xcid}${extraParamsQs}&${search}`;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n AJAXSUBSCRIBEState,\n GETREDIRECTUrlState,\n IGETREDIRECTURLFailure,\n OneClickFlowState,\n SubscribeFailure\n} from '../../sharedFlowTypes/OneClickTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { addEmpelloToken } from '../../utilities/addEmpelloToken';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { getRedirectUrl, getRedirectUrlBupperWay, subscribe } from './main';\n\nexport const mockedRedirectUrlSuccessState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n // @ts-ignore\n result: RDS.Success<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>({ redirectUrl: '/product' })\n }\n};\n\nexport const mockedSubscribeAjaxState: OneClickFlowState = {\n currentState: {\n type: 'SUBCRIBE_AJAX',\n // @ts-ignore\n result: RDS.NothingYet()\n }\n};\n\nconst defaultInitialState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'redirect-url-success-state':\n return mockedRedirectUrlSuccessState;\n case 'subscribe-ajax-state':\n return mockedSubscribeAjaxState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface GetRedirectUrlArgs {\n window: Window;\n extraParams?: IHash;\n autoRedirect?: boolean;\n isGetRedirectBupperWay?: boolean;\n ignoreUrlParams?: boolean;\n}\n/**\n * getRedirectUrlAction\n * @returns {type: ' 'oneClickFlow/getRedirectUrlAction', payload: {type: PossibleTypes, result: GETREDIRECTUrlState}}\n \n * Calls redirect api to get a redirect url for the user to be redirected to\n * Can also create a bupper redirect url\n */\nexport const getRedirectUrlAction = createAsyncThunk<\n GETREDIRECTUrlState,\n GetRedirectUrlArgs,\n {\n rejectValue: IGETREDIRECTURLFailure;\n }\n>(\n 'oneClickFlow/getRedirectUrlAction',\n // @ts-ignore\n async ({ window, isGetRedirectBupperWay, extraParams, autoRedirect }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n return initialState.currentState;\n }\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n\n const { config, subscription_url, redirect_url, operator } = state.strategy.currentState.data;\n try {\n if (isGetRedirectBupperWay === true) {\n const redirectUrl = await getRedirectUrlBupperWay(window, config, {\n ...(operator && { operator }),\n ...extraParams\n });\n\n // add empellow token for specific country\n const updatedRedirectUrl = await addEmpelloToken({\n currentRedirectUrl: redirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: updatedRedirectUrl });\n if (window.isAutoFraudScreener === true) {\n // Wait for Evina to Check Fraud First\n const timer = setInterval(() => {\n if (window.isEvinaSessionChecked) {\n clearInterval(timer);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', {\n redirect_url: updatedRedirectUrl\n });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n }\n }, 100);\n } else if (autoRedirect === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { redirect_url: updatedRedirectUrl });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n }\n } else {\n if (subscription_url && subscription_url != null) {\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.NothingYet()\n };\n }\n if (redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url });\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: redirect_url\n })\n };\n }\n\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url');\n const { redirect_url: newRedirectUrl } = await getRedirectUrl({\n window,\n maybeConfig: config,\n extraParams: {\n ...(operator && { operator }),\n ...extraParams\n }\n });\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url-success');\n\n // add empellow token for specific country\n const updated_redirect_url = await addEmpelloToken({\n currentRedirectUrl: newRedirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { updated_redirect_url });\n\n if (autoRedirect === true || window.isAutoFraudScreener === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { updated_redirect_url });\n\n setTimeout(() => {\n // eslint-disable-next-line camelcase\n window.location.href = updated_redirect_url;\n }, 0);\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updated_redirect_url\n })\n };\n }\n }\n } catch (ex) {\n console.warn(ex);\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString()\n });\n }\n }\n);\n\n/**\n * subscribeUrlAction\n * @returns {type: ' 'oneClickFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls oneclick subscripe api to subscribe the user\n * Returns a product url\n */\ninterface OneClickSubscribeArgs {\n window: Window;\n autoRedirect?: boolean;\n extraParams?: IHash;\n}\nexport const subscribeUrlAction = createAsyncThunk<\n AJAXSUBSCRIBEState,\n OneClickSubscribeArgs,\n {\n rejectValue: SubscribeFailure;\n }\n>('oneClickFlow/subscribeUrlAction', async ({ window, autoRedirect, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { subscription_url } = state.strategy.currentState.data;\n try {\n // Start Call to Subscribe ajax\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe');\n const product_url = await await subscribe(subscription_url, extraParams);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe-success', { product_url });\n // End Call to Subscribe ajax\n\n if (autoRedirect === true) {\n tracker.customEvent('Flow', 'advance-auto', 'click-product-url', { product_url });\n window.location.href = product_url;\n }\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Success({\n productUrl: product_url\n })\n };\n } catch (ex) {\n console.warn(ex);\n\n tracker.recedeInFlow('tallyman.v1-one-click', 'click-subscribe-failure', { error: ex.toString() });\n\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString(),\n productUrl: ex.productUrl\n });\n }\n});\n\nconst oneClickFlowSlice = createSlice({\n name: 'oneClickFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getRedirectUrlAction.pending, (state) => {\n state.currentState = { type: 'GET_REDIRECT_URL', result: RDS.Loading() };\n })\n .addCase(getRedirectUrlAction.fulfilled, (state, action: PayloadAction<GETREDIRECTUrlState>) => {\n state.currentState = action.payload;\n })\n .addCase(getRedirectUrlAction.rejected, (state, action: PayloadAction<IGETREDIRECTURLFailure>) => {\n state.currentState = {\n type: 'GET_REDIRECT_URL',\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(subscribeUrlAction.pending, (state) => {\n state.currentState = { type: 'SUBCRIBE_AJAX', result: RDS.Loading() };\n })\n .addCase(subscribeUrlAction.fulfilled, (state, action: PayloadAction<AJAXSUBSCRIBEState>) => {\n state.currentState = action.payload;\n })\n .addCase(subscribeUrlAction.rejected, (state, action: PayloadAction<SubscribeFailure>) => {\n state.currentState = {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: oneClickFlowReducer, actions: oneClickFlowActions } = oneClickFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectOneClickFlowState = (state: any) => state.oneClickFlow;\n"],"names":["useOneClickFlowState","useSelector","state","oneClickFlow","currentState","oneClickFlowMatch","_a","getRedirectUrl","subscribe","type","result","addEmpelloToken","currentRedirectUrl","country","toLowerCase","Promise","resolve","checkEmpelloAvailability","setInterval","window","Empello","clearInterval","_b","sent","getToken","empelloToken","token","updateUrlParameter","oneClickSubscribe","extraParams","url","evinaTid","tid","isCleanTraffic","shouldBlock","antifraudId","antifraud_id","extraParamsQs","Object","entries","map","__read","key","value","concat","encodeURIComponent","join","baseURL","params","__assign","sam_evina_tid","fromEntries","URLSearchParams","queryParams","toString","resultUrl","fetch","json","console","error","error_1","fetchJsonp","_url","ouisys_callback_function","Math","floor","random","reject","arg","indexOf","script","document","createElement","src","id","body","appendChild","onerror","Error","maybeConfig","slug","queryString","apiAction","offer","pac_analytics","visitor","s","location","search","substr","search_1","length","k","v","keys","forEach","element","index","paramName","paramValue","pattern","RegExp","replace","newUrl","replaceUrlParam","rockmanId","host","DEV_BASE_URL","bupperizeCountry","result_1","_c","success","identifyError","message","subscription_url","redirect_url","action","then","x","loadScriptInnerHtml","source","redirectUrlWithReplacedUniqid","searchObj","searchToObject","href","__awaiter","subscribeError","productUrl","product_url","getRedirectUrlBupperWay","xcid","split","DEV_BASE_URL_BUPPER","mockedRedirectUrlSuccessState","RDS.Success","redirectUrl","mockedSubscribeAjaxState","RDS.NothingYet","defaultInitialState","initialState","setInitialState","getRedirectUrlAction","createAsyncThunk","isGetRedirectBupperWay","autoRedirect","getState","rejectWithValue","_f","_d","strategy","_e","data","config","errorType","operator","_g","updatedRedirectUrl_1","tracker","customEvent","isAutoFraudScreener","advancedInFlow","setTimeout","timer_1","isEvinaSessionChecked","newRedirectUrl","updated_redirect_url_1","updated_redirect_url","warn","ex_1","recedeInFlow","subscribeUrlAction","ex_2","oneClickFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","oneClickFlowReducer","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oneClickFlow.js","sources":["../src/flows/oneClickFlow/hooks/useOneClickFlowState.ts","../src/flows/oneClickFlow/match.ts","../src/utilities/addEmpelloToken.ts","../src/utilities/replaceUrlParam.ts","../src/flows/oneClickFlow/api.ts","../src/flows/oneClickFlow/main.ts","../src/flows/oneClickFlow/oneClickFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useOneClickFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.oneClickFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IGETREDIRECTURLFailure,\n IGETREDIRECTURLSuccess,\n OneClickFlowCurrentState,\n SubscribeFailure,\n SubscribeSuccess\n} from '../../sharedFlowTypes/OneClickTypes';\n\nfunction oneClickFlowMatch<R>({\n getRedirectUrl,\n subscribe\n}: {\n getRedirectUrl: (rds: RDS.RemoteDataState<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>) => R;\n subscribe?: (rds: RDS.RemoteDataState<SubscribeFailure, SubscribeSuccess>) => R;\n}): (state: OneClickFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'GET_REDIRECT_URL':\n return getRedirectUrl(state.result);\n case 'SUBCRIBE_AJAX':\n return subscribe(state.result);\n default:\n // TODO - this should be an error or something\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return getRedirectUrl(state.result);\n }\n };\n}\n\nexport { oneClickFlowMatch };\n","import { updateUrlParameter } from '../pacman/queryString';\n\nexport async function addEmpelloToken({\n currentRedirectUrl,\n country\n}: {\n currentRedirectUrl: string;\n country: string;\n}) {\n if (country.toLowerCase() === 'pe') {\n // Empello script is added on server\n\n await new Promise<void>((resolve) => {\n // check if empello script is loaded and available\n const checkEmpelloAvailability = setInterval(() => {\n if (window.Empello) {\n clearInterval((checkEmpelloAvailability as unknown) as number);\n resolve();\n }\n }, 100);\n });\n if (typeof window !== 'undefined' && window.Empello) {\n // call getToken function from empello\n const token = await new Promise<string>((resolve) => {\n window.Empello?.getToken((empelloToken: string) => {\n resolve(empelloToken);\n });\n });\n\n const url = updateUrlParameter(currentRedirectUrl, 'empello_token', token);\n return url;\n }\n }\n\n return currentRedirectUrl;\n}\n","export const replaceUrlParam = (url: string, paramName: string, paramValue = '') => {\n const pattern = new RegExp(`\\\\b(${paramName}=).*?(&|#|$)`);\n if (url.search(pattern) >= 0) {\n return url.replace(pattern, `$1${paramValue}$2`);\n }\n const newUrl = url.replace(/[?#]$/, '');\n return `${newUrl + paramName}=${paramValue}&`;\n};\n","import { IHash } from '../../common-types/IHash';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const getRedirectAPI = () => {};\n\nconst getUrlWithParams = (baseURL: string, params: IHash) => {\n const queryParams = new URLSearchParams(params).toString();\n return `${baseURL}${queryParams}`;\n};\n\nexport const oneClickSubscribe = async ({\n window,\n extraParams,\n url\n}: {\n window: Window;\n extraParams?: IHash;\n url: string;\n}) => {\n const evinaTid = window?.tid || '';\n const isCleanTraffic = window?.shouldBlock ? 'false' : 'true';\n const antifraudId = window?.antifraud_id || '';\n\n const extraParamsQs = Object.entries(extraParams || {})\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n try {\n const resultUrl = getUrlWithParams(url, {\n sam_evina_tid: evinaTid,\n antifraud_id: antifraudId,\n 'is-clean-traffic': isCleanTraffic,\n ...Object.fromEntries(new URLSearchParams(extraParamsQs))\n });\n\n const response = await fetch(resultUrl);\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error fetching subscription:', error);\n throw error; // Rethrow or handle error as needed\n }\n};\n","import { IError } from '../../common-types/IError';\nimport { IHash } from '../../common-types/IHash';\nimport { IIDentifyUserResult, ILinkExtraParams, ISubscribeResult } from '../../sharedFlowTypes/OneClickTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { replaceUrlParam } from '../../utilities/replaceUrlParam';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { oneClickSubscribe } from './api';\n\nexport const additionalQueryString = `msisdnSubmitted=Y&legalCheckbox=Y&incentivizedCheckbox=Y&op_confirmCheckbox=N`;\n\nconst fetchJsonp: <T>(_url: string) => Promise<T> = (_url: string) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n // @ts-ignore\n window[ouisys_callback_function] = (arg) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\n\nexport const getRedirectUrl = async ({\n window,\n maybeConfig,\n extraParams\n}: {\n window: Window;\n maybeConfig: IConfig;\n extraParams?: ILinkExtraParams;\n}): Promise<{\n subscription_url?: string;\n redirect_url?: string;\n action?: () => Promise<string>;\n}> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-throw-literal, no-script-url\n throw \"javascript: console.error('SSR'); void 6\";\n } else {\n const { country, slug, queryString, apiAction } = maybeConfig;\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n let search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n Object.keys(extraParams).forEach((element, index) => {\n // Check if search already has query parameters\n if (search.length > 0) {\n // If there are existing parameters, add '&' before appending the new one\n search += '&';\n }\n search = `${replaceUrlParam(search, element, extraParams[element])}${index === 1 ? '&' : ''}`;\n });\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (apiAction === 'identify-user') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=identify-user&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetchJsonp<IIDentifyUserResult>(url);\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n action: () => subscribe(result.subscription_url)\n };\n }\n } else if (apiAction === 'he') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=he&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n loadScriptInnerHtml(result.source);\n return { redirect_url: result.redirectUrlWithReplacedUniqid };\n }\n } else {\n if (country.toLowerCase() === 'om') {\n const searchObj = searchToObject(window) as {\n redirect_url: string;\n url: string;\n msisdn: string;\n success: 'true' | 'false';\n };\n if (searchObj.success === 'false') {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: searchObj.redirect_url || searchObj.url };\n }\n }\n const url = `/tallyman/v1/?action=redirect&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&page=${encodeURIComponent(\n window?.location?.href\n )}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: result.redirect_url };\n }\n }\n }\n};\n\nexport const subscribe: (url: string, extraParams?: IHash) => Promise<string> = async (\n url: string,\n extraParams?: IHash\n) => {\n const result: ISubscribeResult = await oneClickSubscribe({\n window,\n extraParams,\n url\n });\n\n if (result.success === false) {\n const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as {\n productUrl: string;\n } & IError;\n subscribeError.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'SubscriptionError';\n subscribeError.productUrl = result.product_url ? result.product_url : '';\n throw subscribeError;\n } else {\n return result.product_url || result.redirect_url;\n }\n};\n\nexport const getRedirectUrlBupperWay = async (\n window: Window,\n maybeConfig: IConfig,\n extraParams?: ILinkExtraParams\n): Promise<string> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-script-url\n return \"javascript: console.error('SSR'); void 6\";\n }\n const { country, slug, queryString } = maybeConfig;\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // one click flow must use http not https\n const xcid = window.location.href.split('/')[3].split('?')[0];\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const baseHostBupper = window?.pac_analytics?.visitor?.bupperRedirectHost\n ? window.atob(window?.pac_analytics?.visitor?.bupperRedirectHost)\n : null;\n const host = baseHostBupper || (window as Window).DEV_BASE_URL_BUPPER || '';\n\n return `${host}/${bupperizeCountry(country)}/${slug}?offer=${offer}&atmobirun=1&rockman_id=${\n window.pac_analytics.visitor.rockmanId\n }&redirPixels=${window.location.host}&sam_evina_tid=${evinaTid}&x-xcid=${xcid}${extraParamsQs}&${search}`;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n AJAXSUBSCRIBEState,\n GETREDIRECTUrlState,\n IGETREDIRECTURLFailure,\n OneClickFlowState,\n SubscribeFailure\n} from '../../sharedFlowTypes/OneClickTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { addEmpelloToken } from '../../utilities/addEmpelloToken';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { getRedirectUrl, getRedirectUrlBupperWay, subscribe } from './main';\n\nexport const mockedRedirectUrlSuccessState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n // @ts-ignore\n result: RDS.Success<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>({ redirectUrl: '/product' })\n }\n};\n\nexport const mockedSubscribeAjaxState: OneClickFlowState = {\n currentState: {\n type: 'SUBCRIBE_AJAX',\n // @ts-ignore\n result: RDS.NothingYet()\n }\n};\n\nconst defaultInitialState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'redirect-url-success-state':\n return mockedRedirectUrlSuccessState;\n case 'subscribe-ajax-state':\n return mockedSubscribeAjaxState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface GetRedirectUrlArgs {\n window: Window;\n extraParams?: IHash;\n autoRedirect?: boolean;\n isGetRedirectBupperWay?: boolean;\n ignoreUrlParams?: boolean;\n}\n/**\n * getRedirectUrlAction\n * @returns {type: ' 'oneClickFlow/getRedirectUrlAction', payload: {type: PossibleTypes, result: GETREDIRECTUrlState}}\n \n * Calls redirect api to get a redirect url for the user to be redirected to\n * Can also create a bupper redirect url\n */\nexport const getRedirectUrlAction = createAsyncThunk<\n GETREDIRECTUrlState,\n GetRedirectUrlArgs,\n {\n rejectValue: IGETREDIRECTURLFailure;\n }\n>(\n 'oneClickFlow/getRedirectUrlAction',\n // @ts-ignore\n async ({ window, isGetRedirectBupperWay, extraParams, autoRedirect }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n return initialState.currentState;\n }\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n\n const { config, subscription_url, redirect_url, operator } = state.strategy.currentState.data;\n try {\n if (isGetRedirectBupperWay === true) {\n const redirectUrl = await getRedirectUrlBupperWay(window, config, {\n ...(operator && { operator }),\n ...extraParams\n });\n\n // add empellow token for specific country\n const updatedRedirectUrl = await addEmpelloToken({\n currentRedirectUrl: redirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: updatedRedirectUrl });\n if (window.isAutoFraudScreener === true) {\n // Wait for Evina to Check Fraud First\n const timer = setInterval(() => {\n if (window.isEvinaSessionChecked) {\n clearInterval(timer);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', {\n redirect_url: updatedRedirectUrl\n });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n }\n }, 100);\n } else if (autoRedirect === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { redirect_url: updatedRedirectUrl });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n }\n } else {\n if (subscription_url && subscription_url != null) {\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.NothingYet()\n };\n }\n if (redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url });\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: redirect_url\n })\n };\n }\n\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url');\n const { redirect_url: newRedirectUrl } = await getRedirectUrl({\n window,\n maybeConfig: config,\n extraParams: {\n ...(operator && { operator }),\n ...extraParams\n }\n });\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url-success');\n\n // add empellow token for specific country\n const updated_redirect_url = await addEmpelloToken({\n currentRedirectUrl: newRedirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { updated_redirect_url });\n\n if (autoRedirect === true || window.isAutoFraudScreener === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { updated_redirect_url });\n\n setTimeout(() => {\n // eslint-disable-next-line camelcase\n window.location.href = updated_redirect_url;\n }, 0);\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updated_redirect_url\n })\n };\n }\n }\n } catch (ex) {\n console.warn(ex);\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString()\n });\n }\n }\n);\n\n/**\n * subscribeUrlAction\n * @returns {type: ' 'oneClickFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls oneclick subscripe api to subscribe the user\n * Returns a product url\n */\ninterface OneClickSubscribeArgs {\n window: Window;\n autoRedirect?: boolean;\n extraParams?: IHash;\n}\nexport const subscribeUrlAction = createAsyncThunk<\n AJAXSUBSCRIBEState,\n OneClickSubscribeArgs,\n {\n rejectValue: SubscribeFailure;\n }\n>('oneClickFlow/subscribeUrlAction', async ({ window, autoRedirect, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { subscription_url } = state.strategy.currentState.data;\n try {\n // Start Call to Subscribe ajax\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe');\n const product_url = await await subscribe(subscription_url, extraParams);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe-success', { product_url });\n // End Call to Subscribe ajax\n\n if (autoRedirect === true) {\n tracker.customEvent('Flow', 'advance-auto', 'click-product-url', { product_url });\n window.location.href = product_url;\n }\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Success({\n productUrl: product_url\n })\n };\n } catch (ex) {\n console.warn(ex);\n\n tracker.recedeInFlow('tallyman.v1-one-click', 'click-subscribe-failure', { error: ex.toString() });\n\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString(),\n productUrl: ex.productUrl\n });\n }\n});\n\nconst oneClickFlowSlice = createSlice({\n name: 'oneClickFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getRedirectUrlAction.pending, (state) => {\n state.currentState = { type: 'GET_REDIRECT_URL', result: RDS.Loading() };\n })\n .addCase(getRedirectUrlAction.fulfilled, (state, action: PayloadAction<GETREDIRECTUrlState>) => {\n state.currentState = action.payload;\n })\n .addCase(getRedirectUrlAction.rejected, (state, action: PayloadAction<IGETREDIRECTURLFailure>) => {\n state.currentState = {\n type: 'GET_REDIRECT_URL',\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(subscribeUrlAction.pending, (state) => {\n state.currentState = { type: 'SUBCRIBE_AJAX', result: RDS.Loading() };\n })\n .addCase(subscribeUrlAction.fulfilled, (state, action: PayloadAction<AJAXSUBSCRIBEState>) => {\n state.currentState = action.payload;\n })\n .addCase(subscribeUrlAction.rejected, (state, action: PayloadAction<SubscribeFailure>) => {\n state.currentState = {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: oneClickFlowReducer, actions: oneClickFlowActions } = oneClickFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectOneClickFlowState = (state: any) => state.oneClickFlow;\n"],"names":["useOneClickFlowState","useSelector","state","oneClickFlow","currentState","oneClickFlowMatch","_a","getRedirectUrl","subscribe","type","result","addEmpelloToken","currentRedirectUrl","country","toLowerCase","Promise","resolve","checkEmpelloAvailability","setInterval","window","Empello","clearInterval","_b","sent","getToken","empelloToken","token","updateUrlParameter","oneClickSubscribe","extraParams","url","evinaTid","tid","isCleanTraffic","shouldBlock","antifraudId","antifraud_id","extraParamsQs","Object","entries","map","__read","key","value","concat","encodeURIComponent","join","baseURL","params","__assign","sam_evina_tid","fromEntries","URLSearchParams","queryParams","toString","resultUrl","fetch","json","console","error","error_1","fetchJsonp","_url","ouisys_callback_function","Math","floor","random","reject","arg","indexOf","script","document","createElement","src","id","body","appendChild","onerror","Error","maybeConfig","slug","queryString","apiAction","offer","pac_analytics","visitor","s","location","search","substr","search_1","length","k","v","keys","forEach","element","index","paramName","paramValue","pattern","RegExp","replace","newUrl","replaceUrlParam","rockmanId","host","DEV_BASE_URL","bupperizeCountry","result_1","_c","success","identifyError","message","subscription_url","redirect_url","action","then","x","loadScriptInnerHtml","source","redirectUrlWithReplacedUniqid","searchObj","searchToObject","href","__awaiter","subscribeError","productUrl","product_url","getRedirectUrlBupperWay","xcid","split","baseHostBupper","bupperRedirectHost","atob","_d","DEV_BASE_URL_BUPPER","mockedRedirectUrlSuccessState","RDS.Success","redirectUrl","mockedSubscribeAjaxState","RDS.NothingYet","defaultInitialState","initialState","setInitialState","getRedirectUrlAction","createAsyncThunk","isGetRedirectBupperWay","autoRedirect","getState","rejectWithValue","_f","strategy","_e","data","config","errorType","operator","_g","updatedRedirectUrl_1","tracker","customEvent","isAutoFraudScreener","advancedInFlow","setTimeout","timer_1","isEvinaSessionChecked","newRedirectUrl","updated_redirect_url_1","updated_redirect_url","warn","ex_1","recedeInFlow","subscribeUrlAction","ex_2","oneClickFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","oneClickFlowReducer","reducer","actions"],"mappings":"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"}
|