ouisys-engine 4.7.0-alpha.8 → 5.0.1
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/checkSubscriptionHander.js +1 -1
- package/dist/checkSubscriptionHander.js.map +1 -1
- package/dist/click2smsFlow.js +1 -1
- package/dist/click2smsFlow.js.map +1 -1
- package/dist/creditCardFlow.js +1 -1
- package/dist/creditCardFlow.js.map +1 -1
- package/dist/handleSubmitNumber.js +1 -1
- package/dist/handleSubmitNumber.js.map +1 -1
- package/dist/loadScriptSrc-Da4autZd.js +2 -0
- package/dist/loadScriptSrc-Da4autZd.js.map +1 -0
- package/dist/moFlow.js +1 -1
- package/dist/moFlow.js.map +1 -1
- package/dist/moRedirFlow.js +1 -1
- package/dist/moRedirFlow.js.map +1 -1
- package/dist/oneClickFlow.js +1 -1
- package/dist/oneClickFlow.js.map +1 -1
- package/dist/pinFlow.js +1 -1
- package/dist/pinFlow.js.map +1 -1
- package/dist/strategy.js +1 -1
- package/dist/strategy.js.map +1 -1
- package/dist/strategySlice-Dw14E22-.js +2 -0
- package/dist/strategySlice-Dw14E22-.js.map +1 -0
- package/dist/types/{OneClickTypes-DF0jodl-.d.ts → OneClickTypes-DjOesaHp.d.ts} +1 -1
- package/dist/types/{StrategyTypes-BEIYqoJV.d.ts → StrategyTypes-CbOgk0N4.d.ts} +3 -2
- package/dist/types/click2smsFlow.d.ts +3 -3
- package/dist/types/handleSubmitNumber.d.ts +3 -3
- package/dist/types/oneClickFlow.d.ts +2 -2
- package/dist/types/strategy.d.ts +12 -4
- package/dist/ussdFlow.js +1 -1
- package/dist/ussdFlow.js.map +1 -1
- package/package.json +5 -1
- package/dist/strategySlice-BoKYQ6OI.js +0 -2
- package/dist/strategySlice-BoKYQ6OI.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as r,__generator as
|
|
1
|
+
import{__awaiter as r,__generator as c,__assign as i}from"tslib";import{c as o}from"./checkSubscriptionByRockmanIdOnly-BwR1un1L.js";import{a as t}from"./helpers-xPhGBX-B.js";import{searchToObject as e}from"./searchToObject.js";import{t as n}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";function s(s){var a,u,l,d,p=s.window,m=s.flow,v=s.action,f=s.args;return r(this,void 0,void 0,(function(){var r,s,h,w,_,k,b;return c(this,(function(c){switch(c.label){case 0:return r=p.pac_analytics.visitor.rockmanId,s=e(p),(h="check-subscription-success-state"===s["current-state"])&&console.log("isMock is true"),[4,t((function(){return h?Promise.resolve({success:!0,rockman_id:r,product_url:"/product",msisdn:"000"}):o({window:p,rockmanId:r})}),60,(function(r){return r.success}),0)];case 1:if(!0===(w=c.sent()).success)return _=w.product_url,m&&v&&n.advancedInFlow(m,v,i(i({},f),{url:w.product_url})),(null===(u=null===(a=null==p?void 0:p.pac_analytics)||void 0===a?void 0:a.visitor)||void 0===u?void 0:u.chainRedirectUrl)?(k=null===(d=null===(l=null==p?void 0:p.pac_analytics)||void 0===l?void 0:l.visitor)||void 0===d?void 0:d.chainRedirectUrl,n.customEvent(m,"redirect","chain-redirect",{redirect_url:k}),p.location.replace(k)):_&&""!==_&&(n.customEvent(m,"redirect","product-redirect",{redirect_url:_}),p.location.replace(_)),[2,_||null];throw(b=new Error("".concat("SubscriptionFailed",":\n").concat(w.message))).type="SubscriptionFailed",b}}))}))}export{s as checkSubscriptionHander};
|
|
2
2
|
//# sourceMappingURL=checkSubscriptionHander.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkSubscriptionHander.js","sources":["../src/utilities/checkSubscriptionHander.ts"],"sourcesContent":["import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IError } from '../common-types/IError';\nimport { checkSubscriptionByRockmanIdOnly } from '../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IMockFlowParams } from '../sharedFlowTypes/StrategyTypes';\nimport { loop } from './helpers';\nimport { searchToObject } from './searchToObject';\nimport { tracker } from './tracker';\n\nexport async function checkSubscriptionHander({\n window,\n flow,\n action,\n args\n}: {\n window: Window;\n flow?: string;\n action?: string;\n args?: any;\n}): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const search = searchToObject(window) as IMockFlowParams<any>;\n const isMock = search['current-state'] === 'check-subscription-success-state';\n if (isMock) {\n // eslint-disable-next-line no-console\n console.log('isMock is true');\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n isMock\n ? Promise.resolve({\n success: true,\n rockman_id: rockmanId,\n product_url: '/product',\n msisdn: '000'\n })\n : checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true) {\n
|
|
1
|
+
{"version":3,"file":"checkSubscriptionHander.js","sources":["../src/utilities/checkSubscriptionHander.ts"],"sourcesContent":["import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IError } from '../common-types/IError';\nimport { checkSubscriptionByRockmanIdOnly } from '../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IMockFlowParams } from '../sharedFlowTypes/StrategyTypes';\nimport { loop } from './helpers';\nimport { searchToObject } from './searchToObject';\nimport { tracker } from './tracker';\n\nexport async function checkSubscriptionHander({\n window,\n flow,\n action,\n args\n}: {\n window: Window;\n flow?: string;\n action?: string;\n args?: any;\n}): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const search = searchToObject(window) as IMockFlowParams<any>;\n const isMock = search['current-state'] === 'check-subscription-success-state';\n if (isMock) {\n // eslint-disable-next-line no-console\n console.log('isMock is true');\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n isMock\n ? Promise.resolve({\n success: true,\n rockman_id: rockmanId,\n product_url: '/product',\n msisdn: '000'\n })\n : checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true) {\n const productUrl = checkResult.product_url;\n if (flow && action) {\n tracker.advancedInFlow(flow, action, {\n ...args,\n url: checkResult.product_url\n });\n }\n if (window?.pac_analytics?.visitor?.chainRedirectUrl) {\n const chainLink = window?.pac_analytics?.visitor?.chainRedirectUrl;\n tracker.customEvent(flow, 'redirect', 'chain-redirect', { redirect_url: chainLink });\n window.location.replace(chainLink);\n } else if (productUrl && productUrl !== '') {\n tracker.customEvent(flow, 'redirect', 'product-redirect', { redirect_url: productUrl });\n window.location.replace(productUrl);\n }\n\n return productUrl || null;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n"],"names":["checkSubscriptionHander","_a","window","flow","action","args","rockmanId","pac_analytics","visitor","search","searchToObject","isMock","console","log","loop","Promise","resolve","success","rockman_id","product_url","msisdn","checkSubscriptionByRockmanIdOnly","r","checkResult","_f","sent","productUrl","tracker","advancedInFlow","__assign","url","_c","_b","chainRedirectUrl","chainLink","_e","_d","customEvent","redirect_url","location","replace","error","Error","concat","message","type"],"mappings":"gTAQM,SAAgBA,EAAwBC,eAC5CC,EAAMD,EAAAC,OACNC,EAAIF,EAAAE,KACJC,EAAMH,EAAAG,OACNC,EAAIJ,EAAAI,iHAuB0C,OAhBtCC,EAAcJ,EAAOK,cAAcC,kBACrCC,EAASC,EAAeR,IACxBS,EAAqC,qCAA5BF,EAAO,mBAGpBG,QAAQC,IAAI,kBAWgC,CAAA,EAAMC,GATG,WACrD,OAAAH,EACII,QAAQC,QAAQ,CACdC,SAAS,EACTC,WAAYZ,EACZa,YAAa,WACbC,OAAQ,QAEVC,EAAiC,CAAEnB,SAAQI,UAASA,GAPxD,GAQ8D,IAAI,SAACgB,GAAM,OAAAA,EAAEL,UAAS,WAEtF,IAA4B,KAFtBM,EAAwCC,EAA0CC,QAExER,QAiBd,OAhBMS,EAAaH,EAAYJ,YAC3BhB,GAAQC,GACVuB,EAAQC,eAAezB,EAAMC,EAAMyB,EAAAA,EAAA,CAAA,EAC9BxB,GAAI,CACPyB,IAAKP,EAAYJ,gBAGa,QAA9BY,EAAqB,QAArBC,EAAA9B,aAAM,EAANA,EAAQK,qBAAa,IAAAyB,OAAA,EAAAA,EAAExB,eAAO,IAAAuB,OAAA,EAAAA,EAAEE,mBAC5BC,EAA0C,QAA9BC,EAAqB,QAArBC,EAAAlC,aAAM,EAANA,EAAQK,qBAAa,IAAA6B,OAAA,EAAAA,EAAE5B,eAAO,IAAA2B,OAAA,EAAAA,EAAEF,iBAClDN,EAAQU,YAAYlC,EAAM,WAAY,iBAAkB,CAAEmC,aAAcJ,IACxEhC,EAAOqC,SAASC,QAAQN,IACfR,GAA6B,KAAfA,IACvBC,EAAQU,YAAYlC,EAAM,WAAY,mBAAoB,CAAEmC,aAAcZ,IAC1ExB,EAAOqC,SAASC,QAAQd,IAGnB,CAAA,EAAAA,GAAc,MAIvB,MAFMe,EAAQ,IAAIC,MAAM,GAAGC,OAAA,qBAA0B,OAAAA,OAAApB,EAAYqB,WAC3DC,KAAO,qBACPJ,QACP"}
|
package/dist/click2smsFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as t,__generator as r,__assign as e}from"tslib";import{createAsyncThunk as o,createSlice as n}from"@reduxjs/toolkit";import{S as
|
|
1
|
+
import{__awaiter as t,__generator as r,__assign as e}from"tslib";import{createAsyncThunk as o,createSlice as n}from"@reduxjs/toolkit";import{S as i,L as a,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{t as u}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var l=function(o){var n=o.window,i=o.country,a=o.slug,c=o.offer,s=o.rockmanId,u=o.keyword,l=o.operator,d=o.search;return t(void 0,void 0,void 0,(function(){var t,o,f;return r(this,(function(r){return t=new URLSearchParams(e(e(e({action:"oc2sms",country:i,slug:a,offerId:c.toString(),page:encodeURIComponent(n.location.href),device:"smart",rockman_id:s},u&&{keyword:u}),l&&{operator:l}),d&&{search:d})).toString(),o=n.DEV_BASE_URL||"",f="".concat(o,"/tallyman/v1/?").concat(t),[2,fetch(f).then((function(t){return t.json()}))]}))}))};function d(o,n,i,a,c){return t(this,void 0,void 0,(function(){var t,c,s,u,d,f,v,p,y;return r(this,(function(r){switch(r.label){case 0:return n&&"keywordAndShortCode"===n.tag?(t=n.keyword,c=n.shortcode,[2,e({type:"SingleSubmissionResult"},{keyword:t,shortcode:c})]):(s=o.pac_analytics.visitor.offer,u=e({offer:o.pac_analytics.visitor.offer},n),d=u.country,f=u.slug,v=o.pac_analytics.visitor.rockmanId,p=o.location.search.substr(1)||"",[4,l({window:o,country:d,slug:f,offer:s,rockmanId:v,keyword:a,operator:i,search:p})]);case 1:if((y=r.sent()).success)return[2,e({type:"SingleSubmissionResult"},{keyword:"".concat(a||y.displayKeyword).concat(y.uid?" ".concat(y.uid):""),shortcode:y.shortcode})];throw y.message}}))}))}function f(o,n,i,a,c){return t(this,void 0,void 0,(function(){var c,s,u,l=this;return r(this,(function(f){switch(f.label){case 0:return c=Promise.all(i.map((function(i){return t(l,void 0,void 0,(function(){var t,c;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,d(o,n,i,a)];case 1:return t=r.sent(),[2,(u=e(e({},t),{operator:i}),{type:"right",value:u})];case 2:return c=r.sent(),[2,(s=c,{type:"left",value:s})];case 3:return[2]}var s,u}))}))}))),[4,Promise.resolve(c)];case 1:if((s=f.sent()).every((function(t){return"left"===t.type})))throw s[0].value;return u=[],s.map((function(t){if("right"===t.type){var r=t.value;u.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:u}]}}))}))}var v=function(o,n,i,a){return t(void 0,void 0,void 0,(function(){return r(this,(function(t){return n&&"keywordAndShortCode"===n.tag?[2,e({type:"SingleSubmissionResult"},{keyword:n.keyword,shortcode:n.shortcode})]:n&&"keyword"===n.tag?[2,p(o,n,i)]:[2,p(o,n,null)]}))}))};function p(o,n,i,a){return t(this,void 0,void 0,(function(){var t,a;return r(this,(function(r){return!0===(t=e({offer:o.pac_analytics.visitor.offer},n)).automaticallySubmitAllOperators&&t.operators&&t.operators.length>0?[2,f(o,n,t.operators,i)]:(a=n.operators&&n.operators.length>0?n.operators[0]:null,[2,d(o,n,a,i)])}))}))}var y={currentState:{type:"LOAD_OC2SMS",result:s()}},m=o("click2Flow/loadOc2smsAction",(function(o,n){var a=o.window,c=n.getState,s=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,o,n,l,d,f,p,y,m;return r(this,(function(r){switch(r.label){case 0:if(t=c(),!(null===(p=null===(f=null===(d=null==t?void 0:t.strategy)||void 0===d?void 0:d.currentState)||void 0===f?void 0:f.data)||void 0===p?void 0:p.config))return[2,s("UnexpectedState")];o=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"===o.tag?[2,{type:"LOAD_OC2SMS",result:i(e({type:"SingleSubmissionResult"},o))}]:(u.advancedInFlow("tallyman.v1-click2sms","load-click2sms"),[4,v(a,o)]);case 2:return n=r.sent(),u.advancedInFlow("tallyman.v1-click2sms","loaded-click2sms",n),[2,{type:"LOAD_OC2SMS",result:i(n)}];case 3:return l=r.sent(),console.warn(l),u.recedeInFlow("tallyman.v1-click2sms","load-click2sms-failure",l.toString()),[2,s(l.toString())];case 4:return[2]}}))}))})),h=n({name:"click2smsFlow",initialState:y,reducers:{},extraReducers:function(t){t.addCase(m.pending,(function(t){t.currentState={type:"LOAD_OC2SMS",result:a()}})).addCase(m.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(m.rejected,(function(t,r){t.currentState={type:"LOAD_OC2SMS",result:c(r.payload)}}))}}),S=h.reducer;h.actions;var w=function(t){return t((function(t){return t.click2smsFlow.currentState}))},k=function(t){var r,e=t((function(t){return t.click2smsFlow.currentState}));return null===(r=null==e?void 0:e.result)||void 0===r?void 0:r.data};function g(t){var r=t.load;return function(t){return t.type,r(t.result)}}export{g as click2smsFlowMatch,S as click2smsFlowReducer,m as loadOc2smsAction,w 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';\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 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 ...(search && { search })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\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\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.advancedInFlow('tallyman.v1-click2sms', 'load-click2sms');\n const result = await load(window, maybeConfig);\n tracker.advancedInFlow('tallyman.v1-click2sms', '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.recedeInFlow('tallyman.v1-click2sms', 'load-click2sms-failure', ex.toString());\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","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","_d","_c","strategy","RDS.Success","tracker","advancedInFlow","_e","console","warn","ex_1","recedeInFlow","click2smsFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","click2smsFlowReducer","reducer","actions","useClick2smsFlowState","useSelector","click2smsFlow","useKeyWordShortCode","click2smsFlowMatch"],"mappings":"0RAEA,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,sFA0BN,OAfMC,EAAS,IAAIC,gBAAeC,EAAAA,EAAAA,EAAA,CAChCC,OAAQ,SACRV,QAAOA,EACPC,KAAIA,EACJU,QAAST,EAAMU,WACfC,KAAMC,mBAAmBf,EAAOgB,SAASC,MACzCC,OAAQ,QACRC,WAAYf,GACRC,GAAW,CAAEA,QAAOA,IACpBC,GAAY,CAAEA,SAAQA,IACtBC,GAAU,CAAEA,OAAMA,KACrBM,WAEGO,EAAOpB,EAAOqB,cAAgB,GAC9BC,EAAM,GAAGC,OAAAH,EAAqB,kBAAAG,OAAAf,GACpC,CAAA,EAAOgB,MAAMF,GAAKG,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YC3BhC,SAAeC,EACb5B,EACA6B,EACAvB,EACAD,EACAyB,mHAEA,OAAMD,GAAmC,wBAApBA,EAAYE,KACdC,EAAsDH,EAArCxB,QAAa4B,EAAwBJ,YACvE,CAAA,EAAAnB,EAAA,CACEwB,KAAM,0BACF,CAAE7B,QAAS2B,EAAmBG,UAAWF,OAGzC9B,EAAUH,EAAOoC,cAAcC,cACjCC,EAAW5B,EAAA,CAAAP,MAAOH,EAAOoC,cAAcC,QAAQlC,OAAU0B,GAEvD5B,EAAkBqC,EAAXrC,QAAEC,EAASoC,OAClBlC,EAAcJ,EAAOoC,cAAcC,kBACrC9B,EAASP,EAAOgB,SAAST,OAAOgC,OAAO,IAAM,GAEtB,CAAA,EAAMzC,EAAO,CACxCE,OAAMA,EACNC,QAAOA,EACPC,KAAIA,EACJC,MAAKA,EACLC,UAASA,EACTC,QAAOA,EACPC,SAAQA,EACRC,OAAMA,aAER,IAVMiC,EAAuBzC,EAS3B0C,QACUC,QAGV,MACE,CAAA,EAAAhC,EAAA,CAAAwB,KAAM,0BACH,CACD7B,QAAS,UAAGA,GAAWmC,EAAOG,gBAAiBpB,OAAAiB,EAAOI,IAAM,IAAIrB,OAAAiB,EAAOI,KAAQ,IAC/ET,UAAWK,EAAOL,aANtB,MAAMK,EAAOK,cAUhB,CASD,SAAeC,EACb9C,EACA6B,EACAkB,EACA1C,EACA8B,8GAaqB,OAXfa,EAAUC,QAAQC,IACtBH,EAAUI,KAAI,SAAOC,GAAC,OAAAC,EAAAC,OAAA,OAAA,GAAA,qEAEG,6BAAA,CAAA,EAAM1B,EAAS5B,EAAQ6B,EAAauB,EAAG/C,WAC5D,OADMkD,EAAexD,EAA0D0C,OACxE,CAAA,GAlBMe,SAkBKD,GAAY,CAAEjD,SAAU8C,IAjBzC,CAAElB,KAAM,QAASuB,MAAOD,YAmBzB,kBAAA,CAAA,GAjBYE,EAiBAC,EAhBX,CAAEzB,KAAM,OAAQuB,MAAOC,sBADhC,IAAoBA,EAHCF,IAsBhB,GAAA,KAGkB,CAAA,EAAMP,QAAQW,QAAQZ,WAC3C,IADMa,EAAe9D,EAA8B0C,QAClCqB,OAAM,SAACN,GAAM,MAAW,SAAXA,EAAEtB,IAAF,IAE5B,MAAM2B,EAAa,GAAGJ,MAWtB,OATMM,EAAsC,GAC5CF,EAAaV,KAAI,SAACa,GAChB,GAAiB,UAAbA,EAAI9B,KAAkB,CACxB,IAAMsB,EAAIQ,EAAIP,MACdM,EAAUE,KAAK,CAAE5D,QAASmD,eAAAA,EAAGnD,QAAS8B,UAAWqB,eAAAA,EAAGrB,UAAW7B,SAAUkD,eAAAA,EAAGlD,UAC7E,CACD,OAAO0D,CACT,IAEO,CAAA,EAAA,CACL9B,KAAM,gCACNgC,KAAMH,UAGX,CAEM,IAAMI,EAAO,SAClBnE,EACA6B,EACAxB,EACA8B,GAAkB,OAAAkB,OAAA,OAAA,OAAA,GAAA,sCAElB,OAAMxB,GAAmC,wBAApBA,EAAYE,IAC/B,CAAA,EAAArB,EAAA,CACEwB,KAAM,0BACF,CAAE7B,QAASwB,EAAYxB,QAAS8B,UAAWN,EAAYM,aAGzDN,GAAmC,YAApBA,EAAYE,IACxB,CAAA,EAAAqC,EAAMpE,EAAQ6B,EAAaxB,IAE7B,CAAA,EAAA+D,EAAMpE,EAAQ6B,EAAa,cAG9B,SAAgBuC,EACpBpE,EACA6B,EACAxB,EACA8B,8EAIA,OAA+C,KAFzCG,EAAW5B,EAAA,CAAAP,MAAOH,EAAOoC,cAAcC,QAAQlC,OAAU0B,IAEpDwC,iCAA8C/B,EAAOS,WAAaT,EAAOS,UAAUuB,OAAS,EACrG,CAAA,EAAOxB,EAAyB9C,EAAQ6B,EAAaS,EAAOS,UAAW1C,KAEnEkE,EAAiB1C,EAAYkB,WAAalB,EAAYkB,UAAUuB,OAAS,EAAIzC,EAAYkB,UAAU,GAAK,KAC9G,CAAA,EAAOnB,EAAS5B,EAAQ6B,EAAa0C,EAAgBlE,UACtD,CC3HD,IAAMmE,EAAmC,CACvCC,aAAc,CACZvC,KAAM,cACNM,OAAQkC,MAeCC,EAAmBC,EAO9B,+BAA+B,SAAO7E,EAAY8E,GAAV,IAAA7E,EAAMD,EAAAC,OAAM8E,EAAQD,EAAAC,SAAEC,EAAeF,EAAAE,4HACvEC,EAAmBF,IAEnBjD,EAAkD,QAAnCoD,EAA6B,QAA7BC,EAAAF,EAAMG,SAASV,oBAAc,IAAAS,OAAA,EAAAA,EAAAhB,YAAM,IAAAe,OAAA,EAAAA,EAAA3C,wBAGtD,6BAAwB,wBAApBT,EAAYE,IACP,CAAA,EAAA,CACLG,KAAM,cACNM,OAAQ4C,EAAW1E,EAAA,CACjBwB,KAAM,0BACHL,OAOTwD,EAAQC,eAAe,wBAAyB,kBACjC,CAAA,EAAMnB,EAAKnE,EAAQ6B,YAGlC,OAHMW,EAAS+C,EAA+B9C,OAC9C4C,EAAQC,eAAe,wBAAyB,mBAAoB9C,GAE7D,CAAA,EAAA,CACLN,KAAM,cACNM,OAAQ4C,EAAY5C,YAKtB,kBAFAgD,QAAQC,KAAKC,GACbL,EAAQM,aAAa,wBAAyB,yBAA0BD,EAAG7E,YAC3E,CAAA,EAAOkE,EAAgBW,EAAG7E,oCAE7B,IAEK+E,EAAqBC,EAAY,CACrCC,KAAM,gBACNtB,aAAYA,EACZuB,SAAU,CAAE,EACZC,cAAe,SAACC,GACdA,EACGC,QAAQvB,EAAiBwB,SAAS,SAACnB,GAClCA,EAAMP,aAAe,CAAEvC,KAAM,cAAeM,OAAQ4D,IACtD,IACCF,QAAQvB,EAAiB0B,WAAW,SAACrB,EAAOrE,GAC3CqE,EAAMP,aAAe9D,EAAO2F,OAC9B,IACCJ,QAAQvB,EAAiB4B,UAAU,SAACvB,EAAOrE,GAC1CqE,EAAMP,aAAe,CACnBvC,KAAM,cACNM,OAAQgE,EAAY7F,EAAO2F,SAE/B,GACH,IAIqBG,EAAwDb,EAApCc,QAAoCd,EAAkBe,QCpF3F,IAAMC,EAAwB,SAACC,GAEpC,OADqBA,GAAY,SAAC7B,GAAqB,OAAAA,EAAM8B,cAAcrC,YAApB,GAEzD,ECFasC,EAAsB,SAACF,SAC5BpC,EAAeoC,GAAY,SAAC7B,GAAqB,OAAAA,EAAM8B,cAAcrC,YAApB,IAGvD,OAD+D,QAAtB1E,EAAA0E,aAAA,EAAAA,EAAcjC,cAAQ,IAAAzC,OAAA,EAAAA,EAAAmE,IAEjE,ECNA,SAAS8C,EAAsBjH,GAC7B,IAAAoE,EAAIpE,EAAAoE,KAIJ,OAAO,SAACa,GAMF,OALIA,EAAM9C,KAKHiC,EAAKa,EAAMxC,OAExB,CACF"}
|
|
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';\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 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 ...(search && { search })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\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.advancedInFlow('tallyman.v1-click2sms', 'load-click2sms');\n const result = await load(window, maybeConfig);\n tracker.advancedInFlow('tallyman.v1-click2sms', '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.recedeInFlow('tallyman.v1-click2sms', 'load-click2sms-failure', ex.toString());\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","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","advancedInFlow","_h","console","warn","ex_1","recedeInFlow","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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"}
|
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
|
|
1
|
+
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as a,createSlice as n}from"@reduxjs/toolkit";import{S as i,L as o,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l as d}from"./loadScriptSrc-Da4autZd.js";import{searchToObject as l}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"./loadScriptInnerHtml-BzQm-AFb.js";import"pacman-client";import"uuid";var v=function(a){var n=a.window,i=a.slug,o=a.country,c=a.msisdn,s=a.device,d=a.offer,l=a.rockmanId,u=a.ip_range_name,v=a.search,m=a.extraParamsQs,f=a.email,y=a.password;return e(void 0,void 0,void 0,(function(){var e,a,p,w,_,g;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:i,country:o,device:s,offerId:d.toString(),rockman_id:l,page:encodeURIComponent(n.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(g=null===(_=null===(w=n.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===_?void 0:_.page)||void 0===g?void 0:g.includes("agency"))&&{evinaTi:l}),n.securityProcessId&&{securityProcessId:n.securityProcessId}),n.languageCode&&{language_code:n.languageCode}),f&&y?{email:f,password:y}:{msisdn:c}),m&&{extraParams:m})).toString(),a=n.DEV_BASE_URL||"",p="".concat(a,"/tallyman/v1/?").concat(e),i.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:l,redirect_url:p}]:[2,fetch(p).then((function(e){return e.json()}))]}))}))},m=function(a){var n=a.window,i=a.userDetails,o=a.extraConfig;return e(void 0,void 0,void 0,(function(){var e,a,c,s,d,l,u;return r(this,(function(r){return e="cc_number"in i,a=n.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(a,"/api/v1"),s=e?"/maxpay/frontend/initiate-payment":"/ecardon/frontend/initiate-payment",d=t(t({rockman_id:null===(u=n.pac_analytics.visitor)||void 0===u?void 0:u.rockmanId,landing_page_url:n.location.href,service_id:e?null==o?void 0:o.serviceId:"2"},e?{}:{user_agent:n.navigator.userAgent,ip:n.pac_analytics.visitor.ip}),i),l={method:"POST",headers:new Headers({"Content-Type":"application/json"}),body:JSON.stringify(d)},[2,fetch("".concat(c).concat(s),l).then((function(e){return e.json()}))]}))}))};function f(t,a,n){var i,o,c,s,d;return e(this,void 0,void 0,(function(){var e,l,u,f,y,p,w,_,g,S,h,E;return r(this,(function(r){switch(r.label){case 0:return e=a.slug,l=a.country,u=a.device,f=a.serviceId,y=t.location.search.substr(1)||"",p=t.pac_analytics.visitor,w=p.rockmanId,_={serviceId:f},(null===(c=null===(o=null===(i=null==t?void 0:t.pac_analytics)||void 0===i?void 0:i.visitor)||void 0===o?void 0:o.page)||void 0===c?void 0:c.includes("agency"))?[4,v({window:t,slug:e,country:l,device:u,offer:null===(d=null===(s=null==t?void 0:t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===d?void 0:d.offer,rockmanId:w,email:null==n?void 0:n.email,password:null==n?void 0:n.password,search:y})]:[3,2];case 1:return S=r.sent(),[3,4];case 2:return[4,m({window:t,userDetails:n,extraConfig:_})];case 3:S=r.sent(),r.label=4;case 4:if(!1===(g=S).success)throw h="ALREADY SUBSCRIBED"===g.message?"AlreadySubscribed":g.message,(E=new Error("".concat(h,":\n").concat(g.message))).type=h,console.error(E),E;return[2,{gateway_url:g.gateway_url||g.redirect_url,method:g.redirect_url?"redirection":g.method}]}}))}))}var y={currentState:{type:"USER_DETAILS_ENTRY",result:i({gateway_url:"https://www.google.com",method:"jslink"})}},p={currentState:{type:"USER_DETAILS_ENTRY",result:c({errorType:"AlreadySubscribed",error:"Already Subscribed"})}},w={currentState:{type:"USER_DETAILS_ENTRY",result:s()}},_=function(e){var r=l(e);if(!r["mock-flow"])return w;switch(r["current-state"]){case"user-details-entry-failure-state":return p;case"user-details-entry-success-state":return y;default:return console.error("Mock Flow not supported"),w}}(window),g=a("creditCardFlow/submitUserDetailsAction",(function(t,a){var n=t.window,o=t.userDetails,c=a.getState,s=a.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,a,l,v,m,y,p,w,_;return r(this,(function(r){switch(r.label){case 0:if(e=c(),!(null===(_=null===(w=null===(p=null==e?void 0:e.strategy)||void 0===p?void 0:p.currentState)||void 0===w?void 0:w.data)||void 0===_?void 0:_.config))return[2,s({errorType:"UnexpectedState"})];t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,3,,4]),u.advancedInFlow("tallyman.v1-credit-card","cc-form-submitted",{email:null==o?void 0:o.email}),[4,f(n,t,o)];case 2:return a=r.sent(),l=a.gateway_url,v=a.method,u.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==o?void 0:o.email,gateway_url:l}),"jslink"===v&&l&&(u.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:l}),d({id:"ecardon-credit-card",url:l,callBack:function(){u.advancedInFlow("tallyman.v1-credit-card","load-script-success",{gateway_url:l})}})),"redirection"===v&&l&&(u.customEvent("Flow","advance-auto","redirect-success",{redirect_url:l}),n.location.href=l),[2,{type:"USER_DETAILS_ENTRY",result:i({gateway_url:l,method:v})}];case 3:switch(m=r.sent(),console.warn(m),y=void 0,m.type){case"AlreadySubscribed":y="AlreadySubscribed";break;case"InvalidUserDetails":y="InvalidUserDetails";break;default:y="UnknownError"}return u.recedeInFlow("tallyman.v1-credit-card","cc-form-submission-failure",{email:null==o?void 0:o.email,errorType:y||m.type}),[2,s({errorType:y,error:m.toString()})];case 4:return[2]}}))}))})),S=n({name:"creditCardFlow",initialState:_,reducers:{},extraReducers:function(e){e.addCase(g.pending,(function(e){e.currentState={type:"USER_DETAILS_ENTRY",result:o()}})).addCase(g.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(g.rejected,(function(e,r){e.currentState={type:"USER_DETAILS_ENTRY",result:c(r.payload)}}))}}),h=S.reducer;S.actions;var E=function(e){return e((function(e){return e.creditCardFlow.currentState}))};function I(e){var r=e.userDetailsEntry;return function(e){return e.type,r(e.result)}}export{I as creditCardFlowMatch,h as creditCardFlowReducer,g as submitUserDetailsAction,E as useCreditCardFlowState};
|
|
2
2
|
//# sourceMappingURL=creditCardFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditCardFlow.js","sources":["../src/utilities/loadScriptSrc.ts","../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { loadScriptInnerHtml } from './loadScriptInnerHtml';\n\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';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: string };\n}): Promise<IUserDetailsSubmissionResult> => {\n const isMaxPay = 'cc_number' in userDetails;\n const host = window.DEV_BASE_URL_CREDIT_CARD || '';\n const apiBaseURL = `${host}/api/v1`;\n const apiPath = isMaxPay ? '/maxpay/frontend/initiate-payment' : '/ecardon/frontend/initiate-payment';\n\n // Common userDetails properties\n const commonDetails = {\n rockman_id: window.pac_analytics.visitor?.rockmanId,\n landing_page_url: window.location.href,\n // Use conditional operation for service_id as it varies\n service_id: isMaxPay ? extraConfig?.serviceId : '2',\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n ...userDetails\n };\n\n const requestOptions = {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(commonDetails)\n };\n\n return fetch(`${apiBaseURL}${apiPath}`, requestOptions).then((response) => response.json());\n};\n\nexport { redirect, creditCardPayment };\n","import { IError } from '../../common-types/IError';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowState,\n IUserDetails,\n IUserDetailsEcardon,\n IUserDetailsSubmissionResult,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { creditCardPayment, redirect } from './api';\n\nexport async function submitUserDetails(\n window: Window,\n config: IConfig,\n userDetails: IUserDetails | IUserDetailsEcardon\n): Promise<{\n gateway_url: string;\n method: string;\n}> {\n const { slug, country, device, serviceId } = config;\n const search = window.location.search.substr(1) || '';\n const { visitor } = window.pac_analytics;\n\n const { rockmanId } = visitor;\n const extraConfig = { serviceId };\n const result: IUserDetailsSubmissionResult = window?.pac_analytics?.visitor?.page?.includes('agency')\n ? await redirect({\n window,\n slug,\n country,\n device,\n offer: window?.pac_analytics?.visitor?.offer,\n rockmanId,\n email: userDetails?.email,\n password: userDetails?.password,\n search\n })\n : await creditCardPayment({ window, userDetails, extraConfig });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return {\n gateway_url: result.gateway_url || result.redirect_url,\n method: result.redirect_url ? 'redirection' : result.method\n };\n }\n}\n\nexport const 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\nexport const 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","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 { RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { tracker } from '../../utilities/tracker';\nimport { submitUserDetails } from './main';\n\nconst initialState: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.NothingYet()\n }\n};\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\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Credit Card API\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails?.email });\n const { gateway_url, method } = await submitUserDetails(window, config, userDetails);\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {\n email: userDetails?.email,\n gateway_url\n });\n // Start Credit Card API\n\n if (method === 'jslink' && gateway_url) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url });\n loadScriptSrc({\n id: 'ecardon-credit-card',\n url: gateway_url,\n callBack: () => {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url });\n }\n });\n }\n\n if (method === 'redirection' && gateway_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url });\n window.location.href = gateway_url;\n }\n\n return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: SubmitUserDetailsErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidUserDetails':\n errorType = 'InvalidUserDetails';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {\n email: userDetails?.email,\n errorType: errorType || ex.type\n });\n\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n});\n\nconst creditCardFlowSlice = createSlice({\n name: 'creditCardFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitUserDetailsAction.pending, (state) => {\n state.currentState = { type: 'USER_DETAILS_ENTRY', result: RDS.Loading() };\n })\n .addCase(submitUserDetailsAction.fulfilled, (state, action: PayloadAction<USERDETAILSEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitUserDetailsAction.rejected, (state, action: PayloadAction<SubmitUserDetailsFailure>) => {\n state.currentState = {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: creditCardFlowReducer, actions: creditCardFlowActions } = creditCardFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectCreditCardFlowState = (state: any) => state.creditCardFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useCreditCardFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.creditCardFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowCurrentState,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\n\nfunction creditCardFlowMatch<R>({\n userDetailsEntry\n}: {\n userDetailsEntry: (rds: RDS.RemoteDataState<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>) => R;\n}): (state: CreditCardFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'USER_DETAILS_ENTRY':\n return userDetailsEntry(state.result);\n default:\n // TODO - this should be an error or something\n return userDetailsEntry(state.result);\n }\n };\n}\n\nexport { creditCardFlowMatch };\n"],"names":["redirect","_a","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","success","redirect_url","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","apiPath","commonDetails","landing_page_url","service_id","serviceId","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","type","message","error","Error","console","gateway_url","initialState","currentState","RDS.NothingYet","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","RDS.Success","warn","ex_1","errorType","recedeInFlow","creditCardFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","creditCardFlowReducer","reducer","actions","useCreditCardFlowState","useSelector","creditCardFlow","creditCardFlowMatch","userDetailsEntry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"creditCardFlow.js","sources":["../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: string };\n}): Promise<IUserDetailsSubmissionResult> => {\n const isMaxPay = 'cc_number' in userDetails;\n const host = window.DEV_BASE_URL_CREDIT_CARD || '';\n const apiBaseURL = `${host}/api/v1`;\n const apiPath = isMaxPay ? '/maxpay/frontend/initiate-payment' : '/ecardon/frontend/initiate-payment';\n\n // Common userDetails properties\n const commonDetails = {\n rockman_id: window.pac_analytics.visitor?.rockmanId,\n landing_page_url: window.location.href,\n // Use conditional operation for service_id as it varies\n service_id: isMaxPay ? extraConfig?.serviceId : '2',\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n ...userDetails\n };\n\n const requestOptions = {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(commonDetails)\n };\n\n return fetch(`${apiBaseURL}${apiPath}`, requestOptions).then((response) => response.json());\n};\n\nexport { redirect, creditCardPayment };\n","import { IError } from '../../common-types/IError';\nimport { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { creditCardPayment, redirect } from './api';\n\nexport async function submitUserDetails(\n window: Window,\n config: IConfig,\n userDetails: IUserDetails | IUserDetailsEcardon\n): Promise<{\n gateway_url: string;\n method: string;\n}> {\n const { slug, country, device, serviceId } = config;\n const search = window.location.search.substr(1) || '';\n const { visitor } = window.pac_analytics;\n\n const { rockmanId } = visitor;\n const extraConfig = { serviceId };\n const result: IUserDetailsSubmissionResult = window?.pac_analytics?.visitor?.page?.includes('agency')\n ? await redirect({\n window,\n slug,\n country,\n device,\n offer: window?.pac_analytics?.visitor?.offer,\n rockmanId,\n email: userDetails?.email,\n password: userDetails?.password,\n search\n })\n : await creditCardPayment({ window, userDetails, extraConfig });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return {\n gateway_url: result.gateway_url || result.redirect_url,\n method: result.redirect_url ? 'redirection' : result.method\n };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowState,\n IUserDetails,\n IUserDetailsEcardon,\n SubmitUserDetailsErrorTypes,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess,\n USERDETAILSEntryState\n} from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { submitUserDetails } from './main';\n\nconst mockedUserDetailsEntrySuccess: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n gateway_url: 'https://www.google.com',\n method: 'jslink'\n })\n }\n};\n\nconst mockedUserDetailsEntryFailure: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n errorType: 'AlreadySubscribed',\n error: 'Already Subscribed'\n })\n }\n};\n\nconst defaultInitialState: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'user-details-entry-failure-state':\n return mockedUserDetailsEntryFailure;\n case 'user-details-entry-success-state':\n return mockedUserDetailsEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitUserDetailsArgs {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n}\n/**\n * submitUserDetailsAction\n * @returns {type: ' 'pinFlow/submitUserDetailsAction', payload: {type: PossibleTypes, result: USERDETAILSEntryState}}\n \n * Calls redirect or max api and returns a url\n * \n */\nexport const submitUserDetailsAction = createAsyncThunk<\n USERDETAILSEntryState,\n SubmitUserDetailsArgs,\n {\n rejectValue: SubmitUserDetailsFailure;\n }\n>('creditCardFlow/submitUserDetailsAction', async ({ window, userDetails }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Credit Card API\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails?.email });\n const { gateway_url, method } = await submitUserDetails(window, config, userDetails);\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {\n email: userDetails?.email,\n gateway_url\n });\n // Start Credit Card API\n\n if (method === 'jslink' && gateway_url) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url });\n loadScriptSrc({\n id: 'ecardon-credit-card',\n url: gateway_url,\n callBack: () => {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url });\n }\n });\n }\n\n if (method === 'redirection' && gateway_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url });\n window.location.href = gateway_url;\n }\n\n return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: SubmitUserDetailsErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidUserDetails':\n errorType = 'InvalidUserDetails';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {\n email: userDetails?.email,\n errorType: errorType || ex.type\n });\n\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n});\n\nconst creditCardFlowSlice = createSlice({\n name: 'creditCardFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitUserDetailsAction.pending, (state) => {\n state.currentState = { type: 'USER_DETAILS_ENTRY', result: RDS.Loading() };\n })\n .addCase(submitUserDetailsAction.fulfilled, (state, action: PayloadAction<USERDETAILSEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitUserDetailsAction.rejected, (state, action: PayloadAction<SubmitUserDetailsFailure>) => {\n state.currentState = {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: creditCardFlowReducer, actions: creditCardFlowActions } = creditCardFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectCreditCardFlowState = (state: any) => state.creditCardFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useCreditCardFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.creditCardFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowCurrentState,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\n\nfunction creditCardFlowMatch<R>({\n userDetailsEntry\n}: {\n userDetailsEntry: (rds: RDS.RemoteDataState<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>) => R;\n}): (state: CreditCardFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'USER_DETAILS_ENTRY':\n return userDetailsEntry(state.result);\n default:\n // TODO - this should be an error or something\n return userDetailsEntry(state.result);\n }\n };\n}\n\nexport { creditCardFlowMatch };\n"],"names":["redirect","_a","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","success","redirect_url","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","apiPath","commonDetails","landing_page_url","service_id","serviceId","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","type","message","error","Error","console","gateway_url","mockedUserDetailsEntrySuccess","currentState","RDS.Success","mockedUserDetailsEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitUserDetailsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","data","tracker","advancedInFlow","sent","gateway_url_1","loadScriptSrc","id","callBack","customEvent","warn","ex_1","recedeInFlow","creditCardFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","creditCardFlowReducer","reducer","actions","useCreditCardFlowState","useSelector","creditCardFlow","creditCardFlowMatch","userDetailsEntry"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{searchToObject as i}from"./searchToObject.js";import"tslib";var n=function(i){var n=i.msisdnValue,e=i.dispatch,s=i.submitMSISDNAction,t=i.isHeaderEnrichmentSuccess,o=i.isHeaderEnrichmentAutoSubmit;n&&n.length>3&&(!t||!0===t&&!0===o)&&e(s({window:window,msisdn:n}))},e=function(n){var e=n.window,s=n.isHeaderEnrichmentSuccess,t=n.onEnd,o=n.internationalNumber,c=n.isValid,r=s?"mobile_data":"wifi",a=i(e);if(!0===s&&"kw"===process.env.country&&""!==o&&c)t(o.match(/\d+/gi).join(""));else if(!0===s&&"true"===(null==a?void 0:a.success)&&"1"===a["msisdn-alias"]){if(null==a?void 0:a.msisdn)t(a.msisdn,{network_type:r,"skip-validation":"1"})}else void 0!==e&&function(i,n){return void 0!==i&&null!==document.cookie.match(new RegExp("^(.*;)?\\s*".concat(n,"\\s*=\\s*[^;]+(.*)?$")))}(e,"OMEU")&&"es"===process.env.country?t("1",{network_type:r,"skip-validation":"1"}):o&&("ci"===process.env.country?t(o.match(/\d+/gi).join(""),{network_type:r}):t(o.match(/\d+/gi).join("")))};export{n as handleAutoSubmitMsisdn,e as handleFormSubmit};
|
|
2
2
|
//# sourceMappingURL=handleSubmitNumber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleSubmitNumber.js","sources":["../src/utilities/isCookieExists.ts","../src/utilities/handleSubmitNumber.ts"],"sourcesContent":["export const isCookieExists = (window: Window, cookieName: string) =>\n typeof window !== 'undefined' &&\n document.cookie.match(new RegExp(`^(.*;)?\\\\s*${cookieName}\\\\s*=\\\\s*[^;]+(.*)?$`)) !== null;\n","import { Dispatch } from '@reduxjs/toolkit';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport
|
|
1
|
+
{"version":3,"file":"handleSubmitNumber.js","sources":["../src/utilities/isCookieExists.ts","../src/utilities/handleSubmitNumber.ts"],"sourcesContent":["export const isCookieExists = (window: Window, cookieName: string) =>\n typeof window !== 'undefined' &&\n document.cookie.match(new RegExp(`^(.*;)?\\\\s*${cookieName}\\\\s*=\\\\s*[^;]+(.*)?$`)) !== null;\n","import { Dispatch } from '@reduxjs/toolkit';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { isCookieExists } from './isCookieExists';\nimport { searchToObject } from './searchToObject';\n\nexport const handleAutoSubmitMsisdn = ({\n msisdnValue,\n dispatch,\n submitMSISDNAction,\n isHeaderEnrichmentSuccess,\n isHeaderEnrichmentAutoSubmit\n}: {\n window: Window;\n msisdnValue: string;\n dispatch: Dispatch;\n submitMSISDNAction: ({ window, msisdn }: { window: Window; msisdn: string }) => any;\n isHeaderEnrichmentSuccess: boolean;\n isHeaderEnrichmentAutoSubmit?: boolean;\n}) => {\n if (\n msisdnValue &&\n msisdnValue.length > 3 &&\n (!isHeaderEnrichmentSuccess || (isHeaderEnrichmentSuccess === true && isHeaderEnrichmentAutoSubmit === true))\n ) {\n dispatch(submitMSISDNAction({ window, msisdn: msisdnValue }));\n }\n};\n\nexport const handleFormSubmit = ({\n window,\n isHeaderEnrichmentSuccess,\n onEnd,\n internationalNumber,\n isValid\n}: {\n window: Window;\n isHeaderEnrichmentSuccess: boolean;\n country: string;\n setInternationalNumber: (msisdn: string) => void;\n onEnd: (msisdn: string, extraParams?: { [key: string]: string }) => void;\n internationalNumber: string;\n isValid: boolean;\n}) => {\n const networkType = isHeaderEnrichmentSuccess ? 'mobile_data' : 'wifi';\n const searchObj = searchToObject(window) as any;\n\n if (isHeaderEnrichmentSuccess === true && process.env.country === 'kw' && internationalNumber !== '' && isValid) {\n onEnd(internationalNumber.match(/\\d+/gi).join(''));\n } else if (isHeaderEnrichmentSuccess === true && searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n // Special case Digital Virgo sents encrypted msisdn we dont need to validate is\n if (searchObj?.msisdn) {\n const encryptedMsisdn = searchObj.msisdn;\n onEnd(encryptedMsisdn, { network_type: networkType, 'skip-validation': '1' });\n }\n } else if (typeof window !== 'undefined' && isCookieExists(window, 'OMEU') && process.env.country === 'es') {\n onEnd('1', { network_type: networkType, 'skip-validation': '1' });\n } else if (internationalNumber) {\n if (process.env.country === 'ci') {\n onEnd(internationalNumber.match(/\\d+/gi).join(''), { network_type: networkType });\n } else {\n onEnd(internationalNumber.match(/\\d+/gi).join(''));\n }\n }\n};\n"],"names":["handleAutoSubmitMsisdn","_a","msisdnValue","dispatch","submitMSISDNAction","isHeaderEnrichmentSuccess","isHeaderEnrichmentAutoSubmit","length","window","msisdn","handleFormSubmit","onEnd","internationalNumber","isValid","networkType","searchObj","searchToObject","process","env","country","match","join","success","network_type","cookieName","document","cookie","RegExp","concat","isCookieExists"],"mappings":"mEAAO,ICKMA,EAAyB,SAACC,GACrC,IAAAC,EAAWD,EAAAC,YACXC,EAAQF,EAAAE,SACRC,EAAkBH,EAAAG,mBAClBC,EAAyBJ,EAAAI,0BACzBC,EAA4BL,EAAAK,6BAU1BJ,GACAA,EAAYK,OAAS,KACnBF,IAA4D,IAA9BA,IAAuE,IAAjCC,IAEtEH,EAASC,EAAmB,CAAEI,OAAMA,OAAEC,OAAQP,IAElD,EAEaQ,EAAmB,SAACT,GAC/B,IAAAO,EAAMP,EAAAO,OACNH,EAAyBJ,EAAAI,0BACzBM,EAAKV,EAAAU,MACLC,EAAmBX,EAAAW,oBACnBC,EAAOZ,EAAAY,QAUDC,EAAcT,EAA4B,cAAgB,OAC1DU,EAAYC,EAAeR,GAEjC,IAAkC,IAA9BH,GAA8D,OAAxBY,QAAQC,IAAIC,SAA4C,KAAxBP,GAA8BC,EACtGF,EAAMC,EAAoBQ,MAAM,SAASC,KAAK,UACzC,IAAkC,IAA9BhB,GAA6D,UAAvBU,aAAA,EAAAA,EAAWO,UAAoD,MAA9BP,EAAU,gBAAyB,CAEnH,GAAIA,eAAAA,EAAWN,OAEbE,EADwBI,EAAUN,OACX,CAAEc,aAAcT,EAAa,kBAAmB,KAE1E,WAA4B,IAAXN,GDtDU,SAACA,EAAgBgB,GAC7C,YAAkB,IAAXhB,GAC+E,OAAtFiB,SAASC,OAAON,MAAM,IAAIO,OAAO,cAAAC,OAAcJ,EAAU,yBADzD,CCqD4CK,CAAerB,EAAQ,SAAmC,OAAxBS,QAAQC,IAAIC,QACxFR,EAAM,IAAK,CAAEY,aAAcT,EAAa,kBAAmB,MAClDF,IACmB,OAAxBK,QAAQC,IAAIC,QACdR,EAAMC,EAAoBQ,MAAM,SAASC,KAAK,IAAK,CAAEE,aAAcT,IAEnEH,EAAMC,EAAoBQ,MAAM,SAASC,KAAK,KAGpD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{l as n}from"./loadScriptInnerHtml-BzQm-AFb.js";var e=function(e){var t=e.url,o=e.key,c=e.isRecaptcha,r=void 0!==c&&c,a=e.callBack,i=e.id,l=void 0===i?"":i,s=document.createElement("script");s.type="text/javascript",s.src=t,s.id="injected_script_".concat(l);var d=document.getElementsByTagName("head")[0];d.insertBefore(s,d.firstChild),r&&(s.onload=function(){var e='\n grecaptcha.ready(function() {\n grecaptcha.execute("'.concat(o,'", {action: \'submit\'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log("-------" + token);\n });\n });\n ');n(e,!0)}),s.onerror=function(){console.error("Error loading script",t),a&&a()}};export{e as l};
|
|
2
|
+
//# sourceMappingURL=loadScriptSrc-Da4autZd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadScriptSrc-Da4autZd.js","sources":["../src/utilities/loadScriptSrc.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"],"names":["loadScriptSrc","_a","url","key","_b","isRecaptcha","callBack","_c","id","script","document","createElement","type","src","concat","headElem","getElementsByTagName","insertBefore","firstChild","onload","scriptInner","loadScriptInnerHtml","onerror","console","error"],"mappings":"sDAaM,IAAAA,EAAgB,SAACC,OACrBC,EAAGD,EAAAC,IACHC,EAAGF,EAAAE,IACHC,EAAmBH,EAAAI,YAAnBA,OAAc,IAAAD,KACdE,aACAC,EAAAN,EAAAO,GAAAA,OAAE,IAAAD,EAAG,GAAEA,EAQDE,EAASC,SAASC,cAAc,UACtCF,EAAOG,KAAO,kBACdH,EAAOI,IAAMX,EACbO,EAAOD,GAAK,mBAAmBM,OAAAN,GAC/B,IAAMO,EAAWL,SAASM,qBAAqB,QAAQ,GACvDD,EAASE,aAAaR,EAAQM,EAASG,YAEnCb,IACFI,EAAOU,OAAS,WACd,IAAMC,EAAc,4EAEQN,OAAAX,iOAO5BkB,EAAoBD,GAAa,EACnC,GAGFX,EAAOa,QAAU,WACfC,QAAQC,MAAM,uBAAwBtB,GAClCI,GACFA,GAEJ,CACF"}
|
package/dist/moFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as t,__generator as
|
|
1
|
+
import{__awaiter as t,__generator as r,__read as e,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as a}from"@reduxjs/toolkit";import{S as c,N as s,L as i,F as u}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{c as f}from"./checkSubscriptionByRockmanIdOnly-BwR1un1L.js";import{a as v}from"./helpers-xPhGBX-B.js";import"pacman-client";import"uuid";var p=function(t){return t((function(t){return t.moFlow.currentState}))};function y(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var S=function(n){var o=n.window,a=n.slug,c=n.country,s=n.msisdn,i=n.device,u=n.offer,d=n.rockmanId,l=n.extraParamsQs;return t(void 0,void 0,void 0,(function(){var t,n,m,f,v,p,y;return r(this,(function(r){switch(r.label){case 0:return o.api_ajax_url?[4,fetch(o.api_ajax_url).then((function(t){return t.json()}))]:[3,2];case 1:return n=r.sent(),[3,3];case 2:n=null,r.label=3;case 3:return t=n,m={action:"trigger-message",slug:a,country:c,msisdn:s,device:i,offerId:u,rockman_id:d,page:encodeURIComponent(null===(y=null==o?void 0:o.location)||void 0===y?void 0:y.href),sam_g_token:o.reCaptchaToken||"",antifraud_id:o.antifraud_id||"",language_code:o.languageCode||"",partner_form_action:(null==t?void 0:t.form_action)?encodeURIComponent(null==t?void 0:t.form_action):""},f=Object.entries(m).filter((function(t){var r=e(t,2);return r[0],r[1]})).map((function(t){var r=e(t,2),n=r[0],o=r[1];return"".concat(n,"=").concat(o)})).join("&"),v=o.DEV_BASE_URL||"",p="".concat(v,"/tallyman/v1/?").concat(f,"&").concat(l),[2,fetch(p).then((function(t){return t.json()}))]}}))}))};function w(e,o,a,c){var s,i;return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=n(n({},o||{}),{offer:null===(i=null===(s=e.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===i?void 0:i.offer}),[2,h(e,t,a,c)]}))}))}function h(e,o,a,c){var s;return t(this,void 0,void 0,(function(){var t,i,u,d,l,m,f,v,p,y,w;return r(this,(function(r){switch(r.label){case 0:return t=o.slug,i=o.country,u=o.device,d=o.offer,l=e.location.search.substr(1)||"",m=c?"&".concat(Object.keys(c).map((function(t){return"".concat(t,"=").concat(c[t])})).join("&")):"",f=(null===(s=a.match(/\d+/gi))||void 0===s?void 0:s.join(""))||"",v=e.pac_analytics.visitor.rockmanId,[4,S({window:e,slug:t,country:i,msisdn:f,device:u,offer:d,rockmanId:v,search:l,extraParamsQs:m})];case 1:if(!1===(p=r.sent()).success)throw y="ALREADY SUBSCRIBED"===p.message?"AlreadySubscribed":"InvalidMSISDN",(w=new Error("".concat(y,":\n").concat(p.message))).type=y,w.productUrl=p.product_url?p.product_url:"",console.error(w),w;return[2,n(n({},p),{keyword:p.displayKeyword})]}}))}))}var b={currentState:{type:"MSISDNEntry",result:c({keyword:"TEST OK",shortcode:"777"})}},I={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},_={currentState:{type:"MSISDNEntry",result:s()}},g=function(t){var r=d(t);if(!r["mock-flow"])return _;switch(r["current-state"]){case"msisdn-entry-failure-state":return I;case"msisdn-entry-success-state":return b;default:return console.error("Mock Flow not supported"),_}}(window),k=o("moFlow/submitMSISDNAction",(function(e,o){var a=e.window,s=e.msisdn,i=e.extraParams,u=o.getState,d=o.rejectWithValue;return t(void 0,void 0,void 0,(function(){var e,o,p,y,S,h,b,I;return r(this,(function(_){switch(_.label){case 0:if(e=u(),!(null===(I=null===(b=null===(h=null==e?void 0:e.strategy)||void 0===h?void 0:h.currentState)||void 0===b?void 0:b.data)||void 0===I?void 0:I.config))return[2,d({errorType:"UnexpectedState"})];o=e.strategy.currentState.data.config,_.label=1;case 1:return _.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:s}),[4,w(a,o,s,i)];case 2:return p=_.sent(),m.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:s}),i&&i.storeMsisdn&&"true"===i.storeMsisdn?[4,l(s).then((function(t){t&&t.data&&t.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){m.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:_.sent(),_.label=4;case 4:return function(e){return t(this,void 0,void 0,(function(){var t,n,o;return r(this,(function(r){switch(r.label){case 0:return t=e.pac_analytics.visitor.rockmanId,[4,v((function(){return f({window:e,rockmanId:t})}),60,(function(t){return t.success}),0)];case 1:if(!0===(n=r.sent()).success&&n.product_url&&""!==n.product_url)return e.location.href=n.product_url,[2,n.product_url];throw(o=new Error("".concat("SubscriptionFailed",":\n").concat(n.message))).type="SubscriptionFailed",o}}))}))}(a).then((function(t){m.advancedInFlow("tallyman.v1-mo","sale",{msisdn:s}),setTimeout((function(){a.location.href=t}),1e3)})),[2,{type:"MSISDNEntry",result:c(n({},p))}];case 5:switch(y=_.sent(),console.warn(y),S=void 0,y.type){case"AlreadySubscribed":S="AlreadySubscribed";break;case"InvalidMSISDN":S="InvalidMSISDN";break;default:S="UnknownError"}return m.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:s,errorType:S||"UnknownError"}),[2,d({errorType:S,productUrl:y.productUrl})];case 6:return[2]}}))}))})),E=a({name:"moFlow",initialState:g,reducers:{backToStartAction:function(t){m.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),t.currentState={type:"MSISDNEntry",result:s()}}},extraReducers:function(t){t.addCase(k.pending,(function(t){t.currentState={type:"MSISDNEntry",result:i()}})).addCase(k.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(k.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:u(r.payload)}}))}}),j=E.reducer,M=E.actions.backToStartAction;export{M as backToStartAction,y as moFlowMatch,j as moFlowReducer,k as submitMSISDNAction,p as useMoFlowState};
|
|
2
2
|
//# sourceMappingURL=moFlow.js.map
|
package/dist/moFlow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n antifraud_id: window.antifraud_id || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}&${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport {\n IGoogleReCaptcha,\n IKeywordShortcode,\n IMSISDNSubmissionResult,\n MoFlowState,\n MSISDNEntryFailure,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string; productUrl: string };\n error.type = type;\n error.productUrl = result.product_url ? result.product_url : '';\n\n console.error(error);\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = checkResult.product_url;\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN, { moCheckSubscription } from './main';\n\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst initialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n // Check For Subscription by rockman id and redirect to product url\n moCheckSubscription(window).then((product_url) => {\n tracker.advancedInFlow('tallyman.v1-mo', 'sale', { msisdn });\n setTimeout(() => {\n window.location.href = product_url;\n }, 1000);\n });\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType: errorType || 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\nexport const { backToStartAction } = moFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","antifraud_id","language_code","languageCode","partner_form_action","form_action","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","search","substr","keys","k","match","sent","success","message","error","Error","productUrl","product_url","console","__assign","keyword","displayKeyword","initialState","RDS.NothingYet","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","strategy","data","tracker","advancedInFlow","keywordAndShortcode","storeMsisdn","customEvent","catch","loop","checkSubscriptionByRockmanIdOnly","r","checkResult","moCheckSubscription","setTimeout","RDS.Success","warn","ex_1","errorType","recedeInFlow","moFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","moFlowReducer","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n antifraud_id: window.antifraud_id || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}&${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string; productUrl: string };\n error.type = type;\n error.productUrl = result.product_url ? result.product_url : '';\n\n console.error(error);\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = checkResult.product_url;\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN, { moCheckSubscription } from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n // Check For Subscription by rockman id and redirect to product url\n moCheckSubscription(window).then((product_url) => {\n tracker.advancedInFlow('tallyman.v1-mo', 'sale', { msisdn });\n setTimeout(() => {\n window.location.href = product_url;\n }, 1000);\n });\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType: errorType || 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\nexport const { backToStartAction } = moFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","antifraud_id","language_code","languageCode","partner_form_action","form_action","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","search","substr","keys","k","match","sent","success","message","error","Error","productUrl","product_url","console","__assign","keyword","displayKeyword","mockedMSISDNEntrySuccess","RDS.Success","shortcode","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_e","strategy","data","tracker","advancedInFlow","keywordAndShortcode","_f","storeMsisdn","customEvent","catch","loop","checkSubscriptionByRockmanIdOnly","r","checkResult","moCheckSubscription","setTimeout","warn","ex_1","recedeInFlow","moFlowSlice","createSlice","name","reducers","backToStartAction","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"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"}
|
package/dist/moRedirFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as
|
|
1
|
+
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as o,N as s,L as i,F as c}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as u}from"./searchToObject.js";import{s as d}from"./storeMsisdn-Cjq8_qYH.js";import{t as l}from"./tracker-DaaILhEr.js";import{t as m}from"./tryGetIPRangeName-QW-9NgzE.js";import"pacman-client";import"uuid";var f=function(e){return e((function(e){return e.moRedirFlow.currentState}))};function v(e){var r=e.msisdnEntry;return function(e){return e.type,r(e.result)}}var y=function(n){var a=n.window,o=n.slug,s=n.country,i=n.msisdn,c=n.device,u=n.offer,d=n.rockmanId,l=n.ip_range_name,m=n.search,f=n.extraParamsQs,v=n.email,y=n.password;return e(void 0,void 0,void 0,(function(){var e,n,S,p,w,I;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:o,country:s,device:c,offerId:u.toString(),rockman_id:d,page:encodeURIComponent(a.location.href),network_type:l?"":"wifi"},m&&{search:m}),(null===(I=null===(w=null===(p=a.pac_analytics)||void 0===p?void 0:p.visitor)||void 0===w?void 0:w.page)||void 0===I?void 0:I.includes("agency"))&&{evinaTi:d}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),v&&y?{email:v,password:y}:{msisdn:i}),f&&{extraParams:f})).toString(),n=a.DEV_BASE_URL||"",S="".concat(n,"/tallyman/v1/?").concat(e),o.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:d,redirect_url:S}]:[2,fetch(S).then((function(e){return e.json()}))]}))}))};function S(n,a,o,s){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){return e=t({offer:n.pac_analytics.visitor.offer},a||{}),[2,p(n,e,o,s)]}))}))}function p(t,n,a,o){return e(this,void 0,void 0,(function(){var e,s,i,c,u,d,l,f,v,S,p,w,I;return r(this,(function(r){switch(r.label){case 0:return e=n.slug,s=n.country,i=n.device,c=n.offer,u=t.location.search.substr(1)||"",d=o?"&".concat(Object.keys(o).map((function(e){return"".concat(e,"=").concat(o[e])})).join("&")):"",l=a.match(/\d+/gi).join(""),f=t.pac_analytics.visitor,v=f.rockmanId,"ci"!==s?[3,2]:[4,m(f)];case 1:return S=r.sent(),[3,3];case 2:S=null,r.label=3;case 3:return[4,y({window:t,slug:e,country:s,msisdn:l,device:i,offer:c,rockmanId:v,ip_range_name:S,search:u,extraParamsQs:d})];case 4:if(!1===(p=r.sent()).success)throw w="ALREADY SUBSCRIBED"===p.message?"AlreadySubscribed":"InvalidMSISDN",(I=new Error("".concat(w,":\n").concat(p.message))).type=w,console.error(I),I;return[2,p.redirect_url]}}))}))}var w={currentState:{type:"MSISDNEntry",result:o({href:"/product"})}},I={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},h={currentState:{type:"MSISDNEntry",result:s()}},g=function(e){var r=u(e);if(!r["mock-flow"])return h;switch(r["current-state"]){case"msisdn-entry-failure-state":return I;case"msisdn-entry-success-state":return w;default:return console.error("Mock Flow not supported"),h}}(window),b=n("moRedirFlow/submitMSISDNAction",(function(t,n){var a=t.window,s=t.msisdn,i=t.extraParams,c=n.getState,u=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,n,m,f,v,y,p;return r(this,(function(r){switch(r.label){case 0:if(e=c(),!(null===(p=null===(y=null===(v=null==e?void 0:e.strategy)||void 0===v?void 0:v.currentState)||void 0===y?void 0:y.data)||void 0===p?void 0:p.config))return[2,u({errorType:"UnexpectedState"})];t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submitted",{msisdn:s}),[4,S(a,t,s,i)];case 2:return n=r.sent(),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:s}),i&&i.storeMsisdn&&"true"===i.storeMsisdn?[4,d(s).then((function(e){e&&e.data&&e.data.success?l.customEvent("Flow","advance-auto","msisdn-stored-success"):l.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){l.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:o({href:n})}];case 5:switch(m=r.sent(),console.warn(m),f=void 0,m.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidMSISDN":f="InvalidMSISDN";break;default:f="UnknownError"}return l.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:s,errorType:"UnknownError"}),[2,u({errorType:f,productUrl:m.productUrl})];case 6:return[2]}}))}))})),E=a({name:"moRedirFlow",initialState:g,reducers:{backToStartAction:function(e){l.recedeInFlow("tallyman.v1-mo-redir","mo-redir-state","requested to change phone number"),e.currentState={type:"MSISDNEntry",result:s()}}},extraReducers:function(e){e.addCase(b.pending,(function(e){e.currentState={type:"MSISDNEntry",result:i()}})).addCase(b.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(b.rejected,(function(e,r){e.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),k=E.reducer,M=E.actions.backToStartAction;export{M as backToStartAction,v as moRedirFlowMatch,k as moRedirFlowReducer,b as submitMSISDNAction,f as useMoRedirFlowState};
|
|
2
2
|
//# sourceMappingURL=moRedirFlow.js.map
|