ouisys-engine 5.0.82 → 5.0.84
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 n,createSlice as a}from"@reduxjs/toolkit";import{S as
|
|
1
|
+
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as o,L as i,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l}from"./loadScriptInnerHtml-DzB_RpFU.js";import{searchToObject as d}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var v=function(n){var a=n.window,o=n.slug,i=n.country,c=n.msisdn,s=n.device,l=n.offer,d=n.rockmanId,u=n.ip_range_name,v=n.search,m=n.extraParamsQs,f=n.email,y=n.password;return e(void 0,void 0,void 0,(function(){var e,n,p,g,w,_;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:o,country:i,device:s,offerId:l.toString(),rockman_id:d,page:encodeURIComponent(a.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(_=null===(w=null===(g=a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===w?void 0:w.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:d}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),f&&y?{email:f,password:y}:{msisdn:c}),m&&{extraParams:m})).toString(),n=a.DEV_BASE_URL||"",p="".concat(n,"/tallyman/v1/?").concat(e),[2,fetch(p).then((function(e){return e.json()}))]}))}))},m=function(n){var a=n.window,o=n.userDetails,i=n.extraConfig;return e(void 0,void 0,void 0,(function(){var e,n,c,s,l,u,v;return r(this,(function(r){return e="cc_number"in o,n=a.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(n,"/api/v1"),"/frontend/initiate-payment-generic",s=d(a),l=t(t(t({rockman_id:null===(v=a.pac_analytics.visitor)||void 0===v?void 0:v.rockmanId,landing_page_url:a.location.href,service_id:e?null==i?void 0:i.serviceId:"2"},(null==i?void 0:i.slug)?{slug:"".concat(null==i?void 0:i.slug).concat((null==s?void 0:s.d_country)||"")}:{}),e?{}:{user_agent:a.navigator.userAgent,ip:a.pac_analytics.visitor.ip}),o),u={method:"POST",headers:new Headers({"Content-Type":"application/json"}),body:JSON.stringify(l)},[2,fetch("".concat(c).concat("/frontend/initiate-payment-generic"),u).then((function(e){return e.json()}))]}))}))};function f(t,n,a){var o,i,c,s,l;return e(this,void 0,void 0,(function(){var e,d,u,f,y,p,g,w,_,h,S,I;return r(this,(function(r){switch(r.label){case 0:return e=n.slug,d=n.country,u=n.device,f=n.serviceId,y=t.location.search.substr(1)||"",p=t.pac_analytics.visitor,g=p.rockmanId,w={serviceId:f,slug:e},(null===(c=null===(i=null===(o=null==t?void 0:t.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===i?void 0:i.page)||void 0===c?void 0:c.includes("agency"))?[4,v({window:t,slug:e,country:d,device:u,offer:null===(l=null===(s=null==t?void 0:t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===l?void 0:l.offer,rockmanId:g,email:null==a?void 0:a.email,password:null==a?void 0:a.password,search:y})]:[3,2];case 1:return h=r.sent(),[3,4];case 2:return[4,m({window:t,userDetails:a,extraConfig:w})];case 3:h=r.sent(),r.label=4;case 4:if(!1===(_=h).success)throw S="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":_.message,(I=new Error("".concat(S,":\n").concat(_.message))).type=S,I.errorId=_.errorId,console.error(I),I;return[2,{gateway_url:_.gateway_url||_.redirect_url,method:_.redirect_url?"redirection":_.method,html:_.html}]}}))}))}var y={currentState:{type:"USER_DETAILS_ENTRY",result:o({gateway_url:"https://www.google.com",method:"jslink"})}},p={currentState:{type:"USER_DETAILS_ENTRY",result:c({errorType:"AlreadySubscribed",error:"Already Subscribed"})}},g={currentState:{type:"USER_DETAILS_ENTRY",result:s()}},w=function(e){var r=d(e);if(!r["mock-flow"])return g;switch(r["current-state"]){case"user-details-entry-failure-state":return p;case"user-details-entry-success-state":return y;default:return console.error("Mock Flow not supported"),g}}(window),_=n("creditCardFlow/submitUserDetailsAction",(function(t,n){var a=t.window,i=t.userDetails,c=n.getState,s=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,n,d,v,m,y,p,g,w,_;return r(this,(function(r){switch(r.label){case 0:if(e=c(),!(null===(_=null===(w=null===(g=null==e?void 0:e.strategy)||void 0===g?void 0:g.currentState)||void 0===w?void 0:w.data)||void 0===_?void 0:_.config))return[2,s({errorType:"UnexpectedState"})];t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,3,,4]),u.advancedInFlow("tallyman.v1-credit-card","cc-form-submitted",{email:null==i?void 0:i.email}),[4,f(a,t,i)];case 2:return n=r.sent(),d=n.gateway_url,v=n.method,m=n.html,u.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==i?void 0:i.email,gateway_url:d}),"jslink"===v&&d&&(u.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:d}),function(e){var r=e.url,t=e.key,n=e.isRecaptcha,a=void 0!==n&&n,o=e.callBack,i=e.id,c=void 0===i?"":i,s=document.createElement("script");s.type="text/javascript",s.src=r,s.id="injected_script_".concat(c);var d=document.getElementsByTagName("head")[0];d.insertBefore(s,d.firstChild),a&&(s.onload=function(){var e='\n grecaptcha.ready(function() {\n grecaptcha.execute("'.concat(t,'", {action: \'submit\'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log("-------" + token);\n });\n });\n ');l(e,!0)}),s.onerror=function(){console.error("Error loading script",r),o&&o()}}({id:"ecardon-credit-card",url:d,callBack:function(){u.advancedInFlow("tallyman.v1-credit-card","load-script-success",{gateway_url:d})}})),"redirection"===v&&d&&(u.customEvent("Flow","advance-auto","redirect-success",{redirect_url:d}),a.location.href=d),"html"===v&&m&&u.advancedInFlow("tallyman.v1-credit-card","get-html-success"),[2,{type:"USER_DETAILS_ENTRY",result:o({gateway_url:d,method:v,html:m})}];case 3:switch(y=r.sent(),console.warn(y),p=void 0,y.type){case"AlreadySubscribed":p="AlreadySubscribed";break;case"InvalidUserDetails":p="InvalidUserDetails";break;default:p="UnknownError"}return u.recedeInFlow("tallyman.v1-credit-card","cc-form-submission-failure",{email:null==i?void 0:i.email,errorType:p||y.type,errorId:(null==y?void 0:y.errorId)||""}),[2,s({errorType:p,error:y.toString(),errorId:(null==y?void 0:y.errorId)||""})];case 4:return[2]}}))}))})),h=a({name:"creditCardFlow",initialState:w,reducers:{},extraReducers:function(e){e.addCase(_.pending,(function(e){e.currentState={type:"USER_DETAILS_ENTRY",result:i()}})).addCase(_.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(_.rejected,(function(e,r){e.currentState={type:"USER_DETAILS_ENTRY",result:c(r.payload)}}))}}),S=h.reducer;h.actions;var I=function(e){return e((function(e){return e.creditCardFlow.currentState}))};function E(e){var r=e.userDetailsEntry;return function(e){return e.type,r(e.result)}}export{E as creditCardFlowMatch,S as creditCardFlowReducer,_ as submitUserDetailsAction,I as useCreditCardFlowState};
|
|
2
2
|
//# sourceMappingURL=creditCardFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditCardFlow.js","sources":["../src/utilities/loadScriptSrc.ts","../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { loadScriptInnerHtml } from './loadScriptInnerHtml';\n\n/**\n * Loads a script from the specified URL and optionally executes a reCAPTCHA if the `isRecaptcha` flag is set.\n *\n * @param {Object} options - An object containing the following properties:\n * - {string} url: The URL of the script to load.\n * - {string} [key]: The reCAPTCHA key to use for execution. (Optional)\n * - {boolean} [isRecaptcha]: Flag indicating whether to execute a reCAPTCHA. Defaults to false.\n * - {function} [callBack]: A callback function to be called if there is an error loading the script. (Optional)\n * - {string} [id]: The ID to assign to the injected script. Defaults to an empty string.\n * @return {void}\n */\nconst loadScriptSrc = ({\n url,\n key,\n isRecaptcha = false,\n callBack,\n id = ''\n}: {\n url: string;\n key?: string;\n isRecaptcha?: boolean;\n callBack?: () => void;\n id?: string;\n}) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n script.id = `injected_script_${id}`;\n const headElem = document.getElementsByTagName('head')[0];\n headElem.insertBefore(script, headElem.firstChild);\n\n if (isRecaptcha) {\n script.onload = () => {\n const scriptInner = `\n grecaptcha.ready(function() {\n grecaptcha.execute(\"${key}\", {action: 'submit'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log(\"-------\" + token);\n });\n });\n `;\n loadScriptInnerHtml(scriptInner, true);\n };\n }\n\n script.onerror = () => {\n console.error('Error loading script', url);\n if (callBack) {\n callBack();\n }\n };\n};\n\nexport default loadScriptSrc;\n","import { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: string; slug: string };\n}): Promise<IUserDetailsSubmissionResult> => {\n const isMaxPay = 'cc_number' in userDetails;\n const host = window.DEV_BASE_URL_CREDIT_CARD || '';\n const apiBaseURL = `${host}/api/v1`;\n const apiPath = '/frontend/initiate-payment-generic';\n const search = searchToObject(window) as any;\n // Common userDetails properties\n const commonDetails = {\n rockman_id: window.pac_analytics.visitor?.rockmanId,\n landing_page_url: window.location.href,\n // Use conditional operation for service_id as it varies\n service_id: isMaxPay ? extraConfig?.serviceId : '2',\n ...(extraConfig?.slug ? { slug: `${extraConfig?.slug}${search?.d_country || ''}` } : {}),\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n ...userDetails\n };\n\n const requestOptions = {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(commonDetails)\n };\n\n return fetch(`${apiBaseURL}${apiPath}`, requestOptions).then((response) => response.json());\n};\n\nexport { redirect, creditCardPayment };\n","import { IError } from '../../common-types/IError';\nimport { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { creditCardPayment, redirect } from './api';\n\nexport async function submitUserDetails(\n window: Window,\n config: IConfig,\n userDetails: IUserDetails | IUserDetailsEcardon\n): Promise<{\n method: string;\n gateway_url?: string;\n html?: string;\n}> {\n const { slug, country, device, serviceId } = config;\n const search = window.location.search.substr(1) || '';\n const { visitor } = window.pac_analytics;\n\n const { rockmanId } = visitor;\n const extraConfig = { serviceId, slug };\n const result: IUserDetailsSubmissionResult = window?.pac_analytics?.visitor?.page?.includes('agency')\n ? await redirect({\n window,\n slug,\n country,\n device,\n offer: window?.pac_analytics?.visitor?.offer,\n rockmanId,\n email: userDetails?.email,\n password: userDetails?.password,\n search\n })\n : await creditCardPayment({ window, userDetails, extraConfig });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return {\n gateway_url: result.gateway_url || result.redirect_url,\n method: result.redirect_url ? 'redirection' : result.method,\n html: result.html\n };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowState,\n IUserDetails,\n IUserDetailsEcardon,\n SubmitUserDetailsErrorTypes,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess,\n USERDETAILSEntryState\n} from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { submitUserDetails } from './main';\n\nconst mockedUserDetailsEntrySuccess: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n gateway_url: 'https://www.google.com',\n method: 'jslink'\n })\n }\n};\n\nconst mockedUserDetailsEntryFailure: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n errorType: 'AlreadySubscribed',\n error: 'Already Subscribed'\n })\n }\n};\n\nconst defaultInitialState: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'user-details-entry-failure-state':\n return mockedUserDetailsEntryFailure;\n case 'user-details-entry-success-state':\n return mockedUserDetailsEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitUserDetailsArgs {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n}\n/**\n * submitUserDetailsAction\n * @returns {type: ' 'pinFlow/submitUserDetailsAction', payload: {type: PossibleTypes, result: USERDETAILSEntryState}}\n \n * Calls redirect or max api and returns a url\n * \n */\nexport const submitUserDetailsAction = createAsyncThunk<\n USERDETAILSEntryState,\n SubmitUserDetailsArgs,\n {\n rejectValue: SubmitUserDetailsFailure;\n }\n>('creditCardFlow/submitUserDetailsAction', async ({ window, userDetails }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Credit Card API\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails?.email });\n const { gateway_url, method, html } = await submitUserDetails(window, config, userDetails);\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {\n email: userDetails?.email,\n gateway_url\n });\n // Start Credit Card API\n\n if (method === 'jslink' && gateway_url) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url });\n loadScriptSrc({\n id: 'ecardon-credit-card',\n url: gateway_url,\n callBack: () => {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url });\n }\n });\n }\n\n if (method === 'redirection' && gateway_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url });\n window.location.href = gateway_url;\n }\n\n if (method === 'html' && html) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'get-html-success');\n }\n return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method, html })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: SubmitUserDetailsErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidUserDetails':\n errorType = 'InvalidUserDetails';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {\n email: userDetails?.email,\n errorType: errorType || ex.type,\n errorId: ex?.errorId || ''\n });\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n errorId: ex?.errorId || ''\n });\n }\n});\n\nconst creditCardFlowSlice = createSlice({\n name: 'creditCardFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitUserDetailsAction.pending, (state) => {\n state.currentState = { type: 'USER_DETAILS_ENTRY', result: RDS.Loading() };\n })\n .addCase(submitUserDetailsAction.fulfilled, (state, action: PayloadAction<USERDETAILSEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitUserDetailsAction.rejected, (state, action: PayloadAction<SubmitUserDetailsFailure>) => {\n state.currentState = {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: creditCardFlowReducer, actions: creditCardFlowActions } = creditCardFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectCreditCardFlowState = (state: any) => state.creditCardFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useCreditCardFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.creditCardFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowCurrentState,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\n\nfunction creditCardFlowMatch<R>({\n userDetailsEntry\n}: {\n userDetailsEntry: (rds: RDS.RemoteDataState<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>) => R;\n}): (state: CreditCardFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'USER_DETAILS_ENTRY':\n return userDetailsEntry(state.result);\n default:\n // TODO - this should be an error or something\n return userDetailsEntry(state.result);\n }\n };\n}\n\nexport { creditCardFlowMatch };\n"],"names":["redirect","_a","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","searchToObject","commonDetails","landing_page_url","service_id","serviceId","d_country","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","success","type","message","error","Error","console","gateway_url","redirect_url","html","mockedUserDetailsEntrySuccess","currentState","RDS.Success","mockedUserDetailsEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","setInitialState","submitUserDetailsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","data","tracker","advancedInFlow","sent","gateway_url_1","key","isRecaptcha","callBack","id","script","document","createElement","src","headElem","getElementsByTagName","insertBefore","firstChild","onload","scriptInner","loadScriptInnerHtml","onerror","loadScriptSrc","customEvent","warn","ex_1","recedeInFlow","errorId","creditCardFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","creditCardFlowReducer","reducer","actions","useCreditCardFlowState","useSelector","creditCardFlow","creditCardFlowMatch","userDetailsEntry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"creditCardFlow.js","sources":["../src/utilities/loadScriptSrc.ts","../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { loadScriptInnerHtml } from './loadScriptInnerHtml';\n\n/**\n * Loads a script from the specified URL and optionally executes a reCAPTCHA if the `isRecaptcha` flag is set.\n *\n * @param {Object} options - An object containing the following properties:\n * - {string} url: The URL of the script to load.\n * - {string} [key]: The reCAPTCHA key to use for execution. (Optional)\n * - {boolean} [isRecaptcha]: Flag indicating whether to execute a reCAPTCHA. Defaults to false.\n * - {function} [callBack]: A callback function to be called if there is an error loading the script. (Optional)\n * - {string} [id]: The ID to assign to the injected script. Defaults to an empty string.\n * @return {void}\n */\nconst loadScriptSrc = ({\n url,\n key,\n isRecaptcha = false,\n callBack,\n id = ''\n}: {\n url: string;\n key?: string;\n isRecaptcha?: boolean;\n callBack?: () => void;\n id?: string;\n}) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n script.id = `injected_script_${id}`;\n const headElem = document.getElementsByTagName('head')[0];\n headElem.insertBefore(script, headElem.firstChild);\n\n if (isRecaptcha) {\n script.onload = () => {\n const scriptInner = `\n grecaptcha.ready(function() {\n grecaptcha.execute(\"${key}\", {action: 'submit'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log(\"-------\" + token);\n });\n });\n `;\n loadScriptInnerHtml(scriptInner, true);\n };\n }\n\n script.onerror = () => {\n console.error('Error loading script', url);\n if (callBack) {\n callBack();\n }\n };\n};\n\nexport default loadScriptSrc;\n","import { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: string; slug: string };\n}): Promise<IUserDetailsSubmissionResult> => {\n const isMaxPay = 'cc_number' in userDetails;\n const host = window.DEV_BASE_URL_CREDIT_CARD || '';\n const apiBaseURL = `${host}/api/v1`;\n const apiPath = '/frontend/initiate-payment-generic';\n const search = searchToObject(window) as any;\n // Common userDetails properties\n const commonDetails = {\n rockman_id: window.pac_analytics.visitor?.rockmanId,\n landing_page_url: window.location.href,\n // Use conditional operation for service_id as it varies\n service_id: isMaxPay ? extraConfig?.serviceId : '2',\n ...(extraConfig?.slug ? { slug: `${extraConfig?.slug}${search?.d_country || ''}` } : {}),\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n ...userDetails\n };\n\n const requestOptions = {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(commonDetails)\n };\n\n return fetch(`${apiBaseURL}${apiPath}`, requestOptions).then((response) => response.json());\n};\n\nexport { redirect, creditCardPayment };\n","import { IError } from '../../common-types/IError';\nimport { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { creditCardPayment, redirect } from './api';\n\nexport async function submitUserDetails(\n window: Window,\n config: IConfig,\n userDetails: IUserDetails | IUserDetailsEcardon\n): Promise<{\n method: string;\n gateway_url?: string;\n html?: string;\n}> {\n const { slug, country, device, serviceId } = config;\n const search = window.location.search.substr(1) || '';\n const { visitor } = window.pac_analytics;\n\n const { rockmanId } = visitor;\n const extraConfig = { serviceId, slug };\n const result: IUserDetailsSubmissionResult = window?.pac_analytics?.visitor?.page?.includes('agency')\n ? await redirect({\n window,\n slug,\n country,\n device,\n offer: window?.pac_analytics?.visitor?.offer,\n rockmanId,\n email: userDetails?.email,\n password: userDetails?.password,\n search\n })\n : await creditCardPayment({ window, userDetails, extraConfig });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n error.errorId = result.errorId;\n console.error(error);\n throw error;\n } else {\n return {\n gateway_url: result.gateway_url || result.redirect_url,\n method: result.redirect_url ? 'redirection' : result.method,\n html: result.html\n };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowState,\n IUserDetails,\n IUserDetailsEcardon,\n SubmitUserDetailsErrorTypes,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess,\n USERDETAILSEntryState\n} from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { submitUserDetails } from './main';\n\nconst mockedUserDetailsEntrySuccess: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n gateway_url: 'https://www.google.com',\n method: 'jslink'\n })\n }\n};\n\nconst mockedUserDetailsEntryFailure: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n errorType: 'AlreadySubscribed',\n error: 'Already Subscribed'\n })\n }\n};\n\nconst defaultInitialState: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'user-details-entry-failure-state':\n return mockedUserDetailsEntryFailure;\n case 'user-details-entry-success-state':\n return mockedUserDetailsEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitUserDetailsArgs {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n}\n/**\n * submitUserDetailsAction\n * @returns {type: ' 'pinFlow/submitUserDetailsAction', payload: {type: PossibleTypes, result: USERDETAILSEntryState}}\n \n * Calls redirect or max api and returns a url\n * \n */\nexport const submitUserDetailsAction = createAsyncThunk<\n USERDETAILSEntryState,\n SubmitUserDetailsArgs,\n {\n rejectValue: SubmitUserDetailsFailure;\n }\n>('creditCardFlow/submitUserDetailsAction', async ({ window, userDetails }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Credit Card API\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails?.email });\n const { gateway_url, method, html } = await submitUserDetails(window, config, userDetails);\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {\n email: userDetails?.email,\n gateway_url\n });\n // Start Credit Card API\n\n if (method === 'jslink' && gateway_url) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url });\n loadScriptSrc({\n id: 'ecardon-credit-card',\n url: gateway_url,\n callBack: () => {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url });\n }\n });\n }\n\n if (method === 'redirection' && gateway_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url });\n window.location.href = gateway_url;\n }\n\n if (method === 'html' && html) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'get-html-success');\n }\n return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method, html })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: SubmitUserDetailsErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidUserDetails':\n errorType = 'InvalidUserDetails';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {\n email: userDetails?.email,\n errorType: errorType || ex.type,\n errorId: ex?.errorId || ''\n });\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n errorId: ex?.errorId || ''\n });\n }\n});\n\nconst creditCardFlowSlice = createSlice({\n name: 'creditCardFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitUserDetailsAction.pending, (state) => {\n state.currentState = { type: 'USER_DETAILS_ENTRY', result: RDS.Loading() };\n })\n .addCase(submitUserDetailsAction.fulfilled, (state, action: PayloadAction<USERDETAILSEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitUserDetailsAction.rejected, (state, action: PayloadAction<SubmitUserDetailsFailure>) => {\n state.currentState = {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: creditCardFlowReducer, actions: creditCardFlowActions } = creditCardFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectCreditCardFlowState = (state: any) => state.creditCardFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useCreditCardFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.creditCardFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowCurrentState,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\n\nfunction creditCardFlowMatch<R>({\n userDetailsEntry\n}: {\n userDetailsEntry: (rds: RDS.RemoteDataState<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>) => R;\n}): (state: CreditCardFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'USER_DETAILS_ENTRY':\n return userDetailsEntry(state.result);\n default:\n // TODO - this should be an error or something\n return userDetailsEntry(state.result);\n }\n };\n}\n\nexport { creditCardFlowMatch };\n"],"names":["redirect","_a","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","searchToObject","commonDetails","landing_page_url","service_id","serviceId","d_country","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","success","type","message","error","Error","errorId","console","gateway_url","redirect_url","html","mockedUserDetailsEntrySuccess","currentState","RDS.Success","mockedUserDetailsEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","setInitialState","submitUserDetailsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","data","tracker","advancedInFlow","sent","gateway_url_1","key","isRecaptcha","callBack","id","script","document","createElement","src","headElem","getElementsByTagName","insertBefore","firstChild","onload","scriptInner","loadScriptInnerHtml","onerror","loadScriptSrc","customEvent","warn","ex_1","recedeInFlow","creditCardFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","creditCardFlowReducer","reducer","actions","useCreditCardFlowState","useSelector","creditCardFlow","creditCardFlowMatch","userDetailsEntry"],"mappings":"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"}
|