ouisys-engine 5.0.140 → 5.0.142
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/click2smsFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as t,__generator as r,__assign as
|
|
1
|
+
import{__awaiter as t,__generator as r,__assign as o}from"tslib";import{createAsyncThunk as e,createSlice as n}from"@reduxjs/toolkit";import{S as i,L as a,F as u,N as c}from"./RemoteDataState-lcf8PfJd.js";import{t as s}from"./tracker-DaaILhEr.js";import{c as l}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";var d=function(e){var n=e.window,i=e.country,a=e.slug,u=e.offer,c=e.rockmanId,s=e.keyword,d=e.operator,v=e.search;return t(void 0,void 0,void 0,(function(){var t,e,f,p,y,m,h;return r(this,(function(r){return v=l(v),t=new URLSearchParams(o(o({action:"oc2sms",country:i,slug:a,offerId:u.toString(),page:encodeURIComponent(n.location.href),device:"smart",rockman_id:c,ip_address:null===(y=null===(p=null==n?void 0:n.pac_analytics)||void 0===p?void 0:p.visitor)||void 0===y?void 0:y.ip,ip_range_operator:null===(h=null===(m=null==n?void 0:n.pac_analytics)||void 0===m?void 0:m.visitor)||void 0===h?void 0:h.ipRangeOperator},s&&{keyword:s}),d&&{operator:d})).toString(),e=n.DEV_BASE_URL||"",f="".concat(e,"/tallyman/v1/?").concat(t).concat(v?"&".concat(v):""),[2,fetch(f).then((function(t){return t.json()}))]}))}))};function v(e,n,i,a,u){return t(this,void 0,void 0,(function(){var t,u,c,s,l,v,f,p,y;return r(this,(function(r){switch(r.label){case 0:return n&&"keywordAndShortCode"===n.tag?(t=n.keyword,u=n.shortcode,[2,o({type:"SingleSubmissionResult"},{keyword:t,shortcode:u})]):(c=e.pac_analytics.visitor.offer,s=o({offer:e.pac_analytics.visitor.offer},n),l=s.country,v=s.slug,f=e.pac_analytics.visitor.rockmanId,p=e.location.search.substr(1)||"",[4,d({window:e,country:l,slug:v,offer:c,rockmanId:f,keyword:a,operator:i,search:p})]);case 1:if((y=r.sent()).success)return[2,o({type:"SingleSubmissionResult"},{keyword:"".concat(a||y.displayKeyword).concat(y.uid?" ".concat(y.uid):""),shortcode:y.shortcode})];throw y.message}}))}))}function f(e,n,i,a,u){return t(this,void 0,void 0,(function(){var u,c,s,l=this;return r(this,(function(d){switch(d.label){case 0:return u=Promise.all(i.map((function(i){return t(l,void 0,void 0,(function(){var t,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,v(e,n,i,a)];case 1:return t=r.sent(),[2,(s=o(o({},t),{operator:i}),{type:"right",value:s})];case 2:return u=r.sent(),[2,(c=u,{type:"left",value:c})];case 3:return[2]}var c,s}))}))}))),[4,Promise.resolve(u)];case 1:if((c=d.sent()).every((function(t){return"left"===t.type})))throw c[0].value;return s=[],c.map((function(t){if("right"===t.type){var r=t.value;s.push({keyword:null==r?void 0:r.keyword,shortcode:null==r?void 0:r.shortcode,operator:null==r?void 0:r.operator})}return t})),[2,{type:"MultiOperatorSubmissionResult",data:s}]}}))}))}var p=function(e,n,i,a){return t(void 0,void 0,void 0,(function(){return r(this,(function(t){return n&&"keywordAndShortCode"===n.tag?[2,o({type:"SingleSubmissionResult"},{keyword:n.keyword,shortcode:n.shortcode})]:n&&"keyword"===n.tag?[2,y(e,n,i)]:[2,y(e,n,null)]}))}))};function y(e,n,i,a){return t(this,void 0,void 0,(function(){var t,a;return r(this,(function(r){return!0===(t=o({offer:e.pac_analytics.visitor.offer},n)).automaticallySubmitAllOperators&&t.operators&&t.operators.length>0?[2,f(e,n,t.operators,i)]:(a=n.operators&&n.operators.length>0?n.operators[0]:null,[2,v(e,n,a,i)])}))}))}var m={currentState:{type:"LOAD_OC2SMS",result:c()}},h=e("click2Flow/loadOc2smsAction",(function(e,n){var a=e.window,u=n.getState,c=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,n,l,d,v,f,y,m;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(f=null===(v=null===(d=null==t?void 0:t.strategy)||void 0===d?void 0:d.currentState)||void 0===v?void 0:v.data)||void 0===f?void 0:f.config))return[2,c("UnexpectedState")];e=null===(m=null===(y=t.strategy.currentState)||void 0===y?void 0:y.data)||void 0===m?void 0:m.config,r.label=1;case 1:return r.trys.push([1,3,,4]),"keywordAndShortCode"===e.tag?[2,{type:"LOAD_OC2SMS",result:i(o({type:"SingleSubmissionResult"},e))}]:(s.customEvent("Flow","advance-auto","load-click2sms"),[4,p(a,e)]);case 2:return n=r.sent(),s.customEvent("Flow","advance-auto","loaded-click2sms",n),[2,{type:"LOAD_OC2SMS",result:i(n)}];case 3:return l=r.sent(),console.warn(l),s.customEvent("Flow","advance-auto","load-click2sms-failure",l.toString()),[2,c(l.toString())];case 4:return[2]}}))}))})),S=n({name:"click2smsFlow",initialState:m,reducers:{},extraReducers:function(t){t.addCase(h.pending,(function(t){t.currentState={type:"LOAD_OC2SMS",result:a()}})).addCase(h.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(h.rejected,(function(t,r){t.currentState={type:"LOAD_OC2SMS",result:u(r.payload)}}))}}),w=S.reducer;S.actions;var g=function(t){return t((function(t){return t.click2smsFlow.currentState}))},k=function(t){var r,o=t((function(t){return t.click2smsFlow.currentState}));return null===(r=null==o?void 0:o.result)||void 0===r?void 0:r.data};function _(t){var r=t.load;return function(t){return t.type,r(t.result)}}export{_ as click2smsFlowMatch,w as click2smsFlowReducer,h as loadOc2smsAction,g as useClick2smsFlowState,k as useKeyWordShortCode};
|
|
2
2
|
//# sourceMappingURL=click2smsFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click2smsFlow.js","sources":["../src/flows/click2smsFlow/api.ts","../src/flows/click2smsFlow/main.ts","../src/flows/click2smsFlow/click2smsFlowSlice.ts","../src/flows/click2smsFlow/hooks/useClick2smsFlowState.ts","../src/flows/click2smsFlow/hooks/useKeyWordShortCode.ts","../src/flows/click2smsFlow/match.ts"],"sourcesContent":["import { IFetchResult } from '../../sharedFlowTypes/Click2smsTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst oc2sms = async ({\n window,\n country,\n slug,\n offer,\n rockmanId,\n keyword,\n operator,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n offer: string;\n rockmanId: string;\n keyword: string;\n operator: string;\n search: string;\n}): Promise<IFetchResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = new URLSearchParams({\n action: 'oc2sms',\n country,\n slug,\n offerId: offer.toString(),\n page: encodeURIComponent(window.location.href),\n device: 'smart',\n rockman_id: rockmanId,\n ...(keyword && { keyword }),\n ...(operator && { operator })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${search ? `&${search}` : ''}`;\n return fetch(url).then((x) => x.json());\n};\n\nexport { oc2sms };\n","import {\n IClick2smsConfig,\n IFetchResult,\n IKeywordShortcode,\n MultiOperatorSubmissionResult,\n SingleSubmissionResult\n} from '../../sharedFlowTypes/Click2smsTypes';\nimport { oc2sms } from './api';\n\nasync function loadOnce(\n window: Window,\n maybeConfig: IClick2smsConfig,\n operator?: string,\n keyword?: string,\n _shortcode?: string\n): Promise<SingleSubmissionResult> {\n if (!!maybeConfig && maybeConfig.tag === 'keywordAndShortCode') {\n const { keyword: keywordFromConfig, shortcode: shortcodeFromConfig } = maybeConfig;\n return {\n type: 'SingleSubmissionResult',\n ...({ keyword: keywordFromConfig, shortcode: shortcodeFromConfig } as IKeywordShortcode)\n };\n }\n const { offer } = window.pac_analytics.visitor;\n const config = { offer: window.pac_analytics.visitor.offer, ...maybeConfig };\n\n const { country, slug } = config;\n const { rockmanId } = window.pac_analytics.visitor;\n const search = window.location.search.substr(1) || '';\n\n const result: IFetchResult = await oc2sms({\n window,\n country,\n slug,\n offer,\n rockmanId,\n keyword,\n operator,\n search\n });\n if (!result.success) {\n throw result.message;\n } else {\n return {\n type: 'SingleSubmissionResult',\n ...{\n keyword: `${keyword || result.displayKeyword}${result.uid ? ` ${result.uid}` : ''}`,\n shortcode: result.shortcode\n }\n };\n }\n}\ntype Either<L, R> = { type: 'left'; value: L } | { type: 'right'; value: R };\nfunction right<L, R>(r: R) {\n return { type: 'right', value: r } as Either<L, R>;\n}\nfunction left<L, R>(l: L) {\n return { type: 'left', value: l } as Either<L, R>;\n}\n\nasync function loadForMultipleOperators(\n window: Window,\n maybeConfig: IClick2smsConfig,\n operators: string[],\n keyword?: string,\n shortcode?: string\n): Promise<MultiOperatorSubmissionResult> {\n const results = Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await loadOnce(window, maybeConfig, o, keyword, shortcode);\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const finalResults = await Promise.resolve(results);\n if (finalResults.every((r) => r.type === 'left')) {\n // no submission worked\n throw finalResults[0].value;\n } else {\n const arrResult: Array<IKeywordShortcode> = [];\n finalResults.map((obj) => {\n if (obj.type === 'right') {\n const r = obj.value as IKeywordShortcode;\n arrResult.push({ keyword: r?.keyword, shortcode: r?.shortcode, operator: r?.operator });\n }\n return obj;\n });\n\n return {\n type: 'MultiOperatorSubmissionResult',\n data: arrResult\n };\n }\n}\n\nexport const load = async (\n window: Window,\n maybeConfig: IClick2smsConfig,\n keyword?: string,\n shortcode?: string\n): Promise<SingleSubmissionResult | MultiOperatorSubmissionResult> => {\n if (!!maybeConfig && maybeConfig.tag === 'keywordAndShortCode') {\n return {\n type: 'SingleSubmissionResult',\n ...({ keyword: maybeConfig.keyword, shortcode: maybeConfig.shortcode } as IKeywordShortcode)\n };\n }\n if (!!maybeConfig && maybeConfig.tag === 'keyword') {\n return load1(window, maybeConfig, keyword, shortcode);\n }\n return load1(window, maybeConfig, null, null);\n};\n\nexport async function load1(\n window: Window,\n maybeConfig: IClick2smsConfig,\n keyword?: string,\n shortcode?: string\n): Promise<SingleSubmissionResult | MultiOperatorSubmissionResult> {\n const config = { offer: window.pac_analytics.visitor.offer, ...maybeConfig };\n\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return loadForMultipleOperators(window, maybeConfig, config.operators, keyword, shortcode);\n }\n const singleOperator = maybeConfig.operators && maybeConfig.operators.length > 0 ? maybeConfig.operators[0] : null;\n return loadOnce(window, maybeConfig, singleOperator, keyword, shortcode);\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { Click2smsFlowState, IClick2smsConfig, LOAD_OC2SMSState } from '../../sharedFlowTypes/Click2smsTypes';\nimport { IHash, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { tracker } from '../../utilities/tracker';\nimport { load } from './main';\n\nconst initialState: Click2smsFlowState = {\n currentState: {\n type: 'LOAD_OC2SMS',\n result: RDS.NothingYet()\n }\n};\n\ninterface LOAD_OC2SMSArgs {\n window: Window;\n extraParams?: IHash;\n}\n/**\n * loadOc2smsAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls oc2sms api that returns a keyword and short code\n *\n */\nexport const loadOc2smsAction = createAsyncThunk<\n LOAD_OC2SMSState,\n LOAD_OC2SMSArgs,\n {\n rejectValue: string;\n }\n // @ts-ignore\n>('click2Flow/loadOc2smsAction', async ({ window }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue('UnexpectedState');\n }\n const maybeConfig = (state.strategy.currentState?.data?.config as any) as IClick2smsConfig;\n\n try {\n if (maybeConfig.tag === 'keywordAndShortCode') {\n return {\n type: 'LOAD_OC2SMS',\n result: RDS.Success({\n type: 'SingleSubmissionResult',\n ...maybeConfig\n })\n };\n }\n // if ((!!maybeConfig && maybeConfig.tag !== 'keyword') || !maybeConfig) {\n\n // Start Load Click 2sms\n tracker.customEvent('Flow', 'advance-auto', 'load-click2sms');\n const result = await load(window, maybeConfig);\n tracker.customEvent('Flow', 'advance-auto', 'loaded-click2sms', result);\n // End Load Click 2sms\n return {\n type: 'LOAD_OC2SMS',\n result: RDS.Success(result)\n };\n } catch (ex) {\n console.warn(ex);\n tracker.customEvent('Flow', 'advance-auto', 'load-click2sms-failure', ex.toString());\n\n return rejectWithValue(ex.toString() as string);\n }\n});\n\nconst click2smsFlowSlice = createSlice({\n name: 'click2smsFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(loadOc2smsAction.pending, (state) => {\n state.currentState = { type: 'LOAD_OC2SMS', result: RDS.Loading() };\n })\n .addCase(loadOc2smsAction.fulfilled, (state, action: PayloadAction<LOAD_OC2SMSState>) => {\n state.currentState = action.payload;\n })\n .addCase(loadOc2smsAction.rejected, (state, action: PayloadAction<any>) => {\n state.currentState = {\n type: 'LOAD_OC2SMS',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: click2smsFlowReducer, actions: click2smsFlowActions } = click2smsFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectClick2smsRedirFlowState = (state: any) => state.click2smsFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useClick2smsFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.click2smsFlow.currentState);\n return currentState;\n};\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { IWithMultiKeywordShortcode } from '../../../sharedFlowTypes/Click2smsTypes';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useKeyWordShortCode = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.click2smsFlow.currentState);\n // @ts-ignore\n const data: IWithMultiKeywordShortcode = currentState?.result?.data;\n return data;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { Click2smsFlowCurrentState, IWithMultiKeywordShortcode } from '../../sharedFlowTypes/Click2smsTypes';\n\nfunction click2smsFlowMatch<R>({\n load\n}: {\n load: (rds: RDS.RemoteDataState<string, IWithMultiKeywordShortcode>) => R;\n}): (state: Click2smsFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'LOAD_OC2SMS':\n return load(state.result);\n default:\n // TODO - this should be an error or something\n return load(state.result);\n }\n };\n}\n\nexport { click2smsFlowMatch };\n"],"names":["oc2sms","_a","window","country","slug","offer","rockmanId","keyword","operator","search","cleanSearchParams","params","URLSearchParams","__assign","action","offerId","toString","page","encodeURIComponent","location","href","device","rockman_id","host","DEV_BASE_URL","url","concat","fetch","then","x","json","loadOnce","maybeConfig","_shortcode","tag","keywordFromConfig","shortcodeFromConfig","type","shortcode","pac_analytics","visitor","config","substr","result","sent","success","displayKeyword","uid","message","loadForMultipleOperators","operators","results","Promise","all","map","o","__awaiter","_this","singleResult","r","value","l","error_1","resolve","finalResults","every","arrResult_1","obj","push","data","load","load1","automaticallySubmitAllOperators","length","singleOperator","initialState","currentState","RDS.NothingYet","loadOc2smsAction","createAsyncThunk","_b","getState","rejectWithValue","state","_e","_c","strategy","_d","_g","_f","RDS.Success","tracker","customEvent","_h","console","warn","ex_1","click2smsFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","click2smsFlowReducer","reducer","actions","useClick2smsFlowState","useSelector","click2smsFlow","useKeyWordShortCode","click2smsFlowMatch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"click2smsFlow.js","sources":["../src/flows/click2smsFlow/api.ts","../src/flows/click2smsFlow/main.ts","../src/flows/click2smsFlow/click2smsFlowSlice.ts","../src/flows/click2smsFlow/hooks/useClick2smsFlowState.ts","../src/flows/click2smsFlow/hooks/useKeyWordShortCode.ts","../src/flows/click2smsFlow/match.ts"],"sourcesContent":["import { IFetchResult } from '../../sharedFlowTypes/Click2smsTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst oc2sms = async ({\n window,\n country,\n slug,\n offer,\n rockmanId,\n keyword,\n operator,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n offer: string;\n rockmanId: string;\n keyword: string;\n operator: string;\n search: string;\n}): Promise<IFetchResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = new URLSearchParams({\n action: 'oc2sms',\n country,\n slug,\n offerId: offer.toString(),\n page: encodeURIComponent(window.location.href),\n device: 'smart',\n rockman_id: rockmanId,\n ip_address: window?.pac_analytics?.visitor?.ip,\n ip_range_operator: window?.pac_analytics?.visitor?.ipRangeOperator,\n ...(keyword && { keyword }),\n ...(operator && { operator })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${search ? `&${search}` : ''}`;\n return fetch(url).then((x) => x.json());\n};\n\nexport { oc2sms };\n","import {\n IClick2smsConfig,\n IFetchResult,\n IKeywordShortcode,\n MultiOperatorSubmissionResult,\n SingleSubmissionResult\n} from '../../sharedFlowTypes/Click2smsTypes';\nimport { oc2sms } from './api';\n\nasync function loadOnce(\n window: Window,\n maybeConfig: IClick2smsConfig,\n operator?: string,\n keyword?: string,\n _shortcode?: string\n): Promise<SingleSubmissionResult> {\n if (!!maybeConfig && maybeConfig.tag === 'keywordAndShortCode') {\n const { keyword: keywordFromConfig, shortcode: shortcodeFromConfig } = maybeConfig;\n return {\n type: 'SingleSubmissionResult',\n ...({ keyword: keywordFromConfig, shortcode: shortcodeFromConfig } as IKeywordShortcode)\n };\n }\n const { offer } = window.pac_analytics.visitor;\n const config = { offer: window.pac_analytics.visitor.offer, ...maybeConfig };\n\n const { country, slug } = config;\n const { rockmanId } = window.pac_analytics.visitor;\n const search = window.location.search.substr(1) || '';\n\n const result: IFetchResult = await oc2sms({\n window,\n country,\n slug,\n offer,\n rockmanId,\n keyword,\n operator,\n search\n });\n if (!result.success) {\n throw result.message;\n } else {\n return {\n type: 'SingleSubmissionResult',\n ...{\n keyword: `${keyword || result.displayKeyword}${result.uid ? ` ${result.uid}` : ''}`,\n shortcode: result.shortcode\n }\n };\n }\n}\ntype Either<L, R> = { type: 'left'; value: L } | { type: 'right'; value: R };\nfunction right<L, R>(r: R) {\n return { type: 'right', value: r } as Either<L, R>;\n}\nfunction left<L, R>(l: L) {\n return { type: 'left', value: l } as Either<L, R>;\n}\n\nasync function loadForMultipleOperators(\n window: Window,\n maybeConfig: IClick2smsConfig,\n operators: string[],\n keyword?: string,\n shortcode?: string\n): Promise<MultiOperatorSubmissionResult> {\n const results = Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await loadOnce(window, maybeConfig, o, keyword, shortcode);\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const finalResults = await Promise.resolve(results);\n if (finalResults.every((r) => r.type === 'left')) {\n // no submission worked\n throw finalResults[0].value;\n } else {\n const arrResult: Array<IKeywordShortcode> = [];\n finalResults.map((obj) => {\n if (obj.type === 'right') {\n const r = obj.value as IKeywordShortcode;\n arrResult.push({ keyword: r?.keyword, shortcode: r?.shortcode, operator: r?.operator });\n }\n return obj;\n });\n\n return {\n type: 'MultiOperatorSubmissionResult',\n data: arrResult\n };\n }\n}\n\nexport const load = async (\n window: Window,\n maybeConfig: IClick2smsConfig,\n keyword?: string,\n shortcode?: string\n): Promise<SingleSubmissionResult | MultiOperatorSubmissionResult> => {\n if (!!maybeConfig && maybeConfig.tag === 'keywordAndShortCode') {\n return {\n type: 'SingleSubmissionResult',\n ...({ keyword: maybeConfig.keyword, shortcode: maybeConfig.shortcode } as IKeywordShortcode)\n };\n }\n if (!!maybeConfig && maybeConfig.tag === 'keyword') {\n return load1(window, maybeConfig, keyword, shortcode);\n }\n return load1(window, maybeConfig, null, null);\n};\n\nexport async function load1(\n window: Window,\n maybeConfig: IClick2smsConfig,\n keyword?: string,\n shortcode?: string\n): Promise<SingleSubmissionResult | MultiOperatorSubmissionResult> {\n const config = { offer: window.pac_analytics.visitor.offer, ...maybeConfig };\n\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return loadForMultipleOperators(window, maybeConfig, config.operators, keyword, shortcode);\n }\n const singleOperator = maybeConfig.operators && maybeConfig.operators.length > 0 ? maybeConfig.operators[0] : null;\n return loadOnce(window, maybeConfig, singleOperator, keyword, shortcode);\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { Click2smsFlowState, IClick2smsConfig, LOAD_OC2SMSState } from '../../sharedFlowTypes/Click2smsTypes';\nimport { IHash, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { tracker } from '../../utilities/tracker';\nimport { load } from './main';\n\nconst initialState: Click2smsFlowState = {\n currentState: {\n type: 'LOAD_OC2SMS',\n result: RDS.NothingYet()\n }\n};\n\ninterface LOAD_OC2SMSArgs {\n window: Window;\n extraParams?: IHash;\n}\n/**\n * loadOc2smsAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls oc2sms api that returns a keyword and short code\n *\n */\nexport const loadOc2smsAction = createAsyncThunk<\n LOAD_OC2SMSState,\n LOAD_OC2SMSArgs,\n {\n rejectValue: string;\n }\n // @ts-ignore\n>('click2Flow/loadOc2smsAction', async ({ window }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue('UnexpectedState');\n }\n const maybeConfig = (state.strategy.currentState?.data?.config as any) as IClick2smsConfig;\n\n try {\n if (maybeConfig.tag === 'keywordAndShortCode') {\n return {\n type: 'LOAD_OC2SMS',\n result: RDS.Success({\n type: 'SingleSubmissionResult',\n ...maybeConfig\n })\n };\n }\n // if ((!!maybeConfig && maybeConfig.tag !== 'keyword') || !maybeConfig) {\n\n // Start Load Click 2sms\n tracker.customEvent('Flow', 'advance-auto', 'load-click2sms');\n const result = await load(window, maybeConfig);\n tracker.customEvent('Flow', 'advance-auto', 'loaded-click2sms', result);\n // End Load Click 2sms\n return {\n type: 'LOAD_OC2SMS',\n result: RDS.Success(result)\n };\n } catch (ex) {\n console.warn(ex);\n tracker.customEvent('Flow', 'advance-auto', 'load-click2sms-failure', ex.toString());\n\n return rejectWithValue(ex.toString() as string);\n }\n});\n\nconst click2smsFlowSlice = createSlice({\n name: 'click2smsFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(loadOc2smsAction.pending, (state) => {\n state.currentState = { type: 'LOAD_OC2SMS', result: RDS.Loading() };\n })\n .addCase(loadOc2smsAction.fulfilled, (state, action: PayloadAction<LOAD_OC2SMSState>) => {\n state.currentState = action.payload;\n })\n .addCase(loadOc2smsAction.rejected, (state, action: PayloadAction<any>) => {\n state.currentState = {\n type: 'LOAD_OC2SMS',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: click2smsFlowReducer, actions: click2smsFlowActions } = click2smsFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectClick2smsRedirFlowState = (state: any) => state.click2smsFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useClick2smsFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.click2smsFlow.currentState);\n return currentState;\n};\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { IWithMultiKeywordShortcode } from '../../../sharedFlowTypes/Click2smsTypes';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useKeyWordShortCode = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.click2smsFlow.currentState);\n // @ts-ignore\n const data: IWithMultiKeywordShortcode = currentState?.result?.data;\n return data;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { Click2smsFlowCurrentState, IWithMultiKeywordShortcode } from '../../sharedFlowTypes/Click2smsTypes';\n\nfunction click2smsFlowMatch<R>({\n load\n}: {\n load: (rds: RDS.RemoteDataState<string, IWithMultiKeywordShortcode>) => R;\n}): (state: Click2smsFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'LOAD_OC2SMS':\n return load(state.result);\n default:\n // TODO - this should be an error or something\n return load(state.result);\n }\n };\n}\n\nexport { click2smsFlowMatch };\n"],"names":["oc2sms","_a","window","country","slug","offer","rockmanId","keyword","operator","search","cleanSearchParams","params","URLSearchParams","__assign","action","offerId","toString","page","encodeURIComponent","location","href","device","rockman_id","ip_address","_c","pac_analytics","_b","visitor","ip","ip_range_operator","_d","_e","ipRangeOperator","host","DEV_BASE_URL","url","concat","fetch","then","x","json","loadOnce","maybeConfig","_shortcode","tag","keywordFromConfig","shortcodeFromConfig","type","shortcode","config","substr","result","sent","success","displayKeyword","uid","message","loadForMultipleOperators","operators","results","Promise","all","map","o","__awaiter","_this","singleResult","r","value","l","error_1","resolve","finalResults","every","arrResult_1","obj","push","data","load","load1","automaticallySubmitAllOperators","length","singleOperator","initialState","currentState","RDS.NothingYet","loadOc2smsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","_g","_f","RDS.Success","tracker","customEvent","_h","console","warn","ex_1","click2smsFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","click2smsFlowReducer","reducer","actions","useClick2smsFlowState","useSelector","click2smsFlow","useKeyWordShortCode","click2smsFlowMatch"],"mappings":"8UAGA,IAAMA,EAAS,SAAOC,OACpBC,EAAMD,EAAAC,OACNC,EAAOF,EAAAE,QACPC,EAAIH,EAAAG,KACJC,EAAKJ,EAAAI,MACLC,EAASL,EAAAK,UACTC,EAAON,EAAAM,QACPC,EAAQP,EAAAO,SACRC,EAAMR,EAAAQ,8FA6BN,OAjBAA,EAASC,EAAkBD,GACrBE,EAAS,IAAIC,gBAAeC,EAAAA,EAAA,CAChCC,OAAQ,SACRX,QAAOA,EACPC,KAAIA,EACJW,QAASV,EAAMW,WACfC,KAAMC,mBAAmBhB,EAAOiB,SAASC,MACzCC,OAAQ,QACRC,WAAYhB,EACZiB,WAA4C,QAAhCC,EAAqB,UAArBtB,aAAA,EAAAA,EAAQuB,qBAAa,IAAAC,OAAA,EAAAA,EAAEC,eAAS,IAAAH,OAAA,EAAAA,EAAAI,GAC5CC,kBAAiD,kBAA9BC,EAAA5B,aAAM,EAANA,EAAQuB,oCAAeE,eAAO,IAAAI,OAAA,EAAAA,EAAEC,iBAC/CzB,GAAW,CAAEA,QAAOA,IACpBC,GAAY,CAAEA,SAAQA,KACzBQ,WAEGiB,EAAO/B,EAAOgC,cAAgB,GAC9BC,EAAM,GAAGC,OAAAH,2BAAqBtB,GAAMyB,OAAG3B,EAAS,IAAA2B,OAAI3B,GAAW,IACrE,CAAA,EAAO4B,MAAMF,GAAKG,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YC/BhC,SAAeC,EACbvC,EACAwC,EACAlC,EACAD,EACAoC,mHAEA,OAAMD,GAAmC,wBAApBA,EAAYE,KACdC,EAAsDH,EAArCnC,QAAauC,EAAwBJ,YACvE,CAAA,EAAA7B,EAAA,CACEkC,KAAM,0BACF,CAAExC,QAASsC,EAAmBG,UAAWF,OAGzCzC,EAAUH,EAAOuB,cAAcE,cACjCsB,EAAWpC,EAAA,CAAAR,MAAOH,EAAOuB,cAAcE,QAAQtB,OAAUqC,GAEvDvC,EAAkB8C,EAAX9C,QAAEC,EAAS6C,OAClB3C,EAAcJ,EAAOuB,cAAcE,kBACrClB,EAASP,EAAOiB,SAASV,OAAOyC,OAAO,IAAM,GAEtB,CAAA,EAAMlD,EAAO,CACxCE,OAAMA,EACNC,QAAOA,EACPC,KAAIA,EACJC,MAAKA,EACLC,UAASA,EACTC,QAAOA,EACPC,SAAQA,EACRC,OAAMA,aAER,IAVM0C,EAAuBlD,EAS3BmD,QACUC,QAGV,MACE,CAAA,EAAAxC,EAAA,CAAAkC,KAAM,0BACH,CACDxC,QAAS,UAAGA,GAAW4C,EAAOG,gBAAiBlB,OAAAe,EAAOI,IAAM,IAAInB,OAAAe,EAAOI,KAAQ,IAC/EP,UAAWG,EAAOH,aANtB,MAAMG,EAAOK,cAUhB,CASD,SAAeC,EACbvD,EACAwC,EACAgB,EACAnD,EACAyC,8GAaqB,OAXfW,EAAUC,QAAQC,IACtBH,EAAUI,KAAI,SAAOC,GAAC,OAAAC,EAAAC,OAAA,OAAA,GAAA,qEAEG,6BAAA,CAAA,EAAMxB,EAASvC,EAAQwC,EAAaqB,EAAGxD,WAC5D,OADM2D,EAAejE,EAA0DmD,OACxE,CAAA,GAlBMe,SAkBKD,GAAY,CAAE1D,SAAUuD,IAjBzC,CAAEhB,KAAM,QAASqB,MAAOD,YAmBzB,kBAAA,CAAA,GAjBYE,EAiBAC,EAhBX,CAAEvB,KAAM,OAAQqB,MAAOC,sBADhC,IAAoBA,EAHCF,IAsBhB,GAAA,KAGkB,CAAA,EAAMP,QAAQW,QAAQZ,WAC3C,IADMa,EAAevE,EAA8BmD,QAClCqB,OAAM,SAACN,GAAM,MAAW,SAAXA,EAAEpB,IAAF,IAE5B,MAAMyB,EAAa,GAAGJ,MAWtB,OATMM,EAAsC,GAC5CF,EAAaV,KAAI,SAACa,GAChB,GAAiB,UAAbA,EAAI5B,KAAkB,CACxB,IAAMoB,EAAIQ,EAAIP,MACdM,EAAUE,KAAK,CAAErE,QAAS4D,eAAAA,EAAG5D,QAASyC,UAAWmB,eAAAA,EAAGnB,UAAWxC,SAAU2D,eAAAA,EAAG3D,UAC7E,CACD,OAAOmE,CACT,IAEO,CAAA,EAAA,CACL5B,KAAM,gCACN8B,KAAMH,UAGX,CAEM,IAAMI,EAAO,SAClB5E,EACAwC,EACAnC,EACAyC,GAAkB,OAAAgB,OAAA,OAAA,OAAA,GAAA,sCAElB,OAAMtB,GAAmC,wBAApBA,EAAYE,IAC/B,CAAA,EAAA/B,EAAA,CACEkC,KAAM,0BACF,CAAExC,QAASmC,EAAYnC,QAASyC,UAAWN,EAAYM,aAGzDN,GAAmC,YAApBA,EAAYE,IACxB,CAAA,EAAAmC,EAAM7E,EAAQwC,EAAanC,IAE7B,CAAA,EAAAwE,EAAM7E,EAAQwC,EAAa,cAG9B,SAAgBqC,EACpB7E,EACAwC,EACAnC,EACAyC,8EAIA,OAA+C,KAFzCC,EAAWpC,EAAA,CAAAR,MAAOH,EAAOuB,cAAcE,QAAQtB,OAAUqC,IAEpDsC,iCAA8C/B,EAAOS,WAAaT,EAAOS,UAAUuB,OAAS,EACrG,CAAA,EAAOxB,EAAyBvD,EAAQwC,EAAaO,EAAOS,UAAWnD,KAEnE2E,EAAiBxC,EAAYgB,WAAahB,EAAYgB,UAAUuB,OAAS,EAAIvC,EAAYgB,UAAU,GAAK,KAC9G,CAAA,EAAOjB,EAASvC,EAAQwC,EAAawC,EAAgB3E,UACtD,CC3HD,IAAM4E,EAAmC,CACvCC,aAAc,CACZrC,KAAM,cACNI,OAAQkC,MAeCC,EAAmBC,EAO9B,+BAA+B,SAAOtF,EAAYyB,GAAV,IAAAxB,EAAMD,EAAAC,OAAMsF,EAAQ9D,EAAA8D,SAAEC,EAAe/D,EAAA+D,kIAE7E,GADMC,EAAmBF,MACiB,QAArCzD,EAA6B,kBAA7BP,EAAAkE,aAAK,EAALA,EAAOC,+BAAUP,oBAAY,IAAAtD,OAAA,EAAAA,EAAE+C,YAAM,IAAA9C,OAAA,EAAAA,EAAAkB,QACxC,MAAA,CAAA,EAAOwC,EAAgB,oBAEnB/C,EAAkD,QAAnCkD,EAA6B,QAA7BC,EAAAH,EAAMC,SAASP,oBAAc,IAAAS,OAAA,EAAAA,EAAAhB,YAAM,IAAAe,OAAA,EAAAA,EAAA3C,wBAGtD,6BAAwB,wBAApBP,EAAYE,IACP,CAAA,EAAA,CACLG,KAAM,cACNI,OAAQ2C,EAAWjF,EAAA,CACjBkC,KAAM,0BACHL,OAOTqD,EAAQC,YAAY,OAAQ,eAAgB,kBAC7B,CAAA,EAAMlB,EAAK5E,EAAQwC,YAGlC,OAHMS,EAAS8C,EAA+B7C,OAC9C2C,EAAQC,YAAY,OAAQ,eAAgB,mBAAoB7C,GAEzD,CAAA,EAAA,CACLJ,KAAM,cACNI,OAAQ2C,EAAY3C,YAMtB,kBAHA+C,QAAQC,KAAKC,GACbL,EAAQC,YAAY,OAAQ,eAAgB,yBAA0BI,EAAGpF,YAEzE,CAAA,EAAOyE,EAAgBW,EAAGpF,oCAE7B,IAEKqF,EAAqBC,EAAY,CACrCC,KAAM,gBACNpB,aAAYA,EACZqB,SAAU,CAAE,EACZC,cAAe,SAACC,GACdA,EACGC,QAAQrB,EAAiBsB,SAAS,SAAClB,GAClCA,EAAMN,aAAe,CAAErC,KAAM,cAAeI,OAAQ0D,IACtD,IACCF,QAAQrB,EAAiBwB,WAAW,SAACpB,EAAO5E,GAC3C4E,EAAMN,aAAetE,EAAOiG,OAC9B,IACCJ,QAAQrB,EAAiB0B,UAAU,SAACtB,EAAO5E,GAC1C4E,EAAMN,aAAe,CACnBrC,KAAM,cACNI,OAAQ8D,EAAYnG,EAAOiG,SAE/B,GACH,IAIqBG,EAAwDb,EAApCc,QAAoCd,EAAkBe,QCvF3F,IAAMC,EAAwB,SAACC,GAEpC,OADqBA,GAAY,SAAC5B,GAAqB,OAAAA,EAAM6B,cAAcnC,YAApB,GAEzD,ECFaoC,EAAsB,SAACF,SAC5BlC,EAAekC,GAAY,SAAC5B,GAAqB,OAAAA,EAAM6B,cAAcnC,YAApB,IAGvD,OAD+D,QAAtBnF,EAAAmF,aAAA,EAAAA,EAAcjC,cAAQ,IAAAlD,OAAA,EAAAA,EAAA4E,IAEjE,ECNA,SAAS4C,EAAsBxH,GAC7B,IAAA6E,EAAI7E,EAAA6E,KAIJ,OAAO,SAACY,GAMF,OALIA,EAAM3C,KAKH+B,EAAKY,EAAMvC,OAExB,CACF"}
|
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 o,L as i,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l as d}from"./loadScriptInnerHtml-B6v2-IGn.js";import{searchToObject as l}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var v=function(a){var n=a.window,o=a.slug,i=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,p=a.email,y=a.password;return e(void 0,void 0,void 0,(function(){var e,a,f,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:d.toString(),rockman_id:l,page:encodeURIComponent(n.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(_=null===(w=null===(g=n.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===w?void 0:w.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:l}),n.securityProcessId&&{securityProcessId:n.securityProcessId}),n.languageCode&&{language_code:n.languageCode}),p&&y?{email:p,password:y}:{msisdn:c}),m&&{extraParams:m})).toString(),a=n.DEV_BASE_URL||"",f="".concat(a,"/tallyman/v1/?").concat(e),[2,fetch(f).then((function(e){return e.json()}))]}))}))},m=function(a){var n=a.window,o=a.userDetails,i=a.extraConfig;return e(void 0,void 0,void 0,(function(){var e,a,c,s,d,u,v,m,p,y,f,g,w,_;return r(this,(function(r){return e="cc_number"in o,a=n.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(a,"/api/v1"),"/frontend/initiate-payment-generic",s=l(n),d={timezone:(new Date).getTimezoneOffset(),browserColorDepth:n.screen.colorDepth,browserLanguage:navigator.language,browserScreenHeight:n.screen.height,browserScreenWidth:n.screen.width,userAgent:navigator.userAgent,browserJavaEnabled:!!navigator.javaEnabled&&navigator.javaEnabled(),browserJavascriptEnabled:!0},u=(null==i?void 0:i.slug)||"",v=(null==s?void 0:s.d_country)||"",m=(null==s?void 0:s.d_currency)||"",p="",y=["cc_celerispay-xracademy50_099-","cc_celerispay-xracademy50_001-","cc_maxpay-xracademy50_001-","cc_ecardon-movio50_001-","cc_maxpay-movio50_001-","cc_maxpay-funbox50_001-","cc_maxpay-entertainu50_099-"],f=["sek","nok","gbp","dkk","usd","sar","cad","pln"].some((function(e){return e===m.toLowerCase()})),y.some((function(e){return e===u.toLowerCase()}))&&m&&f&&(p="".concat(u.slice(0,-1),":").concat(m.toLowerCase(),"-").concat(v.toLowerCase())),g=t(t(t(t({rockman_id:null===(_=n.pac_analytics.visitor)||void 0===_?void 0:_.rockmanId,landing_page_url:n.location.href,service_id:e?null==i?void 0:i.serviceId:"2"},u?{slug:p||"".concat(u).concat(v.toLowerCase())}:{}),e?{}:{user_agent:n.navigator.userAgent,ip:n.pac_analytics.visitor.ip}),{browserFingerprint:d}),o),w={method:"POST",headers:new Headers({"Content-Type":"application/json"}),body:JSON.stringify(g)},[2,fetch("".concat(c).concat("/frontend/initiate-payment-generic"),w).then((function(e){return e.json()}))]}))}))};function p(t,a,n){var o,i,c,s,d;return e(this,void 0,void 0,(function(){var e,l,u,p,y,f,g,w,_,h,S,b;return r(this,(function(r){switch(r.label){case 0:return e=a.slug,l=a.country,u=a.device,p=a.serviceId,y=t.location.search.substr(1)||"",f=t.pac_analytics.visitor,g=f.rockmanId,w={serviceId:p,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: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:g,email:null==n?void 0:n.email,password:null==n?void 0:n.password,search:y})]:[3,2];case 1:return h=r.sent(),[3,4];case 2:return[4,m({window:t,userDetails:n,extraConfig:w})];case 3:h=r.sent(),r.label=4;case 4:if(!1===(_=h).success)throw S="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":_.message,(b=new Error("".concat(S,":\n").concat(_.message))).type=S,b.errorId=_.errorId,console.error(b),b;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"})}},f={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=l(e);if(!r["mock-flow"])return g;switch(r["current-state"]){case"user-details-entry-failure-state":return f;case"user-details-entry-success-state":return y;default:return console.error("Mock Flow not supported"),g}}(window),_=a("creditCardFlow/submitUserDetailsAction",(function(t,a){var n=t.window,i=t.userDetails,c=a.getState,s=a.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,a,l,v,m,y,f,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,p(n,t,i)];case 2:return a=r.sent(),l=a.gateway_url,v=a.method,m=a.html,u.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==i?void 0:i.email,gateway_url:l}),"jslink"===v&&l&&(u.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:l}),function(e){var r=e.url,t=e.key,a=e.isRecaptcha,n=void 0!==a&&a,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 l=document.getElementsByTagName("head")[0];l.insertBefore(s,l.firstChild),n&&(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 ');d(e,!0)}),s.onerror=function(){console.error("Error loading script",r),o&&o()}}({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),"html"===v&&m&&u.advancedInFlow("tallyman.v1-credit-card","get-html-success"),[2,{type:"USER_DETAILS_ENTRY",result:o({gateway_url:l,method:v,html:m})}];case 3:switch(y=r.sent(),console.warn(y),f=void 0,y.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==i?void 0:i.email,errorType:f||y.type,errorId:(null==y?void 0:y.errorId)||""}),[2,s({errorType:f,error:y.toString(),errorId:(null==y?void 0:y.errorId)||""})];case 4:return[2]}}))}))})),h=n({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 b=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,b as useCreditCardFlowState};
|
|
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 o,L as i,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l as d}from"./loadScriptInnerHtml-B6v2-IGn.js";import{searchToObject as l}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var v=function(a){var n=a.window,o=a.slug,i=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,p=a.email,y=a.password;return e(void 0,void 0,void 0,(function(){var e,a,f,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:d.toString(),rockman_id:l,page:encodeURIComponent(n.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(_=null===(w=null===(g=n.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===w?void 0:w.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:l}),n.securityProcessId&&{securityProcessId:n.securityProcessId}),n.languageCode&&{language_code:n.languageCode}),p&&y?{email:p,password:y}:{msisdn:c}),m&&{extraParams:m})).toString(),a=n.DEV_BASE_URL||"",f="".concat(a,"/tallyman/v1/?").concat(e),[2,fetch(f).then((function(e){return e.json()}))]}))}))},m=function(a){var n=a.window,o=a.userDetails,i=a.extraConfig;return e(void 0,void 0,void 0,(function(){var e,a,c,s,d,u,v,m,p,y,f,g,w,_;return r(this,(function(r){return e="cc_number"in o,a=n.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(a,"/api/v1"),"/frontend/initiate-payment-generic",s=l(n),d={timezone:(new Date).getTimezoneOffset(),browserColorDepth:n.screen.colorDepth,browserLanguage:navigator.language,browserScreenHeight:n.screen.height,browserScreenWidth:n.screen.width,userAgent:navigator.userAgent,browserJavaEnabled:!!navigator.javaEnabled&&navigator.javaEnabled(),browserJavascriptEnabled:!0},u=(null==i?void 0:i.slug)||"",v=(null==s?void 0:s.d_country)||"",m=(null==s?void 0:s.d_currency)||"",p="",y=["cc_celerispay-xracademy50_099-","cc_celerispay-xracademy50_001-","cc_maxpay-xracademy50_001-","cc_ecardon-movio50_001-","cc_maxpay-movio50_001-","cc_maxpay-funbox50_001-","cc_maxpay-entertainu50_099-"],f=["sek","nok","gbp","dkk","usd","sar","cad","pln","aed"].some((function(e){return e===m.toLowerCase()})),y.some((function(e){return e===u.toLowerCase()}))&&m&&f&&(p="".concat(u.slice(0,-1),":").concat(m.toLowerCase(),"-").concat(v.toLowerCase())),g=t(t(t(t({rockman_id:null===(_=n.pac_analytics.visitor)||void 0===_?void 0:_.rockmanId,landing_page_url:n.location.href,service_id:e?null==i?void 0:i.serviceId:"2"},u?{slug:p||"".concat(u).concat(v.toLowerCase())}:{}),e?{}:{user_agent:n.navigator.userAgent,ip:n.pac_analytics.visitor.ip}),{browserFingerprint:d}),o),w={method:"POST",headers:new Headers({"Content-Type":"application/json"}),body:JSON.stringify(g)},[2,fetch("".concat(c).concat("/frontend/initiate-payment-generic"),w).then((function(e){return e.json()}))]}))}))};function p(t,a,n){var o,i,c,s,d;return e(this,void 0,void 0,(function(){var e,l,u,p,y,f,g,w,_,h,S,b;return r(this,(function(r){switch(r.label){case 0:return e=a.slug,l=a.country,u=a.device,p=a.serviceId,y=t.location.search.substr(1)||"",f=t.pac_analytics.visitor,g=f.rockmanId,w={serviceId:p,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: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:g,email:null==n?void 0:n.email,password:null==n?void 0:n.password,search:y})]:[3,2];case 1:return h=r.sent(),[3,4];case 2:return[4,m({window:t,userDetails:n,extraConfig:w})];case 3:h=r.sent(),r.label=4;case 4:if(!1===(_=h).success)throw S="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":_.message,(b=new Error("".concat(S,":\n").concat(_.message))).type=S,b.errorId=_.errorId,console.error(b),b;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"})}},f={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=l(e);if(!r["mock-flow"])return g;switch(r["current-state"]){case"user-details-entry-failure-state":return f;case"user-details-entry-success-state":return y;default:return console.error("Mock Flow not supported"),g}}(window),_=a("creditCardFlow/submitUserDetailsAction",(function(t,a){var n=t.window,i=t.userDetails,c=a.getState,s=a.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,a,l,v,m,y,f,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,p(n,t,i)];case 2:return a=r.sent(),l=a.gateway_url,v=a.method,m=a.html,u.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==i?void 0:i.email,gateway_url:l}),"jslink"===v&&l&&(u.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:l}),function(e){var r=e.url,t=e.key,a=e.isRecaptcha,n=void 0!==a&&a,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 l=document.getElementsByTagName("head")[0];l.insertBefore(s,l.firstChild),n&&(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 ');d(e,!0)}),s.onerror=function(){console.error("Error loading script",r),o&&o()}}({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),"html"===v&&m&&u.advancedInFlow("tallyman.v1-credit-card","get-html-success"),[2,{type:"USER_DETAILS_ENTRY",result:o({gateway_url:l,method:v,html:m})}];case 3:switch(y=r.sent(),console.warn(y),f=void 0,y.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==i?void 0:i.email,errorType:f||y.type,errorId:(null==y?void 0:y.errorId)||""}),[2,s({errorType:f,error:y.toString(),errorId:(null==y?void 0:y.errorId)||""})];case 4:return[2]}}))}))})),h=n({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 b=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,b 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\n const browserFingerprint = {\n timezone: new Date().getTimezoneOffset(),\n browserColorDepth: window.screen.colorDepth,\n browserLanguage: navigator.language,\n browserScreenHeight: window.screen.height,\n browserScreenWidth: window.screen.width,\n userAgent: navigator.userAgent,\n browserJavaEnabled: navigator.javaEnabled ? navigator.javaEnabled() : false,\n browserJavascriptEnabled: true\n };\n\n const slug = extraConfig?.slug || '';\n const country = search?.d_country || '';\n const currency = search?.d_currency || '';\n let currencySlug = '';\n const allowedCurrencies = ['sek', 'nok', 'gbp', 'dkk', 'usd', 'sar', 'cad', 'pln'];\n const localCurrencySupportedSlugs = [\n 'cc_celerispay-xracademy50_099-',\n 'cc_celerispay-xracademy50_001-',\n 'cc_maxpay-xracademy50_001-',\n 'cc_ecardon-movio50_001-',\n 'cc_maxpay-movio50_001-',\n 'cc_maxpay-funbox50_001-',\n 'cc_maxpay-entertainu50_099-'\n ];\n const isAllowedCurrency = allowedCurrencies.some((c) => c === currency.toLowerCase());\n const isLocalCurrencySupported = localCurrencySupportedSlugs.some((s) => s === slug.toLowerCase());\n\n if (isLocalCurrencySupported && currency && isAllowedCurrency) {\n currencySlug = `${slug.slice(0, -1)}:${currency.toLowerCase()}-${country.toLowerCase()}`;\n }\n\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 ...(slug ? { slug: currencySlug || `${slug}${country.toLowerCase()}` } : {}),\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n browserFingerprint,\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","browserFingerprint","timezone","Date","getTimezoneOffset","browserColorDepth","screen","colorDepth","browserLanguage","navigator","language","browserScreenHeight","height","browserScreenWidth","width","userAgent","browserJavaEnabled","javaEnabled","browserJavascriptEnabled","d_country","currency","d_currency","currencySlug","localCurrencySupportedSlugs","isAllowedCurrency","some","c","toLowerCase","s","slice","commonDetails","landing_page_url","service_id","serviceId","user_agent","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":"qYAaA,ICTMA,EAAW,SAAOC,GACtB,IAAAC,EAAMD,EAAAC,OACNC,EAAIF,EAAAE,KACJC,EAAOH,EAAAG,QACPC,EAAMJ,EAAAI,OACNC,EAAML,EAAAK,OACNC,EAAKN,EAAAM,MACLC,EAASP,EAAAO,UACTC,EAAaR,EAAAQ,cACbC,EAAMT,EAAAS,OACNC,kBACAC,EAAKX,EAAAW,MACLC,EAAQZ,EAAAY,8FAmCR,OApBMC,EAAS,IAAIC,gBAAeC,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CAChCC,OAAQ,WACRd,OACAC,QAAOA,EACPE,OAAMA,EACNY,QAASX,EAAMY,WACfC,WAAYZ,EACZa,KAAMC,mBAAmBpB,EAAOqB,SAASC,MACzCC,aAAchB,EAAgB,GAAK,QAC/BC,GAAU,CAAEA,OAAMA,KACmB,QAArCgB,EAA6B,QAA7BC,EAAoB,QAApBC,EAAA1B,EAAO2B,qBAAa,IAAAD,OAAA,EAAAA,EAAEE,eAAO,IAAAH,OAAA,EAAAA,EAAEN,YAAM,IAAAK,OAAA,EAAAA,EAAAK,SAAS,YAAa,CAAEC,QAASxB,IACtEN,EAAO+B,mBAAqB,CAAEA,kBAAmB/B,EAAO+B,oBACxD/B,EAAOgC,cAAgB,CAAEC,cAAejC,EAAOgC,eAC/CtB,GAASC,EAAW,CAAED,MAAKA,EAAEC,SAAQA,GAAK,CAAER,OAAMA,IAClDM,GAAiB,CAAEyB,YAAazB,KACnCQ,WAEGkB,EAAOnC,EAAOoC,cAAgB,GAC9BC,EAAM,GAAGC,OAAAH,EAAqB,kBAAAG,OAAA1B,GAEpC,CAAA,EAAO2B,MAAMF,GAAKG,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YAG1BC,EAAoB,SAAO5C,GAC/B,IAAAC,WACA4C,EAAW7C,EAAA6C,YACXC,EAAW9C,EAAA8C,iHA8DX,OAxDMC,EAAW,cAAeF,EAC1BT,EAAOnC,EAAO+C,0BAA4B,GAC1CC,EAAa,GAAAV,OAAGH,EAAI,WACV,qCACV3B,EAASyC,EAAejD,GAGxBkD,EAAqB,CACzBC,UAAU,IAAIC,MAAOC,oBACrBC,kBAAmBtD,EAAOuD,OAAOC,WACjCC,gBAAiBC,UAAUC,SAC3BC,oBAAqB5D,EAAOuD,OAAOM,OACnCC,mBAAoB9D,EAAOuD,OAAOQ,MAClCC,UAAWN,UAAUM,UACrBC,qBAAoBP,UAAUQ,aAAcR,UAAUQ,cACtDC,0BAA0B,GAGtBlE,GAAO4C,aAAA,EAAAA,EAAa5C,OAAQ,GAC5BC,GAAUM,aAAA,EAAAA,EAAQ4D,YAAa,GAC/BC,GAAW7D,aAAA,EAAAA,EAAQ8D,aAAc,GACnCC,EAAe,GAEbC,EAA8B,CAClC,iCACA,iCACA,6BACA,0BACA,yBACA,0BACA,+BAEIC,EAVoB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAUhCC,MAAK,SAACC,GAAM,OAAAA,IAAMN,EAASO,aAAf,IACvBJ,EAA4BE,MAAK,SAACG,GAAM,OAAAA,IAAM5E,EAAK2E,aAAX,KAEzCP,GAAYI,IAC1CF,EAAe,UAAGtE,EAAK6E,MAAM,GAAI,eAAMT,EAASO,cAAa,KAAAtC,OAAIpC,EAAQ0E,gBAGrEG,WACJ7D,WAA0C,UAA9BlB,EAAO2B,cAAcC,eAAS,IAAAF,OAAA,EAAAA,EAAApB,UAC1C0E,iBAAkBhF,EAAOqB,SAASC,KAElC2D,WAAYnC,EAAWD,aAAA,EAAAA,EAAaqC,UAAY,KAC5CjF,EAAO,CAAEA,KAAMsE,GAAgB,GAAAjC,OAAGrC,GAAIqC,OAAGpC,EAAQ0E,gBAAoB,IACrE9B,EAAW,CAAA,EAAK,CAAEqC,WAAYnF,EAAO0D,UAAUM,UAAWoB,GAAIpF,EAAO2B,cAAcC,QAAQwD,KAC/F,CAAAlC,uBACGN,GAGCyC,EAAiB,CACrBC,OAAQ,OACRC,QAAS,IAAIC,QAAQ,CAAE,eAAgB,qBACvCC,KAAMC,KAAKC,UAAUZ,IAGhB,CAAA,EAAAxC,MAAM,GAAAD,OAAGU,GAAUV,OArDV,sCAqDwB+C,GAAgB7C,MAAK,SAACoD,GAAa,OAAAA,EAASlD,MAAM,qBClHtEmD,EACpB7F,EACA8F,EACAlD,uIAY6C,OANrC3C,EAAqC6F,EAAM7F,KAArCC,EAA+B4F,EAAxB5F,QAAEE,EAAsB0F,EAAhB1F,OAAE8E,EAAcY,YACvCtF,EAASR,EAAOqB,SAASb,OAAOuF,OAAO,IAAM,GAC3CnE,EAAY5B,EAAO2B,sBAEnBrB,EAAcsB,EAAOtB,UACvBuC,EAAc,CAAEqC,UAASA,EAAEjF,KAAIA,YACQwB,EAAgC,UAAX,QAArB1B,EAAAC,eAAAA,EAAQ2B,qBAAa,IAAA5B,OAAA,EAAAA,EAAE6B,eAAS,IAAAF,OAAA,EAAAA,EAAAP,2BAAMU,SAAS,WACxF,CAAA,EAAM/B,EAAS,CACbE,OAAMA,EACNC,KAAIA,EACJC,QAAOA,EACPE,OAAMA,EACNC,cAAO2F,EAAuB,QAAvBxE,EAAAxB,aAAA,EAAAA,EAAQ2B,qBAAe,IAAAH,OAAA,EAAAA,EAAAI,8BAASvB,MACvCC,UAASA,EACTI,MAAOkC,aAAA,EAAAA,EAAalC,MACpBC,SAAUiC,aAAA,EAAAA,EAAajC,SACvBH,OAAMA,KAVyF,CAAA,EAAA,iBACjGyF,EAAAC,eAWA,KAAA,EAAA,MAAA,CAAA,EAAMvD,EAAkB,CAAE3C,OAAMA,EAAE4C,YAAWA,EAAEC,YAAWA,YAA1DoD,EAAAC,0BAEJ,IAAuB,KAdjBC,EAY2DF,GAEtDG,QAMT,MALMC,EAA0B,uBAAnBF,EAAOG,QAAmC,oBAAsBH,EAAOG,SAC9EC,EAAQ,IAAIC,MAAM,GAAGlE,OAAA+D,EAAU,OAAA/D,OAAA6D,EAAOG,WACtCD,KAAOA,EACbE,EAAME,QAAUN,EAAOM,QACvBC,QAAQH,MAAMA,GACRA,EAEN,MAAO,CAAA,EAAA,CACLI,YAAaR,EAAOQ,aAAeR,EAAOS,aAC1CtB,OAAQa,EAAOS,aAAe,cAAgBT,EAAOb,OACrDuB,KAAMV,EAAOU,aAGlB,CC/BD,IAAMC,EAAqD,CACzDC,aAAc,CACZV,KAAM,qBACNF,OAAQa,EAAgE,CACtEL,YAAa,yBACbrB,OAAQ,aAKR2B,EAAqD,CACzDF,aAAc,CACZV,KAAM,qBACNF,OAAQe,EAAgE,CACtEC,UAAW,oBACXZ,MAAO,yBAKPa,EAA2C,CAC/CL,aAAc,CACZV,KAAM,qBACNF,OAAQkB,MAqBNC,EAjBkB,SAACtH,GACvB,IAAMQ,EAASyC,EAAejD,GAC9B,IAAIQ,EAAO,aAWT,OAAO4G,EAVP,OAAQ5G,EAAO,kBACb,IAAK,mCACH,OAAOyG,EACT,IAAK,mCACH,OAAOH,EACT,QAEE,OADAJ,QAAQH,MAAM,2BACPa,EAKf,CAEqBG,CAAgBvH,QAaxBwH,EAA0BC,EAMrC,0CAA0C,SAAO1H,EAAyB2B,OAAvB1B,EAAMD,EAAAC,OAAE4C,EAAW7C,EAAA6C,YAAM8E,EAAQhG,EAAAgG,SAAEC,EAAejG,EAAAiG,sIAErG,GADMC,EAAmBF,MACiB,QAArCzB,EAA6B,kBAA7BzE,EAAAoG,aAAK,EAALA,EAAOC,+BAAUd,oBAAY,IAAAf,OAAA,EAAAA,EAAE8B,YAAM,IAAA7B,OAAA,EAAAA,EAAAH,QACxC,MAAA,CAAA,EAAO6B,EAAgB,CACrBR,UAAW,qBAGPrB,EAAW8B,EAAMC,SAASd,aAAae,KAAIhC,wBAKX,6BADtCiC,EAAQC,eAAe,0BAA2B,oBAAqB,CAAEtH,MAAOkC,aAAA,EAAAA,EAAalC,QACjD,CAAA,EAAAmF,EAAkB7F,EAAQ8F,EAAQlD,WA0B9E,OA1BMnB,EAAgCyE,EAAA+B,OAA9BC,EAAWzG,EAAAkF,YAAErB,EAAM7D,EAAA6D,OAAEuB,EAAIpF,EAAAoF,KACjCkB,EAAQC,eAAe,0BAA2B,6BAA8B,CAC9EtH,MAAOkC,aAAA,EAAAA,EAAalC,MACpBiG,YAAWuB,IAIE,WAAX5C,GAAuB4C,IACzBH,EAAQC,eAAe,0BAA2B,oBAAqB,CAAErB,YAAWuB,IHvFpE,SAACnI,OACrBsC,EAAGtC,EAAAsC,IACH8F,EAAGpI,EAAAoI,IACHzG,EAAmB3B,EAAAqI,YAAnBA,OAAc,IAAA1G,KACd2G,aACA5G,EAAA1B,EAAAuI,GAAAA,OAAE,IAAA7G,EAAG,GAAEA,EAQD8G,EAASC,SAASC,cAAc,UACtCF,EAAOlC,KAAO,kBACdkC,EAAOG,IAAMrG,EACbkG,EAAOD,GAAK,mBAAmBhG,OAAAgG,GAC/B,IAAMK,EAAWH,SAASI,qBAAqB,QAAQ,GACvDD,EAASE,aAAaN,EAAQI,EAASG,YAEnCV,IACFG,EAAOQ,OAAS,WACd,IAAMC,EAAc,4EAEQ1G,OAAA6F,iOAO5Bc,EAAoBD,GAAa,EACnC,GAGFT,EAAOW,QAAU,WACfxC,QAAQH,MAAM,uBAAwBlE,GAClCgG,GACFA,GAEJ,CACF,CG+CMc,CAAc,CACZb,GAAI,sBACJjG,IAAK6F,EACLG,SAAU,WACRN,EAAQC,eAAe,0BAA2B,sBAAuB,CAAErB,YAAWuB,GACvF,KAIU,gBAAX5C,GAA4B4C,IAC9BH,EAAQqB,YAAY,OAAQ,eAAgB,mBAAoB,CAAExC,aAAcsB,IAChFlI,EAAOqB,SAASC,KAAO4G,GAGV,SAAX5C,GAAqBuB,GACvBkB,EAAQC,eAAe,0BAA2B,oBAE7C,CAAA,EAAA,CACL3B,KAAM,qBACNF,OAAQa,EAAgE,CAAEL,YAAWuB,EAAE5C,OAAMA,EAAEuB,KAAIA,aAKrG,kBAFAH,QAAQ2C,KAAKC,GACTnC,SACImC,EAAGjD,MACT,IAAK,oBACHc,EAAY,oBACZ,MACF,IAAK,qBACHA,EAAY,qBACZ,MACF,QACEA,EAAY,eAShB,OANAY,EAAQwB,aAAa,0BAA2B,6BAA8B,CAC5E7I,MAAOkC,aAAA,EAAAA,EAAalC,MACpByG,UAAWA,GAAamC,EAAGjD,KAC3BI,SAAS6C,eAAAA,EAAI7C,UAAW,KAG1B,CAAA,EAAOkB,EAAgB,CACrBR,UAASA,EACTZ,MAAO+C,EAAGrI,WACVwF,SAAS6C,eAAAA,EAAI7C,UAAW,6BAG7B,IAEK+C,EAAsBC,EAAY,CACtCC,KAAM,iBACNpC,aAAYA,EACZqC,SAAU,CAAE,EACZC,cAAe,SAACC,GACdA,EACGC,QAAQtC,EAAwBuC,SAAS,SAACnC,GACzCA,EAAMb,aAAe,CAAEV,KAAM,qBAAsBF,OAAQ6D,IAC7D,IACCF,QAAQtC,EAAwByC,WAAW,SAACrC,EAAO7G,GAClD6G,EAAMb,aAAehG,EAAOmJ,OAC9B,IACCJ,QAAQtC,EAAwB2C,UAAU,SAACvC,EAAO7G,GACjD6G,EAAMb,aAAe,CACnBV,KAAM,qBACNF,OAAQe,EAAYnG,EAAOmJ,SAE/B,GACH,IAIqBE,EAA0DZ,EAArCa,QAAqCb,EAAmBc,QCzK9F,IAAMC,EAAyB,SAACC,GAErC,OADqBA,GAAY,SAAC5C,GAAqB,OAAAA,EAAM6C,eAAe1D,YAArB,GAEzD,ECCA,SAAS2D,EAAuB3K,GAC9B,IAAA4K,EAAgB5K,EAAA4K,iBAIhB,OAAO,SAAC/C,GAMF,OALIA,EAAMvB,KAKHsE,EAAiB/C,EAAMzB,OAEpC,CACF"}
|
|
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\n const browserFingerprint = {\n timezone: new Date().getTimezoneOffset(),\n browserColorDepth: window.screen.colorDepth,\n browserLanguage: navigator.language,\n browserScreenHeight: window.screen.height,\n browserScreenWidth: window.screen.width,\n userAgent: navigator.userAgent,\n browserJavaEnabled: navigator.javaEnabled ? navigator.javaEnabled() : false,\n browserJavascriptEnabled: true\n };\n\n const slug = extraConfig?.slug || '';\n const country = search?.d_country || '';\n const currency = search?.d_currency || '';\n let currencySlug = '';\n const allowedCurrencies = ['sek', 'nok', 'gbp', 'dkk', 'usd', 'sar', 'cad', 'pln', 'aed'];\n const localCurrencySupportedSlugs = [\n 'cc_celerispay-xracademy50_099-',\n 'cc_celerispay-xracademy50_001-',\n 'cc_maxpay-xracademy50_001-',\n 'cc_ecardon-movio50_001-',\n 'cc_maxpay-movio50_001-',\n 'cc_maxpay-funbox50_001-',\n 'cc_maxpay-entertainu50_099-'\n ];\n const isAllowedCurrency = allowedCurrencies.some((c) => c === currency.toLowerCase());\n const isLocalCurrencySupported = localCurrencySupportedSlugs.some((s) => s === slug.toLowerCase());\n\n if (isLocalCurrencySupported && currency && isAllowedCurrency) {\n currencySlug = `${slug.slice(0, -1)}:${currency.toLowerCase()}-${country.toLowerCase()}`;\n }\n\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 ...(slug ? { slug: currencySlug || `${slug}${country.toLowerCase()}` } : {}),\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n browserFingerprint,\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","browserFingerprint","timezone","Date","getTimezoneOffset","browserColorDepth","screen","colorDepth","browserLanguage","navigator","language","browserScreenHeight","height","browserScreenWidth","width","userAgent","browserJavaEnabled","javaEnabled","browserJavascriptEnabled","d_country","currency","d_currency","currencySlug","localCurrencySupportedSlugs","isAllowedCurrency","some","c","toLowerCase","s","slice","commonDetails","landing_page_url","service_id","serviceId","user_agent","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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"}
|