ouisys-engine 4.7.0-alpha.1 → 4.7.0-alpha.4
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/RemoteDataState-lcf8PfJd.js +2 -0
- package/dist/{RemoteDataState-CwHLI23e.js.map → RemoteDataState-lcf8PfJd.js.map} +1 -1
- package/dist/bupperizeCountry-CEtt0MKz.js +2 -0
- package/dist/bupperizeCountry-CEtt0MKz.js.map +1 -0
- package/dist/checkSubscriptionByRockmanIdOnly-BwR1un1L.js +2 -0
- package/dist/{checkSubscriptionByRockmanIdOnly-C89Ph9cV.js.map → checkSubscriptionByRockmanIdOnly-BwR1un1L.js.map} +1 -1
- package/dist/checkSubscriptionHander.js +1 -52
- package/dist/checkSubscriptionHander.js.map +1 -1
- package/dist/click2smsFlow.js +1 -245
- package/dist/click2smsFlow.js.map +1 -1
- package/dist/creditCardFlow.js +1 -247
- package/dist/creditCardFlow.js.map +1 -1
- package/dist/getConfig.js +1 -13
- package/dist/getConfig.js.map +1 -1
- package/dist/handleClickChainFlow.js +1 -31
- package/dist/handleClickChainFlow.js.map +1 -1
- package/dist/handleSubmitNumber.js +1 -64
- package/dist/handleSubmitNumber.js.map +1 -1
- package/dist/helpers-xPhGBX-B.js +2 -0
- package/dist/helpers-xPhGBX-B.js.map +1 -0
- package/dist/loadScriptInnerHtml-BzQm-AFb.js +2 -0
- package/dist/loadScriptInnerHtml-BzQm-AFb.js.map +1 -0
- package/dist/moFlow.js +1 -274
- package/dist/moFlow.js.map +1 -1
- package/dist/moRedirFlow.js +1 -224
- package/dist/moRedirFlow.js.map +1 -1
- package/dist/oneClickFlow.js +1 -463
- package/dist/oneClickFlow.js.map +1 -1
- package/dist/pinFlow.js +1 -696
- package/dist/pinFlow.js.map +1 -1
- package/dist/searchToObject.js +1 -18
- package/dist/searchToObject.js.map +1 -1
- package/dist/storeMsisdn-Cjq8_qYH.js +2 -0
- package/dist/{storeMsisdn-ChiBh8mI.js.map → storeMsisdn-Cjq8_qYH.js.map} +1 -1
- package/dist/strategy.js +1 -49
- package/dist/strategy.js.map +1 -1
- package/dist/strategySlice-CtjrhCrS.js +2 -0
- package/dist/{strategySlice-bF74rxDK.js.map → strategySlice-CtjrhCrS.js.map} +1 -1
- package/dist/tracker-DaaILhEr.js +2 -0
- package/dist/tracker-DaaILhEr.js.map +1 -0
- package/dist/tracker.js +1 -4
- package/dist/tracker.js.map +1 -1
- package/dist/tryGetIPRangeName-QW-9NgzE.js +2 -0
- package/dist/tryGetIPRangeName-QW-9NgzE.js.map +1 -0
- package/dist/ussdFlow.js +1 -210
- package/dist/ussdFlow.js.map +1 -1
- package/package.json +2 -6
- package/dist/RemoteDataState-CwHLI23e.js +0 -75
- package/dist/bupperizeCountry-CCDIOHP6.js +0 -4
- package/dist/bupperizeCountry-CCDIOHP6.js.map +0 -1
- package/dist/checkSubscriptionByRockmanIdOnly-C89Ph9cV.js +0 -27
- package/dist/helpers-J_h-ZgxH.js +0 -29
- package/dist/helpers-J_h-ZgxH.js.map +0 -1
- package/dist/loadScriptInnerHtml-DPcoY467.js +0 -26
- package/dist/loadScriptInnerHtml-DPcoY467.js.map +0 -1
- package/dist/storeMsisdn-ChiBh8mI.js +0 -58
- package/dist/strategySlice-bF74rxDK.js +0 -842
- package/dist/tracker-B_zsMRN2.js +0 -79
- package/dist/tracker-B_zsMRN2.js.map +0 -1
- package/dist/tryGetIPRangeName-C69HEG5W.js +0 -42
- package/dist/tryGetIPRangeName-C69HEG5W.js.map +0 -1
package/dist/creditCardFlow.js
CHANGED
|
@@ -1,248 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
3
|
-
import { S as Success, L as Loading, F as Failure, N as NothingYet } from './RemoteDataState-CwHLI23e.js';
|
|
4
|
-
import { l as loadScriptInnerHtml } from './loadScriptInnerHtml-DPcoY467.js';
|
|
5
|
-
import { t as tracker } from './tracker-B_zsMRN2.js';
|
|
6
|
-
import 'pacman-client';
|
|
7
|
-
import 'uuid';
|
|
8
|
-
|
|
9
|
-
var loadScriptSrc = function (_a) {
|
|
10
|
-
var url = _a.url, key = _a.key, _b = _a.isRecaptcha, isRecaptcha = _b === void 0 ? false : _b, callBack = _a.callBack, _c = _a.id, id = _c === void 0 ? '' : _c;
|
|
11
|
-
var script = document.createElement('script');
|
|
12
|
-
script.type = 'text/javascript';
|
|
13
|
-
script.src = url;
|
|
14
|
-
script.id = "injected_script_".concat(id);
|
|
15
|
-
var headElem = document.getElementsByTagName('head')[0];
|
|
16
|
-
headElem.insertBefore(script, headElem.firstChild);
|
|
17
|
-
if (isRecaptcha) {
|
|
18
|
-
script.onload = function () {
|
|
19
|
-
var scriptInner = "\n grecaptcha.ready(function() {\n grecaptcha.execute(\"".concat(key, "\", {action: 'submit'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log(\"-------\" + token);\n });\n });\n ");
|
|
20
|
-
loadScriptInnerHtml(scriptInner, true);
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
script.onerror = function () {
|
|
24
|
-
console.error('Error loading script', url);
|
|
25
|
-
if (callBack) {
|
|
26
|
-
callBack();
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
var redirect = function (_a) {
|
|
32
|
-
var window = _a.window, slug = _a.slug, country = _a.country, msisdn = _a.msisdn, device = _a.device, offer = _a.offer, rockmanId = _a.rockmanId, ip_range_name = _a.ip_range_name, search = _a.search, extraParamsQs = _a.extraParamsQs, email = _a.email, password = _a.password;
|
|
33
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
34
|
-
var params, host, url;
|
|
35
|
-
var _b, _c, _d;
|
|
36
|
-
return __generator(this, function (_e) {
|
|
37
|
-
params = new URLSearchParams(__assign(__assign(__assign(__assign(__assign(__assign({ action: 'redirect', slug: slug, country: country, device: device, offerId: offer.toString(), rockman_id: rockmanId, page: encodeURIComponent(window.location.href), network_type: ip_range_name ? '' : 'wifi' }, (search && { search: search })), (((_d = (_c = (_b = window.pac_analytics) === null || _b === void 0 ? void 0 : _b.visitor) === null || _c === void 0 ? void 0 : _c.page) === null || _d === void 0 ? void 0 : _d.includes('agency')) && { evinaTi: rockmanId })), (window.securityProcessId && { securityProcessId: window.securityProcessId })), (window.languageCode && { language_code: window.languageCode })), (email && password ? { email: email, password: password } : { msisdn: msisdn })), (extraParamsQs && { extraParams: extraParamsQs }))).toString();
|
|
38
|
-
host = window.DEV_BASE_URL || '';
|
|
39
|
-
url = "".concat(host, "/tallyman/v1/?").concat(params);
|
|
40
|
-
if (slug.includes('za-mtn-beyondvr-r7')) {
|
|
41
|
-
return [2 /*return*/, {
|
|
42
|
-
success: true,
|
|
43
|
-
rockman_id: rockmanId,
|
|
44
|
-
redirect_url: url
|
|
45
|
-
}];
|
|
46
|
-
}
|
|
47
|
-
return [2 /*return*/, fetch(url).then(function (x) { return x.json(); })];
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
var creditCardPayment = function (_a) {
|
|
52
|
-
var window = _a.window, userDetails = _a.userDetails, extraConfig = _a.extraConfig;
|
|
53
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
54
|
-
var isMaxPay, host, apiBaseURL, apiPath, commonDetails, requestOptions;
|
|
55
|
-
var _b;
|
|
56
|
-
return __generator(this, function (_c) {
|
|
57
|
-
isMaxPay = 'cc_number' in userDetails;
|
|
58
|
-
host = window.DEV_BASE_URL_CREDIT_CARD || '';
|
|
59
|
-
apiBaseURL = "".concat(host, "/api/v1");
|
|
60
|
-
apiPath = isMaxPay ? '/maxpay/frontend/initiate-payment' : '/ecardon/frontend/initiate-payment';
|
|
61
|
-
commonDetails = __assign(__assign({ rockman_id: (_b = window.pac_analytics.visitor) === null || _b === void 0 ? void 0 : _b.rockmanId, landing_page_url: window.location.href,
|
|
62
|
-
// Use conditional operation for service_id as it varies
|
|
63
|
-
service_id: isMaxPay ? extraConfig === null || extraConfig === void 0 ? void 0 : extraConfig.serviceId : '2' }, (isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip })), userDetails);
|
|
64
|
-
requestOptions = {
|
|
65
|
-
method: 'POST',
|
|
66
|
-
headers: new Headers({ 'Content-Type': 'application/json' }),
|
|
67
|
-
body: JSON.stringify(commonDetails)
|
|
68
|
-
};
|
|
69
|
-
return [2 /*return*/, fetch("".concat(apiBaseURL).concat(apiPath), requestOptions).then(function (response) { return response.json(); })];
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
function submitUserDetails(window, config, userDetails) {
|
|
75
|
-
var _a, _b, _c, _d, _e;
|
|
76
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
77
|
-
var slug, country, device, serviceId, search, visitor, rockmanId, extraConfig, result, _f, type, error;
|
|
78
|
-
return __generator(this, function (_g) {
|
|
79
|
-
switch (_g.label) {
|
|
80
|
-
case 0:
|
|
81
|
-
slug = config.slug, country = config.country, device = config.device, serviceId = config.serviceId;
|
|
82
|
-
search = window.location.search.substr(1) || '';
|
|
83
|
-
visitor = window.pac_analytics.visitor;
|
|
84
|
-
rockmanId = visitor.rockmanId;
|
|
85
|
-
extraConfig = { serviceId: serviceId };
|
|
86
|
-
if (!((_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.pac_analytics) === null || _a === void 0 ? void 0 : _a.visitor) === null || _b === void 0 ? void 0 : _b.page) === null || _c === void 0 ? void 0 : _c.includes('agency'))) return [3 /*break*/, 2];
|
|
87
|
-
return [4 /*yield*/, redirect({
|
|
88
|
-
window: window,
|
|
89
|
-
slug: slug,
|
|
90
|
-
country: country,
|
|
91
|
-
device: device,
|
|
92
|
-
offer: (_e = (_d = window === null || window === void 0 ? void 0 : window.pac_analytics) === null || _d === void 0 ? void 0 : _d.visitor) === null || _e === void 0 ? void 0 : _e.offer,
|
|
93
|
-
rockmanId: rockmanId,
|
|
94
|
-
email: userDetails === null || userDetails === void 0 ? void 0 : userDetails.email,
|
|
95
|
-
password: userDetails === null || userDetails === void 0 ? void 0 : userDetails.password,
|
|
96
|
-
search: search
|
|
97
|
-
})];
|
|
98
|
-
case 1:
|
|
99
|
-
_f = _g.sent();
|
|
100
|
-
return [3 /*break*/, 4];
|
|
101
|
-
case 2: return [4 /*yield*/, creditCardPayment({ window: window, userDetails: userDetails, extraConfig: extraConfig })];
|
|
102
|
-
case 3:
|
|
103
|
-
_f = _g.sent();
|
|
104
|
-
_g.label = 4;
|
|
105
|
-
case 4:
|
|
106
|
-
result = _f;
|
|
107
|
-
if (result.success === false) {
|
|
108
|
-
type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;
|
|
109
|
-
error = new Error("".concat(type, ":\n").concat(result.message));
|
|
110
|
-
error.type = type;
|
|
111
|
-
console.error(error);
|
|
112
|
-
throw error;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return [2 /*return*/, {
|
|
116
|
-
gateway_url: result.gateway_url || result.redirect_url,
|
|
117
|
-
method: result.redirect_url ? 'redirection' : result.method
|
|
118
|
-
}];
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
var initialState = {
|
|
126
|
-
currentState: {
|
|
127
|
-
type: 'USER_DETAILS_ENTRY',
|
|
128
|
-
result: NothingYet()
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
/**
|
|
132
|
-
* submitUserDetailsAction
|
|
133
|
-
* @returns {type: ' 'pinFlow/submitUserDetailsAction', payload: {type: PossibleTypes, result: USERDETAILSEntryState}}
|
|
134
|
-
|
|
135
|
-
* Calls redirect or max api and returns a url
|
|
136
|
-
*
|
|
137
|
-
*/
|
|
138
|
-
var submitUserDetailsAction = createAsyncThunk('creditCardFlow/submitUserDetailsAction', function (_a, _b) {
|
|
139
|
-
var window = _a.window, userDetails = _a.userDetails;
|
|
140
|
-
var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
|
|
141
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
142
|
-
var state, config, _c, gateway_url_1, method, ex_1, errorType;
|
|
143
|
-
return __generator(this, function (_d) {
|
|
144
|
-
switch (_d.label) {
|
|
145
|
-
case 0:
|
|
146
|
-
state = getState();
|
|
147
|
-
config = state.strategy.currentState.data.config;
|
|
148
|
-
_d.label = 1;
|
|
149
|
-
case 1:
|
|
150
|
-
_d.trys.push([1, 3, , 4]);
|
|
151
|
-
// Start Credit Card API
|
|
152
|
-
tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails === null || userDetails === void 0 ? void 0 : userDetails.email });
|
|
153
|
-
return [4 /*yield*/, submitUserDetails(window, config, userDetails)];
|
|
154
|
-
case 2:
|
|
155
|
-
_c = _d.sent(), gateway_url_1 = _c.gateway_url, method = _c.method;
|
|
156
|
-
tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {
|
|
157
|
-
email: userDetails === null || userDetails === void 0 ? void 0 : userDetails.email,
|
|
158
|
-
gateway_url: gateway_url_1
|
|
159
|
-
});
|
|
160
|
-
// Start Credit Card API
|
|
161
|
-
if (method === 'jslink' && gateway_url_1) {
|
|
162
|
-
tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url: gateway_url_1 });
|
|
163
|
-
loadScriptSrc({
|
|
164
|
-
id: 'ecardon-credit-card',
|
|
165
|
-
url: gateway_url_1,
|
|
166
|
-
callBack: function () {
|
|
167
|
-
tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url: gateway_url_1 });
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
if (method === 'redirection' && gateway_url_1) {
|
|
172
|
-
tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url_1 });
|
|
173
|
-
window.location.href = gateway_url_1;
|
|
174
|
-
}
|
|
175
|
-
return [2 /*return*/, {
|
|
176
|
-
type: 'USER_DETAILS_ENTRY',
|
|
177
|
-
result: Success({ gateway_url: gateway_url_1, method: method })
|
|
178
|
-
}];
|
|
179
|
-
case 3:
|
|
180
|
-
ex_1 = _d.sent();
|
|
181
|
-
console.warn(ex_1);
|
|
182
|
-
errorType = void 0;
|
|
183
|
-
switch (ex_1.type) {
|
|
184
|
-
case 'AlreadySubscribed':
|
|
185
|
-
errorType = 'AlreadySubscribed';
|
|
186
|
-
break;
|
|
187
|
-
case 'InvalidUserDetails':
|
|
188
|
-
errorType = 'InvalidUserDetails';
|
|
189
|
-
break;
|
|
190
|
-
default:
|
|
191
|
-
errorType = 'UnknownError';
|
|
192
|
-
}
|
|
193
|
-
tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {
|
|
194
|
-
email: userDetails === null || userDetails === void 0 ? void 0 : userDetails.email,
|
|
195
|
-
errorType: errorType || ex_1.type
|
|
196
|
-
});
|
|
197
|
-
return [2 /*return*/, rejectWithValue({
|
|
198
|
-
errorType: errorType,
|
|
199
|
-
error: ex_1.toString()
|
|
200
|
-
})];
|
|
201
|
-
case 4: return [2 /*return*/];
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
var creditCardFlowSlice = createSlice({
|
|
207
|
-
name: 'creditCardFlow',
|
|
208
|
-
initialState: initialState,
|
|
209
|
-
reducers: {},
|
|
210
|
-
extraReducers: function (builder) {
|
|
211
|
-
builder
|
|
212
|
-
.addCase(submitUserDetailsAction.pending, function (state) {
|
|
213
|
-
state.currentState = { type: 'USER_DETAILS_ENTRY', result: Loading() };
|
|
214
|
-
})
|
|
215
|
-
.addCase(submitUserDetailsAction.fulfilled, function (state, action) {
|
|
216
|
-
state.currentState = action.payload;
|
|
217
|
-
})
|
|
218
|
-
.addCase(submitUserDetailsAction.rejected, function (state, action) {
|
|
219
|
-
state.currentState = {
|
|
220
|
-
type: 'USER_DETAILS_ENTRY',
|
|
221
|
-
result: Failure(action.payload)
|
|
222
|
-
};
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
// Export reducers and actions
|
|
227
|
-
var creditCardFlowReducer = creditCardFlowSlice.reducer; creditCardFlowSlice.actions;
|
|
228
|
-
|
|
229
|
-
var useCreditCardFlowState = function (useSelector) {
|
|
230
|
-
var currentState = useSelector(function (state) { return state.creditCardFlow.currentState; });
|
|
231
|
-
return currentState;
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
function creditCardFlowMatch(_a) {
|
|
235
|
-
var userDetailsEntry = _a.userDetailsEntry;
|
|
236
|
-
return function (state) {
|
|
237
|
-
switch (state.type) {
|
|
238
|
-
case 'USER_DETAILS_ENTRY':
|
|
239
|
-
return userDetailsEntry(state.result);
|
|
240
|
-
default:
|
|
241
|
-
// TODO - this should be an error or something
|
|
242
|
-
return userDetailsEntry(state.result);
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
export { creditCardFlowMatch, creditCardFlowReducer, submitUserDetailsAction, useCreditCardFlowState };
|
|
1
|
+
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as i,L as o,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l as d}from"./loadScriptInnerHtml-BzQm-AFb.js";import{t as l}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var u=function(n){var a=n.window,i=n.slug,o=n.country,c=n.msisdn,s=n.device,d=n.offer,l=n.rockmanId,u=n.ip_range_name,v=n.search,m=n.extraParamsQs,f=n.email,p=n.password;return e(void 0,void 0,void 0,(function(){var e,n,y,g,_,w;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:i,country:o,device:s,offerId:d.toString(),rockman_id:l,page:encodeURIComponent(a.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(w=null===(_=null===(g=a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===_?void 0:_.page)||void 0===w?void 0:w.includes("agency"))&&{evinaTi:l}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),f&&p?{email:f,password:p}:{msisdn:c}),m&&{extraParams:m})).toString(),n=a.DEV_BASE_URL||"",y="".concat(n,"/tallyman/v1/?").concat(e),i.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:l,redirect_url:y}]:[2,fetch(y).then((function(e){return e.json()}))]}))}))},v=function(n){var a=n.window,i=n.userDetails,o=n.extraConfig;return e(void 0,void 0,void 0,(function(){var e,n,c,s,d,l,u;return r(this,(function(r){return e="cc_number"in i,n=a.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(n,"/api/v1"),s=e?"/maxpay/frontend/initiate-payment":"/ecardon/frontend/initiate-payment",d=t(t({rockman_id:null===(u=a.pac_analytics.visitor)||void 0===u?void 0:u.rockmanId,landing_page_url:a.location.href,service_id:e?null==o?void 0:o.serviceId:"2"},e?{}:{user_agent:a.navigator.userAgent,ip:a.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 m(t,n,a){var i,o,c,s,d;return e(this,void 0,void 0,(function(){var e,l,m,f,p,y,g,_,w,h,S,E;return r(this,(function(r){switch(r.label){case 0:return e=n.slug,l=n.country,m=n.device,f=n.serviceId,p=t.location.search.substr(1)||"",y=t.pac_analytics.visitor,g=y.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,u({window:t,slug:e,country:l,device:m,offer:null===(d=null===(s=null==t?void 0:t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===d?void 0:d.offer,rockmanId:g,email:null==a?void 0:a.email,password:null==a?void 0:a.password,search:p})]:[3,2];case 1:return h=r.sent(),[3,4];case 2:return[4,v({window:t,userDetails:a,extraConfig:_})];case 3:h=r.sent(),r.label=4;case 4:if(!1===(w=h).success)throw S="ALREADY SUBSCRIBED"===w.message?"AlreadySubscribed":w.message,(E=new Error("".concat(S,":\n").concat(w.message))).type=S,console.error(E),E;return[2,{gateway_url:w.gateway_url||w.redirect_url,method:w.redirect_url?"redirection":w.method}]}}))}))}var f={currentState:{type:"USER_DETAILS_ENTRY",result:s()}},p=n("creditCardFlow/submitUserDetailsAction",(function(t,n){var a=t.window,o=t.userDetails,c=n.getState,s=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,n,u,v,f,p;return r(this,(function(r){switch(r.label){case 0:e=c(),t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,3,,4]),l.advancedInFlow("tallyman.v1-credit-card","cc-form-submitted",{email:null==o?void 0:o.email}),[4,m(a,t,o)];case 2:return n=r.sent(),u=n.gateway_url,v=n.method,l.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==o?void 0:o.email,gateway_url:u}),"jslink"===v&&u&&(l.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:u}),function(e){var r=e.url,t=e.key,n=e.isRecaptcha,a=void 0!==n&&n,i=e.callBack,o=e.id,c=void 0===o?"":o,s=document.createElement("script");s.type="text/javascript",s.src=r,s.id="injected_script_".concat(c);var l=document.getElementsByTagName("head")[0];l.insertBefore(s,l.firstChild),a&&(s.onload=function(){var e='\n grecaptcha.ready(function() {\n grecaptcha.execute("'.concat(t,'", {action: \'submit\'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log("-------" + token);\n });\n });\n ');d(e,!0)}),s.onerror=function(){console.error("Error loading script",r),i&&i()}}({id:"ecardon-credit-card",url:u,callBack:function(){l.advancedInFlow("tallyman.v1-credit-card","load-script-success",{gateway_url:u})}})),"redirection"===v&&u&&(l.customEvent("Flow","advance-auto","redirect-success",{redirect_url:u}),a.location.href=u),[2,{type:"USER_DETAILS_ENTRY",result:i({gateway_url:u,method:v})}];case 3:switch(f=r.sent(),console.warn(f),p=void 0,f.type){case"AlreadySubscribed":p="AlreadySubscribed";break;case"InvalidUserDetails":p="InvalidUserDetails";break;default:p="UnknownError"}return l.recedeInFlow("tallyman.v1-credit-card","cc-form-submission-failure",{email:null==o?void 0:o.email,errorType:p||f.type}),[2,s({errorType:p,error:f.toString()})];case 4:return[2]}}))}))})),y=a({name:"creditCardFlow",initialState:f,reducers:{},extraReducers:function(e){e.addCase(p.pending,(function(e){e.currentState={type:"USER_DETAILS_ENTRY",result:o()}})).addCase(p.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(p.rejected,(function(e,r){e.currentState={type:"USER_DETAILS_ENTRY",result:c(r.payload)}}))}}),g=y.reducer;y.actions;var _=function(e){return e((function(e){return e.creditCardFlow.currentState}))};function w(e){var r=e.userDetailsEntry;return function(e){return e.type,r(e.result)}}export{w as creditCardFlowMatch,g as creditCardFlowReducer,p as submitUserDetailsAction,_ as useCreditCardFlowState};
|
|
248
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":["RDS.NothingYet","RDS.Success","RDS.Loading","RDS.Failure"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"creditCardFlow.js","sources":["../src/utilities/loadScriptSrc.ts","../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { loadScriptInnerHtml } from './loadScriptInnerHtml';\n\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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"}
|
package/dist/getConfig.js
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3
|
-
// @ts-ignore
|
|
4
|
-
var config = {};
|
|
5
|
-
function setConfig(userConfig) {
|
|
6
|
-
config = userConfig;
|
|
7
|
-
}
|
|
8
|
-
// Function to get the current configuration
|
|
9
|
-
function getConfig() {
|
|
10
|
-
return config;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export { getConfig, setConfig };
|
|
1
|
+
var n={};function r(r){n=r}function t(){return n}export{t as getConfig,r as setConfig};
|
|
14
2
|
//# sourceMappingURL=getConfig.js.map
|
package/dist/getConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getConfig.js","sources":["../src/utilities/getConfig.ts"],"sourcesContent":["import { IStrategy } from '../common-types/Strategy';\n\n// Function to set the configuration within your library\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nlet config: IStrategy = {};\n\nexport function setConfig(userConfig: IStrategy) {\n config = userConfig;\n}\n\n// Function to get the current configuration\nexport function getConfig(): IStrategy {\n return config;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getConfig.js","sources":["../src/utilities/getConfig.ts"],"sourcesContent":["import { IStrategy } from '../common-types/Strategy';\n\n// Function to set the configuration within your library\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nlet config: IStrategy = {};\n\nexport function setConfig(userConfig: IStrategy) {\n config = userConfig;\n}\n\n// Function to get the current configuration\nexport function getConfig(): IStrategy {\n return config;\n}\n"],"names":["config","setConfig","userConfig","getConfig"],"mappings":"AAKA,IAAIA,EAAoB,CAAA,EAElB,SAAUC,EAAUC,GACxBF,EAASE,CACX,UAGgBC,IACd,OAAOH,CACT"}
|
|
@@ -1,32 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { t as tracker } from './tracker-B_zsMRN2.js';
|
|
3
|
-
import 'tslib';
|
|
4
|
-
import './checkSubscriptionByRockmanIdOnly-C89Ph9cV.js';
|
|
5
|
-
import './helpers-J_h-ZgxH.js';
|
|
6
|
-
import './searchToObject.js';
|
|
7
|
-
import 'pacman-client';
|
|
8
|
-
import 'uuid';
|
|
9
|
-
|
|
10
|
-
var handleClickChainFlow = function (_a) {
|
|
11
|
-
var window = _a.window, trackState = _a.trackState;
|
|
12
|
-
if (typeof window !== 'undefined') {
|
|
13
|
-
var chainRedirectUrl_1 = window.pac_analytics.visitor.chainRedirectUrl || null;
|
|
14
|
-
checkSubscriptionHander({ window: window })
|
|
15
|
-
.then(function (productUrl) {
|
|
16
|
-
if (chainRedirectUrl_1) {
|
|
17
|
-
tracker.customEvent(trackState, 'redirect', 'chain-redirect', { redirect_url: chainRedirectUrl_1 });
|
|
18
|
-
window.location.replace(chainRedirectUrl_1);
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
tracker.customEvent(trackState, 'redirect', 'product-redirect', { redirect_url: productUrl });
|
|
22
|
-
window.location.replace(productUrl);
|
|
23
|
-
}
|
|
24
|
-
})
|
|
25
|
-
.catch(function (err) {
|
|
26
|
-
throw err;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export { handleClickChainFlow };
|
|
1
|
+
import{checkSubscriptionHander as r}from"./checkSubscriptionHander.js";import{t}from"./tracker-DaaILhEr.js";import"tslib";import"./checkSubscriptionByRockmanIdOnly-BwR1un1L.js";import"./helpers-xPhGBX-B.js";import"./searchToObject.js";import"pacman-client";import"uuid";var c=function(c){var i=c.window,e=c.trackState;if(void 0!==i){var o=i.pac_analytics.visitor.chainRedirectUrl||null;r({window:i}).then((function(r){o?(t.customEvent(e,"redirect","chain-redirect",{redirect_url:o}),i.location.replace(o)):(t.customEvent(e,"redirect","product-redirect",{redirect_url:r}),i.location.replace(r))})).catch((function(r){throw r}))}};export{c as handleClickChainFlow};
|
|
32
2
|
//# sourceMappingURL=handleClickChainFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleClickChainFlow.js","sources":["../src/utilities/handleClickChainFlow.ts"],"sourcesContent":["import { checkSubscriptionHander } from './checkSubscriptionHander';\nimport { tracker } from './tracker';\n\nexport const handleClickChainFlow = ({ window, trackState }: { window: Window; trackState: string }) => {\n if (typeof window !== 'undefined') {\n const chainRedirectUrl = window.pac_analytics.visitor.chainRedirectUrl || null;\n checkSubscriptionHander({ window })\n .then((productUrl) => {\n if (chainRedirectUrl) {\n tracker.customEvent(trackState, 'redirect', 'chain-redirect', { redirect_url: chainRedirectUrl });\n window.location.replace(chainRedirectUrl);\n } else {\n tracker.customEvent(trackState, 'redirect', 'product-redirect', { redirect_url: productUrl });\n window.location.replace(productUrl);\n }\n })\n .catch((err) => {\n throw err;\n });\n }\n};\n"],"names":[
|
|
1
|
+
{"version":3,"file":"handleClickChainFlow.js","sources":["../src/utilities/handleClickChainFlow.ts"],"sourcesContent":["import { checkSubscriptionHander } from './checkSubscriptionHander';\nimport { tracker } from './tracker';\n\nexport const handleClickChainFlow = ({ window, trackState }: { window: Window; trackState: string }) => {\n if (typeof window !== 'undefined') {\n const chainRedirectUrl = window.pac_analytics.visitor.chainRedirectUrl || null;\n checkSubscriptionHander({ window })\n .then((productUrl) => {\n if (chainRedirectUrl) {\n tracker.customEvent(trackState, 'redirect', 'chain-redirect', { redirect_url: chainRedirectUrl });\n window.location.replace(chainRedirectUrl);\n } else {\n tracker.customEvent(trackState, 'redirect', 'product-redirect', { redirect_url: productUrl });\n window.location.replace(productUrl);\n }\n })\n .catch((err) => {\n throw err;\n });\n }\n};\n"],"names":["handleClickChainFlow","_a","window","trackState","chainRedirectUrl_1","pac_analytics","visitor","chainRedirectUrl","checkSubscriptionHander","then","productUrl","tracker","customEvent","redirect_url","location","replace","catch","err"],"mappings":"8QAGO,IAAMA,EAAuB,SAACC,OAAEC,EAAMD,EAAAC,OAAEC,EAAUF,EAAAE,WACvD,QAAsB,IAAXD,EAAwB,CACjC,IAAME,EAAmBF,EAAOG,cAAcC,QAAQC,kBAAoB,KAC1EC,EAAwB,CAAEN,OAAMA,IAC7BO,MAAK,SAACC,GACDN,GACFO,EAAQC,YAAYT,EAAY,WAAY,iBAAkB,CAAEU,aAAcT,IAC9EF,EAAOY,SAASC,QAAQX,KAExBO,EAAQC,YAAYT,EAAY,WAAY,mBAAoB,CAAEU,aAAcH,IAChFR,EAAOY,SAASC,QAAQL,GAE5B,IACCM,OAAM,SAACC,GACN,MAAMA,CACR,GACH,CACH"}
|
|
@@ -1,65 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { searchToObject } from './searchToObject.js';
|
|
3
|
-
import 'tslib';
|
|
4
|
-
|
|
5
|
-
var isCookieExists = function (window, cookieName) {
|
|
6
|
-
return typeof window !== 'undefined' &&
|
|
7
|
-
document.cookie.match(new RegExp("^(.*;)?\\s*".concat(cookieName, "\\s*=\\s*[^;]+(.*)?$"))) !== null;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
var handleAutoSubmitMsisdn = function (_a) {
|
|
11
|
-
var msisdnValue = _a.msisdnValue, dispatch = _a.dispatch, submitMSISDNAction = _a.submitMSISDNAction, isHeaderEnrichmentSuccess = _a.isHeaderEnrichmentSuccess, setMsisdnValue = _a.setMsisdnValue, isHeaderEnrichmentAutoSubmit = _a.isHeaderEnrichmentAutoSubmit;
|
|
12
|
-
//
|
|
13
|
-
// eslint-disable-next-line no-console
|
|
14
|
-
console.log('handleAutoSubmitMsisdn', msisdnValue);
|
|
15
|
-
if (msisdnValue &&
|
|
16
|
-
msisdnValue.length > 3 &&
|
|
17
|
-
(!isHeaderEnrichmentSuccess || (isHeaderEnrichmentSuccess === true && isHeaderEnrichmentAutoSubmit === true))) {
|
|
18
|
-
var pn = new PhoneNumber("+".concat(msisdnValue), process.env.country.toUpperCase());
|
|
19
|
-
// eslint-disable-next-line no-console
|
|
20
|
-
console.log('pn', pn);
|
|
21
|
-
if (pn.isValid()) {
|
|
22
|
-
dispatch(submitMSISDNAction({ window: window, msisdn: msisdnValue }));
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
setMsisdnValue(pn.getCountryCode() + msisdnValue);
|
|
26
|
-
dispatch(submitMSISDNAction({ window: window, msisdn: pn.getCountryCode() + msisdnValue }));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
var handleFormSubmit = function (_a) {
|
|
31
|
-
var window = _a.window, isHeaderEnrichmentSuccess = _a.isHeaderEnrichmentSuccess, setInternationalNumber = _a.setInternationalNumber, onEnd = _a.onEnd, internationalNumber = _a.internationalNumber;
|
|
32
|
-
var pn = new PhoneNumber("+".concat(internationalNumber), process.env.country.toUpperCase());
|
|
33
|
-
var countryCode = pn.getCountryCode();
|
|
34
|
-
var networkType = isHeaderEnrichmentSuccess ? 'mobile_data' : 'wifi';
|
|
35
|
-
var searchObj = searchToObject(window);
|
|
36
|
-
if (isHeaderEnrichmentSuccess === true &&
|
|
37
|
-
process.env.country === 'kw' &&
|
|
38
|
-
internationalNumber !== '' &&
|
|
39
|
-
!pn.isValid()) {
|
|
40
|
-
setInternationalNumber(countryCode + internationalNumber);
|
|
41
|
-
var newNumber = countryCode + internationalNumber;
|
|
42
|
-
onEnd(newNumber.match(/\d+/gi).join(''));
|
|
43
|
-
}
|
|
44
|
-
else if (isHeaderEnrichmentSuccess === true && (searchObj === null || searchObj === void 0 ? void 0 : searchObj.success) === 'true' && searchObj['msisdn-alias'] === '1') {
|
|
45
|
-
// Special case Digital Virgo sents encrypted msisdn we dont need to validate is
|
|
46
|
-
if (searchObj === null || searchObj === void 0 ? void 0 : searchObj.msisdn) {
|
|
47
|
-
var encryptedMsisdn = searchObj.msisdn;
|
|
48
|
-
onEnd(encryptedMsisdn, { network_type: networkType, 'skip-validation': '1' });
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else if (typeof window !== 'undefined' && isCookieExists(window, 'OMEU') && process.env.country === 'es') {
|
|
52
|
-
onEnd('1', { network_type: networkType, 'skip-validation': '1' });
|
|
53
|
-
}
|
|
54
|
-
else if (internationalNumber) {
|
|
55
|
-
if (process.env.country === 'ci') {
|
|
56
|
-
onEnd(internationalNumber.match(/\d+/gi).join(''), { network_type: networkType });
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
onEnd(internationalNumber.match(/\d+/gi).join(''));
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
export { handleAutoSubmitMsisdn, handleFormSubmit };
|
|
1
|
+
import n from"awesome-phonenumber";import{searchToObject as e}from"./searchToObject.js";import"tslib";var o=function(e){var o=e.msisdnValue,i=e.dispatch,s=e.submitMSISDNAction,t=e.isHeaderEnrichmentSuccess,r=e.setMsisdnValue,c=e.isHeaderEnrichmentAutoSubmit;if(console.log("handleAutoSubmitMsisdn",o),o&&o.length>3&&(!t||!0===t&&!0===c)){var a=new n("+".concat(o),process.env.country.toUpperCase());console.log("pn",a),a.isValid()?i(s({window:window,msisdn:o})):(r(a.getCountryCode()+o),i(s({window:window,msisdn:a.getCountryCode()+o})))}},i=function(o){var i=o.window,s=o.isHeaderEnrichmentSuccess,t=o.setInternationalNumber,r=o.onEnd,c=o.internationalNumber,a=new n("+".concat(c),process.env.country.toUpperCase()),d=a.getCountryCode(),u=s?"mobile_data":"wifi",m=e(i);if(!0!==s||"kw"!==process.env.country||""===c||a.isValid())if(!0===s&&"true"===(null==m?void 0:m.success)&&"1"===m["msisdn-alias"]){if(null==m?void 0:m.msisdn)r(m.msisdn,{network_type:u,"skip-validation":"1"})}else void 0!==i&&function(n,e){return void 0!==n&&null!==document.cookie.match(new RegExp("^(.*;)?\\s*".concat(e,"\\s*=\\s*[^;]+(.*)?$")))}(i,"OMEU")&&"es"===process.env.country?r("1",{network_type:u,"skip-validation":"1"}):c&&("ci"===process.env.country?r(c.match(/\d+/gi).join(""),{network_type:u}):r(c.match(/\d+/gi).join("")));else t(d+c),r((d+c).match(/\d+/gi).join(""))};export{o as handleAutoSubmitMsisdn,i as handleFormSubmit};
|
|
65
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';\nimport PhoneNumber from 'awesome-phonenumber';\nimport { isCookieExists } from './isCookieExists';\nimport { searchToObject } from './searchToObject';\n\nexport const handleAutoSubmitMsisdn = ({\n msisdnValue,\n dispatch,\n submitMSISDNAction,\n isHeaderEnrichmentSuccess,\n setMsisdnValue,\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 setMsisdnValue: (msisdnValue: string) => void;\n isHeaderEnrichmentAutoSubmit?: boolean;\n}) => {\n //\n // eslint-disable-next-line no-console\n console.log('handleAutoSubmitMsisdn', msisdnValue);\n if (\n msisdnValue &&\n msisdnValue.length > 3 &&\n (!isHeaderEnrichmentSuccess || (isHeaderEnrichmentSuccess === true && isHeaderEnrichmentAutoSubmit === true))\n ) {\n const pn = new PhoneNumber(`+${msisdnValue}`, process.env.country.toUpperCase());\n // eslint-disable-next-line no-console\n console.log('pn', pn);\n if (pn.isValid()) {\n dispatch(submitMSISDNAction({ window, msisdn: msisdnValue }));\n } else {\n setMsisdnValue(pn.getCountryCode() + msisdnValue);\n dispatch(submitMSISDNAction({ window, msisdn: pn.getCountryCode() + msisdnValue }));\n }\n }\n};\n\nexport const handleFormSubmit = ({\n window,\n isHeaderEnrichmentSuccess,\n setInternationalNumber,\n onEnd,\n internationalNumber\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}) => {\n const pn = new PhoneNumber(`+${internationalNumber}`, process.env.country.toUpperCase());\n\n const countryCode = pn.getCountryCode();\n const networkType = isHeaderEnrichmentSuccess ? 'mobile_data' : 'wifi';\n const searchObj = searchToObject(window) as any;\n\n if (\n isHeaderEnrichmentSuccess === true &&\n process.env.country === 'kw' &&\n internationalNumber !== '' &&\n !pn.isValid()\n ) {\n setInternationalNumber(countryCode + internationalNumber);\n const newNumber = countryCode + internationalNumber;\n\n onEnd(newNumber.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":[
|
|
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';\nimport PhoneNumber from 'awesome-phonenumber';\nimport { isCookieExists } from './isCookieExists';\nimport { searchToObject } from './searchToObject';\n\nexport const handleAutoSubmitMsisdn = ({\n msisdnValue,\n dispatch,\n submitMSISDNAction,\n isHeaderEnrichmentSuccess,\n setMsisdnValue,\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 setMsisdnValue: (msisdnValue: string) => void;\n isHeaderEnrichmentAutoSubmit?: boolean;\n}) => {\n //\n // eslint-disable-next-line no-console\n console.log('handleAutoSubmitMsisdn', msisdnValue);\n if (\n msisdnValue &&\n msisdnValue.length > 3 &&\n (!isHeaderEnrichmentSuccess || (isHeaderEnrichmentSuccess === true && isHeaderEnrichmentAutoSubmit === true))\n ) {\n const pn = new PhoneNumber(`+${msisdnValue}`, process.env.country.toUpperCase());\n // eslint-disable-next-line no-console\n console.log('pn', pn);\n if (pn.isValid()) {\n dispatch(submitMSISDNAction({ window, msisdn: msisdnValue }));\n } else {\n setMsisdnValue(pn.getCountryCode() + msisdnValue);\n dispatch(submitMSISDNAction({ window, msisdn: pn.getCountryCode() + msisdnValue }));\n }\n }\n};\n\nexport const handleFormSubmit = ({\n window,\n isHeaderEnrichmentSuccess,\n setInternationalNumber,\n onEnd,\n internationalNumber\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}) => {\n const pn = new PhoneNumber(`+${internationalNumber}`, process.env.country.toUpperCase());\n\n const countryCode = pn.getCountryCode();\n const networkType = isHeaderEnrichmentSuccess ? 'mobile_data' : 'wifi';\n const searchObj = searchToObject(window) as any;\n\n if (\n isHeaderEnrichmentSuccess === true &&\n process.env.country === 'kw' &&\n internationalNumber !== '' &&\n !pn.isValid()\n ) {\n setInternationalNumber(countryCode + internationalNumber);\n const newNumber = countryCode + internationalNumber;\n\n onEnd(newNumber.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","setMsisdnValue","isHeaderEnrichmentAutoSubmit","console","log","length","pn","PhoneNumber","concat","process","env","country","toUpperCase","isValid","window","msisdn","getCountryCode","handleFormSubmit","setInternationalNumber","onEnd","internationalNumber","countryCode","networkType","searchObj","searchToObject","success","network_type","cookieName","document","cookie","match","RegExp","isCookieExists","join"],"mappings":"sGAAO,ICKMA,EAAyB,SAACC,GACrC,IAAAC,EAAWD,EAAAC,YACXC,EAAQF,EAAAE,SACRC,EAAkBH,EAAAG,mBAClBC,8BACAC,EAAcL,EAAAK,eACdC,EAA4BN,EAAAM,6BAa5B,GADAC,QAAQC,IAAI,yBAA0BP,GAEpCA,GACAA,EAAYQ,OAAS,KACnBL,IAA4D,IAA9BA,IAAuE,IAAjCE,GACtE,CACA,IAAMI,EAAK,IAAIC,EAAY,IAAAC,OAAIX,GAAeY,QAAQC,IAAIC,QAAQC,eAElET,QAAQC,IAAI,KAAME,GACdA,EAAGO,UACLf,EAASC,EAAmB,CAAEe,OAAMA,OAAEC,OAAQlB,MAE9CI,EAAeK,EAAGU,iBAAmBnB,GACrCC,EAASC,EAAmB,CAAEe,OAAMA,OAAEC,OAAQT,EAAGU,iBAAmBnB,KAEvE,CACH,EAEaoB,EAAmB,SAACrB,GAC/B,IAAAkB,EAAMlB,EAAAkB,OACNd,EAAyBJ,EAAAI,0BACzBkB,EAAsBtB,EAAAsB,uBACtBC,EAAKvB,EAAAuB,MACLC,EAAmBxB,EAAAwB,oBASbd,EAAK,IAAIC,EAAY,IAAAC,OAAIY,GAAuBX,QAAQC,IAAIC,QAAQC,eAEpES,EAAcf,EAAGU,iBACjBM,EAActB,EAA4B,cAAgB,OAC1DuB,EAAYC,EAAeV,GAEjC,IACgC,IAA9Bd,GACwB,OAAxBS,QAAQC,IAAIC,SACY,KAAxBS,GACCd,EAAGO,UAMC,IAAkC,IAA9Bb,GAA6D,UAAvBuB,aAAA,EAAAA,EAAWE,UAAoD,MAA9BF,EAAU,gBAAyB,CAEnH,GAAIA,eAAAA,EAAWR,OAEbI,EADwBI,EAAUR,OACX,CAAEW,aAAcJ,EAAa,kBAAmB,KAE1E,WAA4B,IAAXR,GD7EU,SAACA,EAAgBa,GAC7C,YAAkB,IAAXb,GAC+E,OAAtFc,SAASC,OAAOC,MAAM,IAAIC,OAAO,cAAAvB,OAAcmB,EAAU,yBADzD,CC4E4CK,CAAelB,EAAQ,SAAmC,OAAxBL,QAAQC,IAAIC,QACxFQ,EAAM,IAAK,CAAEO,aAAcJ,EAAa,kBAAmB,MAClDF,IACmB,OAAxBX,QAAQC,IAAIC,QACdQ,EAAMC,EAAoBU,MAAM,SAASG,KAAK,IAAK,CAAEP,aAAcJ,IAEnEH,EAAMC,EAAoBU,MAAM,SAASG,KAAK,WAhBhDf,EAAuBG,EAAcD,GAGrCD,GAFkBE,EAAcD,GAEhBU,MAAM,SAASG,KAAK,IAgBxC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{__awaiter as t,__generator as r}from"tslib";var e=function(n,u,i,o){return t(void 0,void 0,void 0,(function(){var t;return r(this,(function(r){switch(r.label){case 0:return[4,n()];case 1:return t=r.sent(),i(t)||o>=u?[2,t]:[4,(a=1e3,new Promise((function(t){return setTimeout((function(){return t()}),a)})))];case 2:return r.sent(),[2,e(n,u,i,o+1)]}var a}))}))};function n(t){return{type:"right",value:t}}function u(t){return{type:"left",value:t}}export{e as a,u as l,n as r};
|
|
2
|
+
//# sourceMappingURL=helpers-xPhGBX-B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers-xPhGBX-B.js","sources":["../src/utilities/helpers.ts"],"sourcesContent":["import Either from '../common-types/Either';\n\nexport const wait = (ms: number) => new Promise<void>((resolve) => setTimeout(() => resolve(), ms));\n\nexport const loop = async <_I extends Record<string, unknown>, R extends Record<string, unknown>>(\n f: () => Promise<R>,\n max: number,\n stop: (r: R) => boolean,\n i: number\n): Promise<R> => {\n const r = await f();\n if (stop(r) || i >= max) {\n return r;\n }\n await wait(1000);\n return loop(f, max, stop, i + 1);\n};\n\nexport function right<L, R>(r: R) {\n return { type: 'right', value: r } as Either<L, R>;\n}\nexport function left<L, R>(l: L) {\n return { type: 'left', value: l } as Either<L, R>;\n}\n"],"names":["loop","f","max","stop","i","__awaiter","r","_a","sent","ms","Promise","resolve","setTimeout","right","type","value","left","l"],"mappings":"mDAEO,IAEMA,EAAO,SAClBC,EACAC,EACAC,EACAC,GAAS,OAAAC,OAAA,OAAA,OAAA,GAAA,mEAEC,MAAM,CAAA,EAAAJ,YAChB,OADMK,EAAIC,EAASC,OACfL,EAAKG,IAAMF,GAAKF,EAClB,CAAA,EAAOI,GAET,CAAA,GAZmBG,EAYR,IAZuB,IAAIC,SAAc,SAACC,GAAY,OAAAC,YAAW,WAAM,OAAAD,GAAS,GAAEF,EAA5B,aAajE,OADAF,EAAAC,OACA,CAAA,EAAOR,EAAKC,EAAGC,EAAKC,EAAMC,EAAI,IAbZ,IAACK,OAcnB,EAEI,SAAUI,EAAYP,GAC1B,MAAO,CAAEQ,KAAM,QAASC,MAAOT,EACjC,CACM,SAAUU,EAAWC,GACzB,MAAO,CAAEH,KAAM,OAAQC,MAAOE,EAChC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=function(e,t){var n=document.createElement("script");if(n.type="text/javascript",n.innerHTML=e,n.id="agency_mt2"===window.gateway?"EvinaPinTrigger":"",t)document.getElementsByTagName("body")[0].appendChild(n);else{var a=document.getElementsByTagName("head")[0];a.insertBefore(n,a.firstChild),setTimeout((function(){if("agency_mt2"===window.gateway&&void 0!==typeof window.evina_dcb){console.log("Ev ready");var e=new Event("DCBProtectRun");"undefined"!=typeof window&&document.dispatchEvent(e)}}),0)}};export{e as l};
|
|
2
|
+
//# sourceMappingURL=loadScriptInnerHtml-BzQm-AFb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadScriptInnerHtml-BzQm-AFb.js","sources":["../src/utilities/loadScriptInnerHtml.ts"],"sourcesContent":["const loadScriptInnerHtml = (innerHTML: string, isBody?: boolean) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.innerHTML = innerHTML;\n script.id = window.gateway === 'agency_mt2' ? 'EvinaPinTrigger' : '';\n if (isBody) {\n document.getElementsByTagName('body')[0].appendChild(script);\n } else {\n const headElem = document.getElementsByTagName('head')[0];\n headElem.insertBefore(script, headElem.firstChild);\n\n setTimeout(() => {\n if (window.gateway === 'agency_mt2' && typeof window.evina_dcb !== undefined) {\n // eslint-disable-next-line no-console\n console.log('Ev ready');\n const event = new Event('DCBProtectRun');\n if (typeof window !== 'undefined') {\n document.dispatchEvent(event);\n }\n }\n }, 0);\n }\n};\n\nexport { loadScriptInnerHtml };\n"],"names":["loadScriptInnerHtml","innerHTML","isBody","script","document","createElement","type","id","window","gateway","getElementsByTagName","appendChild","headElem","insertBefore","firstChild","setTimeout","undefined","evina_dcb","console","log","event_1","Event","dispatchEvent"],"mappings":"AAAA,IAAMA,EAAsB,SAACC,EAAmBC,GAC9C,IAAMC,EAASC,SAASC,cAAc,UAItC,GAHAF,EAAOG,KAAO,kBACdH,EAAOF,UAAYA,EACnBE,EAAOI,GAAwB,eAAnBC,OAAOC,QAA2B,kBAAoB,GAC9DP,EACFE,SAASM,qBAAqB,QAAQ,GAAGC,YAAYR,OAChD,CACL,IAAMS,EAAWR,SAASM,qBAAqB,QAAQ,GACvDE,EAASC,aAAaV,EAAQS,EAASE,YAEvCC,YAAW,WACT,GAAuB,eAAnBP,OAAOC,cAAwDO,WAArBR,OAAOS,UAAyB,CAE5EC,QAAQC,IAAI,YACZ,IAAMC,EAAQ,IAAIC,MAAM,iBACF,oBAAXb,QACTJ,SAASkB,cAAcF,EAE1B,CACF,GAAE,EACJ,CACH"}
|