ouisys-engine 4.6.3 → 4.7.0-alpha.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/RemoteDataState-CwHLI23e.js +75 -0
- package/dist/RemoteDataState-CwHLI23e.js.map +1 -0
- package/dist/bupperizeCountry-CCDIOHP6.js +4 -0
- package/dist/bupperizeCountry-CCDIOHP6.js.map +1 -0
- package/dist/checkSubscriptionByRockmanIdOnly-C89Ph9cV.js +27 -0
- package/dist/checkSubscriptionByRockmanIdOnly-C89Ph9cV.js.map +1 -0
- package/dist/checkSubscriptionHander.js +53 -0
- package/dist/checkSubscriptionHander.js.map +1 -0
- package/dist/click2smsFlow.js +246 -0
- package/dist/click2smsFlow.js.map +1 -0
- package/dist/creditCardFlow.js +248 -0
- package/dist/creditCardFlow.js.map +1 -0
- package/dist/getConfig.js +14 -0
- package/dist/getConfig.js.map +1 -0
- package/dist/handleClickChainFlow.js +32 -0
- package/dist/handleClickChainFlow.js.map +1 -0
- package/dist/handleSubmitNumber.js +65 -0
- package/dist/handleSubmitNumber.js.map +1 -0
- package/dist/helpers-J_h-ZgxH.js +29 -0
- package/dist/helpers-J_h-ZgxH.js.map +1 -0
- package/dist/loadScriptInnerHtml-DPcoY467.js +26 -0
- package/dist/loadScriptInnerHtml-DPcoY467.js.map +1 -0
- package/dist/moFlow.js +275 -0
- package/dist/moFlow.js.map +1 -0
- package/dist/moRedirFlow.js +225 -0
- package/dist/moRedirFlow.js.map +1 -0
- package/dist/oneClickFlow.js +464 -0
- package/dist/oneClickFlow.js.map +1 -0
- package/dist/pinFlow.js +697 -0
- package/dist/pinFlow.js.map +1 -0
- package/dist/searchToObject.js +19 -0
- package/dist/searchToObject.js.map +1 -0
- package/dist/storeMsisdn-ChiBh8mI.js +58 -0
- package/dist/storeMsisdn-ChiBh8mI.js.map +1 -0
- package/dist/strategy.js +50 -0
- package/dist/strategy.js.map +1 -0
- package/dist/strategySlice-bF74rxDK.js +842 -0
- package/dist/strategySlice-bF74rxDK.js.map +1 -0
- package/dist/tracker-B_zsMRN2.js +79 -0
- package/dist/tracker-B_zsMRN2.js.map +1 -0
- package/dist/tracker.js +5 -0
- package/dist/tracker.js.map +1 -0
- package/dist/tryGetIPRangeName-C69HEG5W.js +42 -0
- package/dist/tryGetIPRangeName-C69HEG5W.js.map +1 -0
- package/dist/types/CreditCardTypes-B-IT-l6I.d.ts +72 -0
- package/dist/types/IHash-0OgZ_1ij.d.ts +5 -0
- package/dist/types/MoRedirTypes-4tEJjT1g.d.ts +31 -0
- package/dist/types/MoTypes-D-UK92gs.d.ts +45 -0
- package/dist/types/OneClickTypes-DF0jodl-.d.ts +69 -0
- package/dist/types/PinTypes-BLJDBZe6.d.ts +128 -0
- package/dist/types/RemoteDataState-D1aFrz8W.d.ts +61 -0
- package/dist/types/StrategyTypes-BEIYqoJV.d.ts +325 -0
- package/dist/types/UssdTypes-C7QlIW11.d.ts +34 -0
- package/dist/types/checkSubscriptionHander.d.ts +8 -0
- package/dist/types/click2smsFlow.d.ts +37 -0
- package/dist/types/creditCardFlow.d.ts +37 -0
- package/dist/types/getConfig.d.ts +38 -0
- package/dist/types/handleClickChainFlow.d.ts +6 -0
- package/dist/types/handleSubmitNumber.d.ts +26 -0
- package/dist/types/moFlow.d.ts +70 -0
- package/dist/types/moRedirFlow.d.ts +82 -0
- package/dist/types/oneClickFlow.d.ts +56 -0
- package/dist/types/pinFlow.d.ts +179 -0
- package/dist/types/searchToObject.d.ts +3 -0
- package/dist/types/strategy.d.ts +86 -0
- package/dist/types/tracker.d.ts +5 -0
- package/dist/types/ussdFlow.d.ts +84 -0
- package/dist/ussdFlow.js +211 -0
- package/dist/ussdFlow.js.map +1 -0
- package/package.json +85 -9
- package/.babelrc +0 -30
- package/.browserslistrc +0 -6
- package/.eslintrc.js +0 -3
- package/.nvmrc +0 -1
- package/.prettierignore +0 -4
- package/dist/@types/react-tracker.d.js +0 -1
- package/dist/@types/redux-cli-logger.d.js +0 -1
- package/dist/@types/tiny-async-pool.d.js +0 -1
- package/dist/@types/window.d.js +0 -1
- package/dist/api/index.d.ts +0 -43
- package/dist/api/index.js +0 -1
- package/dist/common-types/AppThunk.d.ts +0 -13
- package/dist/common-types/AppThunk.js +0 -1
- package/dist/common-types/Either.d.ts +0 -8
- package/dist/common-types/Either.js +0 -1
- package/dist/common-types/IError.d.ts +0 -3
- package/dist/common-types/IError.js +0 -1
- package/dist/common-types/IOptInFlowName.d.ts +0 -1
- package/dist/common-types/IOptInFlowName.js +0 -1
- package/dist/common-types/ITracker.d.ts +0 -9
- package/dist/common-types/ITracker.js +0 -1
- package/dist/common-types/IVisitor.d.ts +0 -14
- package/dist/common-types/IVisitor.js +0 -1
- package/dist/common-types/RemoteDataState.d.ts +0 -38
- package/dist/common-types/RemoteDataState.js +0 -1
- package/dist/custom-hooks/useOneClickRedirectUrl.d.ts +0 -3
- package/dist/custom-hooks/useOneClickRedirectUrl.js +0 -1
- package/dist/custom-hooks/usePinEntryState.d.ts +0 -8
- package/dist/custom-hooks/usePinEntryState.js +0 -1
- package/dist/custom-hooks/useStrategyConfig.d.ts +0 -4
- package/dist/custom-hooks/useStrategyConfig.js +0 -1
- package/dist/flows/click2smsFlow.d.ts +0 -6
- package/dist/flows/click2smsFlow.js +0 -1
- package/dist/flows/creditCardFlow.d.ts +0 -6
- package/dist/flows/creditCardFlow.js +0 -1
- package/dist/flows/moFlow.d.ts +0 -6
- package/dist/flows/moFlow.js +0 -1
- package/dist/flows/moRedirFlow.d.ts +0 -6
- package/dist/flows/moRedirFlow.js +0 -1
- package/dist/flows/oneClickFlow.d.ts +0 -7
- package/dist/flows/oneClickFlow.js +0 -1
- package/dist/flows/pinFlow.d.ts +0 -7
- package/dist/flows/pinFlow.js +0 -1
- package/dist/flows/strategy.d.ts +0 -14
- package/dist/flows/strategy.js +0 -1
- package/dist/flows/ussdFlow.d.ts +0 -6
- package/dist/flows/ussdFlow.js +0 -1
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -1
- package/dist/ips/tryGetIPRangeName.d.ts +0 -2
- package/dist/ips/tryGetIPRangeName.js +0 -1
- package/dist/jest.config.js +0 -194
- package/dist/pacman/index.d.ts +0 -6
- package/dist/pacman/index.js +0 -1
- package/dist/pacman/queryString.d.ts +0 -3
- package/dist/pacman/queryString.js +0 -1
- package/dist/reducers/click2smsFlow/Click2smsTypes.d.ts +0 -76
- package/dist/reducers/click2smsFlow/Click2smsTypes.js +0 -1
- package/dist/reducers/click2smsFlow/IClick2smsConstants.d.ts +0 -2
- package/dist/reducers/click2smsFlow/IClick2smsConstants.js +0 -1
- package/dist/reducers/click2smsFlow/index.d.ts +0 -5
- package/dist/reducers/click2smsFlow/index.js +0 -1
- package/dist/reducers/click2smsFlow/utils.d.ts +0 -4
- package/dist/reducers/click2smsFlow/utils.js +0 -1
- package/dist/reducers/creditCardFlow/CreditCardTypes.d.ts +0 -79
- package/dist/reducers/creditCardFlow/CreditCardTypes.js +0 -1
- package/dist/reducers/creditCardFlow/ICreditCardConstants.d.ts +0 -2
- package/dist/reducers/creditCardFlow/ICreditCardConstants.js +0 -1
- package/dist/reducers/creditCardFlow/index.d.ts +0 -5
- package/dist/reducers/creditCardFlow/index.js +0 -1
- package/dist/reducers/creditCardFlow/utils.d.ts +0 -8
- package/dist/reducers/creditCardFlow/utils.js +0 -1
- package/dist/reducers/moFlow/IMoConstants.d.ts +0 -2
- package/dist/reducers/moFlow/IMoConstants.js +0 -1
- package/dist/reducers/moFlow/MoTypes.d.ts +0 -88
- package/dist/reducers/moFlow/MoTypes.js +0 -1
- package/dist/reducers/moFlow/index.d.ts +0 -16
- package/dist/reducers/moFlow/index.js +0 -1
- package/dist/reducers/moFlow/utils.d.ts +0 -12
- package/dist/reducers/moFlow/utils.js +0 -1
- package/dist/reducers/moRedirFlow/IMoRedirConstants.d.ts +0 -2
- package/dist/reducers/moRedirFlow/IMoRedirConstants.js +0 -1
- package/dist/reducers/moRedirFlow/MoRedirTypes.d.ts +0 -64
- package/dist/reducers/moRedirFlow/MoRedirTypes.js +0 -1
- package/dist/reducers/moRedirFlow/index.d.ts +0 -14
- package/dist/reducers/moRedirFlow/index.js +0 -1
- package/dist/reducers/moRedirFlow/utils.d.ts +0 -10
- package/dist/reducers/moRedirFlow/utils.js +0 -1
- package/dist/reducers/oneClickFlow/IOneClickConstants.d.ts +0 -2
- package/dist/reducers/oneClickFlow/IOneClickConstants.js +0 -1
- package/dist/reducers/oneClickFlow/OneClickTypes.d.ts +0 -85
- package/dist/reducers/oneClickFlow/OneClickTypes.js +0 -1
- package/dist/reducers/oneClickFlow/index.d.ts +0 -13
- package/dist/reducers/oneClickFlow/index.js +0 -1
- package/dist/reducers/oneClickFlow/utils.d.ts +0 -16
- package/dist/reducers/oneClickFlow/utils.js +0 -1
- package/dist/reducers/pinFlow/IPinConstants.d.ts +0 -2
- package/dist/reducers/pinFlow/IPinConstants.js +0 -1
- package/dist/reducers/pinFlow/PinTypes.d.ts +0 -156
- package/dist/reducers/pinFlow/PinTypes.js +0 -1
- package/dist/reducers/pinFlow/index.d.ts +0 -19
- package/dist/reducers/pinFlow/index.js +0 -1
- package/dist/reducers/pinFlow/utils.d.ts +0 -11
- package/dist/reducers/pinFlow/utils.js +0 -1
- package/dist/reducers/strategy/IStategyActionContants.d.ts +0 -2
- package/dist/reducers/strategy/IStategyActionContants.js +0 -1
- package/dist/reducers/strategy/StrategyTypes.d.ts +0 -248
- package/dist/reducers/strategy/StrategyTypes.js +0 -1
- package/dist/reducers/strategy/index.d.ts +0 -13
- package/dist/reducers/strategy/index.js +0 -1
- package/dist/reducers/strategy/strategies/ask_mobile_number.d.ts +0 -15
- package/dist/reducers/strategy/strategies/ask_mobile_number.js +0 -1
- package/dist/reducers/strategy/strategies/ask_operator.d.ts +0 -5
- package/dist/reducers/strategy/strategies/ask_operator.js +0 -1
- package/dist/reducers/strategy/strategies/detect_operator_by_ip.d.ts +0 -10
- package/dist/reducers/strategy/strategies/detect_operator_by_ip.js +0 -1
- package/dist/reducers/strategy/strategies/header_enrichment.d.ts +0 -7
- package/dist/reducers/strategy/strategies/header_enrichment.js +0 -1
- package/dist/reducers/strategy/strategies/injectHeaderEnrichmentScript.d.ts +0 -7
- package/dist/reducers/strategy/strategies/injectHeaderEnrichmentScript.js +0 -1
- package/dist/reducers/strategy/utils.d.ts +0 -30
- package/dist/reducers/strategy/utils.js +0 -1
- package/dist/reducers/ussdFlow/IUssdConstants.d.ts +0 -2
- package/dist/reducers/ussdFlow/IUssdConstants.js +0 -1
- package/dist/reducers/ussdFlow/UssdTypes.d.ts +0 -77
- package/dist/reducers/ussdFlow/UssdTypes.js +0 -1
- package/dist/reducers/ussdFlow/index.d.ts +0 -14
- package/dist/reducers/ussdFlow/index.js +0 -1
- package/dist/reducers/ussdFlow/utils.d.ts +0 -11
- package/dist/reducers/ussdFlow/utils.js +0 -1
- package/dist/store/index.d.ts +0 -14
- package/dist/store/index.js +0 -1
- package/dist/store/reducers.d.ts +0 -20
- package/dist/store/reducers.js +0 -1
- package/dist/utilities/addEmpelloToken.d.ts +0 -4
- package/dist/utilities/addEmpelloToken.js +0 -1
- package/dist/utilities/handleSubmitNumber.d.ts +0 -21
- package/dist/utilities/handleSubmitNumber.js +0 -1
- package/dist/utilities/index.d.ts +0 -17
- package/dist/utilities/index.js +0 -1
- package/dist/utilities/loadScriptInnerHtml.d.ts +0 -2
- package/dist/utilities/loadScriptInnerHtml.js +0 -1
- package/dist/utilities/loadScriptSrc.d.ts +0 -8
- package/dist/utilities/loadScriptSrc.js +0 -1
- package/dist/utilities/replaceUrlParam.d.ts +0 -1
- package/dist/utilities/replaceUrlParam.js +0 -1
- package/dist/utilities/storeMsisdn.d.ts +0 -3
- package/dist/utilities/storeMsisdn.js +0 -1
- package/index.html +0 -49
- package/mockData/config.json +0 -28
- package/setupJest.js +0 -6
- package/tsconfig.json +0 -28
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
import { __awaiter, __generator, __read, __assign } from 'tslib';
|
|
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 { u as updateUrlParameter, t as tracker } from './tracker-B_zsMRN2.js';
|
|
5
|
+
import { b as bupperizeCountry } from './bupperizeCountry-CCDIOHP6.js';
|
|
6
|
+
import { l as loadScriptInnerHtml } from './loadScriptInnerHtml-DPcoY467.js';
|
|
7
|
+
import { searchToObject } from './searchToObject.js';
|
|
8
|
+
import 'pacman-client';
|
|
9
|
+
import 'uuid';
|
|
10
|
+
|
|
11
|
+
var useOneClickFlowState = function (useSelector) {
|
|
12
|
+
var currentState = useSelector(function (state) { return state.oneClickFlow.currentState; });
|
|
13
|
+
return currentState;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
function oneClickFlowMatch(_a) {
|
|
17
|
+
var getRedirectUrl = _a.getRedirectUrl, subscribe = _a.subscribe;
|
|
18
|
+
return function (state) {
|
|
19
|
+
switch (state.type) {
|
|
20
|
+
case 'GET_REDIRECT_URL':
|
|
21
|
+
return getRedirectUrl(state.result);
|
|
22
|
+
case 'SUBCRIBE_AJAX':
|
|
23
|
+
return subscribe(state.result);
|
|
24
|
+
default:
|
|
25
|
+
// TODO - this should be an error or something
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
return getRedirectUrl(state.result);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function addEmpelloToken(_a) {
|
|
34
|
+
var currentRedirectUrl = _a.currentRedirectUrl, country = _a.country;
|
|
35
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
36
|
+
var token, url;
|
|
37
|
+
return __generator(this, function (_b) {
|
|
38
|
+
switch (_b.label) {
|
|
39
|
+
case 0:
|
|
40
|
+
if (!(country.toLowerCase() === 'pe')) return [3 /*break*/, 3];
|
|
41
|
+
// Empello script is added on server
|
|
42
|
+
return [4 /*yield*/, new Promise(function (resolve) {
|
|
43
|
+
// check if empello script is loaded and available
|
|
44
|
+
var checkEmpelloAvailability = setInterval(function () {
|
|
45
|
+
if (window.Empello) {
|
|
46
|
+
clearInterval(checkEmpelloAvailability);
|
|
47
|
+
resolve();
|
|
48
|
+
}
|
|
49
|
+
}, 100);
|
|
50
|
+
})];
|
|
51
|
+
case 1:
|
|
52
|
+
// Empello script is added on server
|
|
53
|
+
_b.sent();
|
|
54
|
+
if (!(typeof window !== 'undefined' && window.Empello)) return [3 /*break*/, 3];
|
|
55
|
+
return [4 /*yield*/, new Promise(function (resolve) {
|
|
56
|
+
var _a;
|
|
57
|
+
(_a = window.Empello) === null || _a === void 0 ? void 0 : _a.getToken(function (empelloToken) {
|
|
58
|
+
resolve(empelloToken);
|
|
59
|
+
});
|
|
60
|
+
})];
|
|
61
|
+
case 2:
|
|
62
|
+
token = _b.sent();
|
|
63
|
+
url = updateUrlParameter(currentRedirectUrl, 'empello_token', token);
|
|
64
|
+
return [2 /*return*/, url];
|
|
65
|
+
case 3: return [2 /*return*/, currentRedirectUrl];
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var replaceUrlParam = function (url, paramName, paramValue) {
|
|
72
|
+
if (paramValue === void 0) { paramValue = ''; }
|
|
73
|
+
var pattern = new RegExp("\\b(".concat(paramName, "=).*?(&|#|$)"));
|
|
74
|
+
if (url.search(pattern) >= 0) {
|
|
75
|
+
return url.replace(pattern, "$1".concat(paramValue, "$2"));
|
|
76
|
+
}
|
|
77
|
+
var newUrl = url.replace(/[?#]$/, '');
|
|
78
|
+
return "".concat(newUrl + paramName, "=").concat(paramValue, "&");
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
var fetchJsonp = function (_url) {
|
|
82
|
+
var url = _url;
|
|
83
|
+
var ouisys_callback_function = "ouisys_callback_function".concat(Math.floor(Math.random() * 10000));
|
|
84
|
+
return new Promise(function (resolve, reject) {
|
|
85
|
+
// @ts-ignore
|
|
86
|
+
window[ouisys_callback_function] = function (arg) {
|
|
87
|
+
resolve(arg);
|
|
88
|
+
};
|
|
89
|
+
url += url.indexOf('?') === -1 ? '?' : '&';
|
|
90
|
+
url += "jsonp=".concat(ouisys_callback_function);
|
|
91
|
+
var script = document.createElement('script');
|
|
92
|
+
script.src = url;
|
|
93
|
+
script.id = ouisys_callback_function;
|
|
94
|
+
document.body.appendChild(script);
|
|
95
|
+
// Caught if got 404/500
|
|
96
|
+
script.onerror = function () {
|
|
97
|
+
reject(new Error("JSONP request to ".concat(_url, " failed")));
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
var getRedirectUrl = function (_a) {
|
|
102
|
+
var window = _a.window, maybeConfig = _a.maybeConfig, extraParams = _a.extraParams;
|
|
103
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
104
|
+
var country, slug, queryString, apiAction, customDomain, evinaTid, offer, s, search_1, rockmanId, host, url, result_1, identifyError, host, url, result, identifyError, searchObj, identifyError, url, result, identifyError;
|
|
105
|
+
var _b;
|
|
106
|
+
return __generator(this, function (_c) {
|
|
107
|
+
switch (_c.label) {
|
|
108
|
+
case 0:
|
|
109
|
+
if (!(typeof window === 'undefined')) return [3 /*break*/, 1];
|
|
110
|
+
// eslint-disable-next-line no-throw-literal, no-script-url
|
|
111
|
+
throw "javascript: console.error('SSR'); void 6";
|
|
112
|
+
case 1:
|
|
113
|
+
country = maybeConfig.country, slug = maybeConfig.slug, queryString = maybeConfig.queryString, apiAction = maybeConfig.apiAction;
|
|
114
|
+
customDomain = 'de-ads.tallymans.com';
|
|
115
|
+
evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';
|
|
116
|
+
offer = window.pac_analytics.visitor.offer;
|
|
117
|
+
s = window.location.search.substr(1);
|
|
118
|
+
search_1 = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(function (_a) {
|
|
119
|
+
var _b = __read(_a, 2), k = _b[0], v = _b[1];
|
|
120
|
+
return "".concat(k, "=").concat(v);
|
|
121
|
+
})).join('&');
|
|
122
|
+
Object.keys(extraParams).forEach(function (element, index) {
|
|
123
|
+
// Check if search already has query parameters
|
|
124
|
+
if (search_1.length > 0) {
|
|
125
|
+
// If there are existing parameters, add '&' before appending the new one
|
|
126
|
+
search_1 += '&';
|
|
127
|
+
}
|
|
128
|
+
search_1 = "".concat(replaceUrlParam(search_1, element, extraParams[element])).concat(index === 1 ? '&' : '');
|
|
129
|
+
});
|
|
130
|
+
rockmanId = window.pac_analytics.visitor.rockmanId;
|
|
131
|
+
if (!(apiAction === 'identify-user')) return [3 /*break*/, 3];
|
|
132
|
+
host = window.DEV_BASE_URL || '';
|
|
133
|
+
url = "".concat(host, "/tallyman/v1/?action=identify-user&country=").concat(bupperizeCountry(country), "&slug=").concat(slug, "&device=").concat('smart', "&offerId=").concat(offer, "&rockman_id=").concat(rockmanId, "&sam_evina_tid=").concat(evinaTid, "&").concat(search_1);
|
|
134
|
+
return [4 /*yield*/, fetchJsonp(url)];
|
|
135
|
+
case 2:
|
|
136
|
+
result_1 = _c.sent();
|
|
137
|
+
if (result_1.success === false) {
|
|
138
|
+
identifyError = new Error("Error in getRedirectUrl() identify-user action:\n".concat(result_1.message));
|
|
139
|
+
identifyError.type = 'NotOn3g';
|
|
140
|
+
throw identifyError;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
return [2 /*return*/, {
|
|
144
|
+
subscription_url: result_1.subscription_url || result_1.redirect_url,
|
|
145
|
+
action: function () { return subscribe(result_1.subscription_url); }
|
|
146
|
+
}];
|
|
147
|
+
}
|
|
148
|
+
case 3:
|
|
149
|
+
if (!(apiAction === 'he')) return [3 /*break*/, 5];
|
|
150
|
+
host = window.DEV_BASE_URL || '';
|
|
151
|
+
url = "".concat(host, "/tallyman/v1/?action=he&country=").concat(bupperizeCountry(country), "&slug=").concat(slug, "&device=").concat('smart', "&offerId=").concat(offer, "&rockman_id=").concat(rockmanId, "&sam_evina_tid=").concat(evinaTid, "&").concat(search_1);
|
|
152
|
+
return [4 /*yield*/, fetch(url).then(function (x) { return x.json(); })];
|
|
153
|
+
case 4:
|
|
154
|
+
result = _c.sent();
|
|
155
|
+
if (result.success === false) {
|
|
156
|
+
identifyError = new Error("Error in getRedirectUrl() identify-user action:\n".concat(result.message));
|
|
157
|
+
identifyError.type = 'NotOn3g';
|
|
158
|
+
throw identifyError;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
loadScriptInnerHtml(result.source);
|
|
162
|
+
return [2 /*return*/, { redirect_url: result.redirectUrlWithReplacedUniqid }];
|
|
163
|
+
}
|
|
164
|
+
case 5:
|
|
165
|
+
if (country.toLowerCase() === 'om') {
|
|
166
|
+
searchObj = searchToObject(window);
|
|
167
|
+
if (searchObj.success === 'false') {
|
|
168
|
+
identifyError = new Error("Error in getRedirectUrl() identify-user");
|
|
169
|
+
identifyError.type = 'NotOn3g';
|
|
170
|
+
throw identifyError;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
return [2 /*return*/, { redirect_url: searchObj.redirect_url || searchObj.url }];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
url = "https://".concat(customDomain, "/tallyman/v1/?action=redirect&country=").concat(bupperizeCountry(country), "&slug=").concat(slug, "&device=").concat('smart', "&offerId=").concat(offer, "&rockman_id=").concat(rockmanId, "&page=").concat(encodeURIComponent((_b = window === null || window === void 0 ? void 0 : window.location) === null || _b === void 0 ? void 0 : _b.href), "&sam_evina_tid=").concat(evinaTid, "&").concat(search_1);
|
|
177
|
+
return [4 /*yield*/, fetch(url).then(function (x) { return x.json(); })];
|
|
178
|
+
case 6:
|
|
179
|
+
result = _c.sent();
|
|
180
|
+
if (result.success === false) {
|
|
181
|
+
identifyError = new Error("Error in getRedirectUrl() identify-user action:\n".concat(result.message));
|
|
182
|
+
identifyError.type = 'NotOn3g';
|
|
183
|
+
throw identifyError;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return [2 /*return*/, { redirect_url: result.redirect_url }];
|
|
187
|
+
}
|
|
188
|
+
case 7: return [2 /*return*/];
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
var subscribe = function (url, extraParams) { return __awaiter(void 0, void 0, void 0, function () {
|
|
194
|
+
var evinaTid, extraParamsQs, isCleanTraffic, result, subscribeError;
|
|
195
|
+
return __generator(this, function (_a) {
|
|
196
|
+
switch (_a.label) {
|
|
197
|
+
case 0:
|
|
198
|
+
evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';
|
|
199
|
+
extraParamsQs = !extraParams
|
|
200
|
+
? ''
|
|
201
|
+
: "&".concat(Object.keys(extraParams)
|
|
202
|
+
.map(function (k) { return "".concat(k, "=").concat(extraParams[k]); })
|
|
203
|
+
.join('&'));
|
|
204
|
+
isCleanTraffic = typeof window !== 'undefined' && window.shouldBlock === true ? '&is-clean-traffic=false' : '&is-clean-traffic=true';
|
|
205
|
+
return [4 /*yield*/, fetch("".concat(url, "&sam_evina_tid=").concat(evinaTid).concat(isCleanTraffic).concat(extraParamsQs)).then(function (x) { return x.json(); })];
|
|
206
|
+
case 1:
|
|
207
|
+
result = _a.sent();
|
|
208
|
+
if (result.success === false) {
|
|
209
|
+
subscribeError = new Error("Error in subscribe() one-click-subscribe action:\n".concat(result.message));
|
|
210
|
+
subscribeError.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'SubscriptionError';
|
|
211
|
+
subscribeError.productUrl = result.product_url ? result.product_url : '';
|
|
212
|
+
throw subscribeError;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
return [2 /*return*/, result.product_url || result.redirect_url];
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}); };
|
|
220
|
+
var getRedirectUrlBupperWay = function (window, maybeConfig, extraParams) { return __awaiter(void 0, void 0, void 0, function () {
|
|
221
|
+
var country, slug, queryString, offer, s, search, extraParamsQs, xcid, evinaTid, host;
|
|
222
|
+
return __generator(this, function (_a) {
|
|
223
|
+
if (typeof window === 'undefined') {
|
|
224
|
+
// eslint-disable-next-line no-script-url
|
|
225
|
+
return [2 /*return*/, "javascript: console.error('SSR'); void 6"];
|
|
226
|
+
}
|
|
227
|
+
country = maybeConfig.country, slug = maybeConfig.slug, queryString = maybeConfig.queryString;
|
|
228
|
+
offer = window.pac_analytics.visitor.offer;
|
|
229
|
+
s = window.location.search.substr(1);
|
|
230
|
+
search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(function (_a) {
|
|
231
|
+
var _b = __read(_a, 2), k = _b[0], v = _b[1];
|
|
232
|
+
return "".concat(k, "=").concat(v);
|
|
233
|
+
})).join('&');
|
|
234
|
+
extraParamsQs = !extraParams
|
|
235
|
+
? ''
|
|
236
|
+
: "&".concat(Object.keys(extraParams)
|
|
237
|
+
.map(function (k) { return "".concat(k, "=").concat(extraParams[k]); })
|
|
238
|
+
.join('&'));
|
|
239
|
+
xcid = window.location.href.split('/')[3].split('?')[0];
|
|
240
|
+
evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';
|
|
241
|
+
host = window.DEV_BASE_URL_BUPPER || '';
|
|
242
|
+
return [2 /*return*/, "".concat(host, "/").concat(bupperizeCountry(country), "/").concat(slug, "?offer=").concat(offer, "&atmobirun=1&rockman_id=").concat(window.pac_analytics.visitor.rockmanId, "&redirPixels=").concat(window.location.host, "&sam_evina_tid=").concat(evinaTid, "&x-xcid=").concat(xcid).concat(extraParamsQs, "&").concat(search)];
|
|
243
|
+
});
|
|
244
|
+
}); };
|
|
245
|
+
|
|
246
|
+
var initialState = {
|
|
247
|
+
currentState: {
|
|
248
|
+
type: 'GET_REDIRECT_URL',
|
|
249
|
+
result: NothingYet()
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
/**
|
|
253
|
+
* getRedirectUrlAction
|
|
254
|
+
* @returns {type: ' 'oneClickFlow/getRedirectUrlAction', payload: {type: PossibleTypes, result: GETREDIRECTUrlState}}
|
|
255
|
+
|
|
256
|
+
* Calls redirect api to get a redirect url for the user to be redirected to
|
|
257
|
+
* Can also create a bupper redirect url
|
|
258
|
+
*/
|
|
259
|
+
var getRedirectUrlAction = createAsyncThunk('oneClickFlow/getRedirectUrlAction',
|
|
260
|
+
// @ts-ignore
|
|
261
|
+
function (_a, _b) {
|
|
262
|
+
var window = _a.window, isGetRedirectBupperWay = _a.isGetRedirectBupperWay, extraParams = _a.extraParams, autoRedirect = _a.autoRedirect;
|
|
263
|
+
var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
|
|
264
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
265
|
+
var state, _c, config, subscription_url, redirect_url, operator, redirectUrl, updatedRedirectUrl_1, timer_1, newRedirectUrl, updated_redirect_url_1, ex_1;
|
|
266
|
+
return __generator(this, function (_d) {
|
|
267
|
+
switch (_d.label) {
|
|
268
|
+
case 0:
|
|
269
|
+
state = getState();
|
|
270
|
+
_c = state.strategy.currentState.data, config = _c.config, subscription_url = _c.subscription_url, redirect_url = _c.redirect_url, operator = _c.operator;
|
|
271
|
+
_d.label = 1;
|
|
272
|
+
case 1:
|
|
273
|
+
_d.trys.push([1, 8, , 9]);
|
|
274
|
+
if (!(isGetRedirectBupperWay === true)) return [3 /*break*/, 4];
|
|
275
|
+
return [4 /*yield*/, getRedirectUrlBupperWay(window, config, __assign(__assign({}, (operator && { operator: operator })), extraParams))];
|
|
276
|
+
case 2:
|
|
277
|
+
redirectUrl = _d.sent();
|
|
278
|
+
return [4 /*yield*/, addEmpelloToken({
|
|
279
|
+
currentRedirectUrl: redirectUrl,
|
|
280
|
+
country: config.country
|
|
281
|
+
})];
|
|
282
|
+
case 3:
|
|
283
|
+
updatedRedirectUrl_1 = _d.sent();
|
|
284
|
+
tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: updatedRedirectUrl_1 });
|
|
285
|
+
if (window.isAutoFraudScreener === true) {
|
|
286
|
+
timer_1 = setInterval(function () {
|
|
287
|
+
if (window.isEvinaSessionChecked) {
|
|
288
|
+
clearInterval(timer_1);
|
|
289
|
+
tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', {
|
|
290
|
+
redirect_url: updatedRedirectUrl_1
|
|
291
|
+
});
|
|
292
|
+
setTimeout(function () {
|
|
293
|
+
window.location.href = updatedRedirectUrl_1;
|
|
294
|
+
}, 0);
|
|
295
|
+
}
|
|
296
|
+
}, 100);
|
|
297
|
+
}
|
|
298
|
+
else if (autoRedirect === true) {
|
|
299
|
+
tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { redirect_url: updatedRedirectUrl_1 });
|
|
300
|
+
setTimeout(function () {
|
|
301
|
+
window.location.href = updatedRedirectUrl_1;
|
|
302
|
+
}, 0);
|
|
303
|
+
return [2 /*return*/, {
|
|
304
|
+
type: 'GET_REDIRECT_URL',
|
|
305
|
+
result: Success({
|
|
306
|
+
redirectUrl: updatedRedirectUrl_1
|
|
307
|
+
})
|
|
308
|
+
}];
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
return [2 /*return*/, {
|
|
312
|
+
type: 'GET_REDIRECT_URL',
|
|
313
|
+
result: Success({
|
|
314
|
+
redirectUrl: updatedRedirectUrl_1
|
|
315
|
+
})
|
|
316
|
+
}];
|
|
317
|
+
}
|
|
318
|
+
return [3 /*break*/, 7];
|
|
319
|
+
case 4:
|
|
320
|
+
if (subscription_url && subscription_url != null) {
|
|
321
|
+
return [2 /*return*/, {
|
|
322
|
+
type: 'SUBCRIBE_AJAX',
|
|
323
|
+
result: NothingYet()
|
|
324
|
+
}];
|
|
325
|
+
}
|
|
326
|
+
if (redirect_url) {
|
|
327
|
+
tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: redirect_url });
|
|
328
|
+
return [2 /*return*/, {
|
|
329
|
+
type: 'GET_REDIRECT_URL',
|
|
330
|
+
result: Success({
|
|
331
|
+
redirectUrl: redirect_url
|
|
332
|
+
})
|
|
333
|
+
}];
|
|
334
|
+
}
|
|
335
|
+
tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url');
|
|
336
|
+
return [4 /*yield*/, getRedirectUrl({
|
|
337
|
+
window: window,
|
|
338
|
+
maybeConfig: config,
|
|
339
|
+
extraParams: __assign(__assign({}, (operator && { operator: operator })), extraParams)
|
|
340
|
+
})];
|
|
341
|
+
case 5:
|
|
342
|
+
newRedirectUrl = (_d.sent()).redirect_url;
|
|
343
|
+
tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url-success');
|
|
344
|
+
return [4 /*yield*/, addEmpelloToken({
|
|
345
|
+
currentRedirectUrl: newRedirectUrl,
|
|
346
|
+
country: config.country
|
|
347
|
+
})];
|
|
348
|
+
case 6:
|
|
349
|
+
updated_redirect_url_1 = _d.sent();
|
|
350
|
+
tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { updated_redirect_url: updated_redirect_url_1 });
|
|
351
|
+
if (autoRedirect === true || window.isAutoFraudScreener === true) {
|
|
352
|
+
tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { updated_redirect_url: updated_redirect_url_1 });
|
|
353
|
+
setTimeout(function () {
|
|
354
|
+
// eslint-disable-next-line camelcase
|
|
355
|
+
window.location.href = updated_redirect_url_1;
|
|
356
|
+
}, 0);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
return [2 /*return*/, {
|
|
360
|
+
type: 'GET_REDIRECT_URL',
|
|
361
|
+
result: Success({
|
|
362
|
+
redirectUrl: updated_redirect_url_1
|
|
363
|
+
})
|
|
364
|
+
}];
|
|
365
|
+
}
|
|
366
|
+
_d.label = 7;
|
|
367
|
+
case 7: return [3 /*break*/, 9];
|
|
368
|
+
case 8:
|
|
369
|
+
ex_1 = _d.sent();
|
|
370
|
+
console.warn(ex_1);
|
|
371
|
+
tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {
|
|
372
|
+
errorType: 'UnknownError'
|
|
373
|
+
});
|
|
374
|
+
return [2 /*return*/, rejectWithValue({
|
|
375
|
+
errorType: 'UnknownError',
|
|
376
|
+
error: ex_1.toString()
|
|
377
|
+
})];
|
|
378
|
+
case 9: return [2 /*return*/];
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
var subscribeUrlAction = createAsyncThunk('oneClickFlow/subscribeUrlAction', function (_a, _b) {
|
|
384
|
+
var window = _a.window, autoRedirect = _a.autoRedirect, extraParams = _a.extraParams;
|
|
385
|
+
var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
|
|
386
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
387
|
+
var state, subscription_url, product_url, ex_2;
|
|
388
|
+
return __generator(this, function (_c) {
|
|
389
|
+
switch (_c.label) {
|
|
390
|
+
case 0:
|
|
391
|
+
state = getState();
|
|
392
|
+
subscription_url = state.strategy.currentState.data.subscription_url;
|
|
393
|
+
_c.label = 1;
|
|
394
|
+
case 1:
|
|
395
|
+
_c.trys.push([1, 4, , 5]);
|
|
396
|
+
// Start Call to Subscribe ajax
|
|
397
|
+
tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe');
|
|
398
|
+
return [4 /*yield*/, subscribe(subscription_url, extraParams)];
|
|
399
|
+
case 2: return [4 /*yield*/, _c.sent()];
|
|
400
|
+
case 3:
|
|
401
|
+
product_url = _c.sent();
|
|
402
|
+
tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe-success', { product_url: product_url });
|
|
403
|
+
// End Call to Subscribe ajax
|
|
404
|
+
if (autoRedirect === true) {
|
|
405
|
+
tracker.customEvent('Flow', 'advance-auto', 'click-product-url', { product_url: product_url });
|
|
406
|
+
window.location.href = product_url;
|
|
407
|
+
}
|
|
408
|
+
return [2 /*return*/, {
|
|
409
|
+
type: 'SUBCRIBE_AJAX',
|
|
410
|
+
result: Success({
|
|
411
|
+
productUrl: product_url
|
|
412
|
+
})
|
|
413
|
+
}];
|
|
414
|
+
case 4:
|
|
415
|
+
ex_2 = _c.sent();
|
|
416
|
+
console.warn(ex_2);
|
|
417
|
+
tracker.recedeInFlow('tallyman.v1-one-click', 'click-subscribe-failure', { error: ex_2.toString() });
|
|
418
|
+
return [2 /*return*/, rejectWithValue({
|
|
419
|
+
errorType: 'UnknownError',
|
|
420
|
+
error: ex_2.toString(),
|
|
421
|
+
productUrl: ex_2.productUrl
|
|
422
|
+
})];
|
|
423
|
+
case 5: return [2 /*return*/];
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
});
|
|
427
|
+
});
|
|
428
|
+
var oneClickFlowSlice = createSlice({
|
|
429
|
+
name: 'oneClickFlow',
|
|
430
|
+
initialState: initialState,
|
|
431
|
+
reducers: {},
|
|
432
|
+
extraReducers: function (builder) {
|
|
433
|
+
builder
|
|
434
|
+
.addCase(getRedirectUrlAction.pending, function (state) {
|
|
435
|
+
state.currentState = { type: 'GET_REDIRECT_URL', result: Loading() };
|
|
436
|
+
})
|
|
437
|
+
.addCase(getRedirectUrlAction.fulfilled, function (state, action) {
|
|
438
|
+
state.currentState = action.payload;
|
|
439
|
+
})
|
|
440
|
+
.addCase(getRedirectUrlAction.rejected, function (state, action) {
|
|
441
|
+
state.currentState = {
|
|
442
|
+
type: 'GET_REDIRECT_URL',
|
|
443
|
+
result: Failure(action.payload)
|
|
444
|
+
};
|
|
445
|
+
})
|
|
446
|
+
.addCase(subscribeUrlAction.pending, function (state) {
|
|
447
|
+
state.currentState = { type: 'SUBCRIBE_AJAX', result: Loading() };
|
|
448
|
+
})
|
|
449
|
+
.addCase(subscribeUrlAction.fulfilled, function (state, action) {
|
|
450
|
+
state.currentState = action.payload;
|
|
451
|
+
})
|
|
452
|
+
.addCase(subscribeUrlAction.rejected, function (state, action) {
|
|
453
|
+
state.currentState = {
|
|
454
|
+
type: 'SUBCRIBE_AJAX',
|
|
455
|
+
result: Failure(action.payload)
|
|
456
|
+
};
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
// Export reducers and actions
|
|
461
|
+
var oneClickFlowReducer = oneClickFlowSlice.reducer; oneClickFlowSlice.actions;
|
|
462
|
+
|
|
463
|
+
export { getRedirectUrlAction, oneClickFlowMatch, oneClickFlowReducer, subscribeUrlAction, useOneClickFlowState };
|
|
464
|
+
//# sourceMappingURL=oneClickFlow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneClickFlow.js","sources":["../src/flows/oneClickFlow/hooks/useOneClickFlowState.ts","../src/flows/oneClickFlow/match.ts","../src/utilities/addEmpelloToken.ts","../src/utilities/replaceUrlParam.ts","../src/flows/oneClickFlow/main.ts","../src/flows/oneClickFlow/oneClickFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useOneClickFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.oneClickFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IGETREDIRECTURLFailure,\n IGETREDIRECTURLSuccess,\n OneClickFlowCurrentState,\n SubscribeFailure,\n SubscribeSuccess\n} from '../../sharedFlowTypes/OneClickTypes';\n\nfunction oneClickFlowMatch<R>({\n getRedirectUrl,\n subscribe\n}: {\n getRedirectUrl: (rds: RDS.RemoteDataState<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>) => R;\n subscribe?: (rds: RDS.RemoteDataState<SubscribeFailure, SubscribeSuccess>) => R;\n}): (state: OneClickFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'GET_REDIRECT_URL':\n return getRedirectUrl(state.result);\n case 'SUBCRIBE_AJAX':\n return subscribe(state.result);\n default:\n // TODO - this should be an error or something\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return getRedirectUrl(state.result);\n }\n };\n}\n\nexport { oneClickFlowMatch };\n","import { updateUrlParameter } from '../pacman/queryString';\n\nexport async function addEmpelloToken({\n currentRedirectUrl,\n country\n}: {\n currentRedirectUrl: string;\n country: string;\n}) {\n if (country.toLowerCase() === 'pe') {\n // Empello script is added on server\n\n await new Promise<void>((resolve) => {\n // check if empello script is loaded and available\n const checkEmpelloAvailability = setInterval(() => {\n if (window.Empello) {\n clearInterval((checkEmpelloAvailability as unknown) as number);\n resolve();\n }\n }, 100);\n });\n if (typeof window !== 'undefined' && window.Empello) {\n // call getToken function from empello\n const token = await new Promise<string>((resolve) => {\n window.Empello?.getToken((empelloToken: string) => {\n resolve(empelloToken);\n });\n });\n\n const url = updateUrlParameter(currentRedirectUrl, 'empello_token', token);\n return url;\n }\n }\n\n return currentRedirectUrl;\n}\n","export const replaceUrlParam = (url: string, paramName: string, paramValue = '') => {\n const pattern = new RegExp(`\\\\b(${paramName}=).*?(&|#|$)`);\n if (url.search(pattern) >= 0) {\n return url.replace(pattern, `$1${paramValue}$2`);\n }\n const newUrl = url.replace(/[?#]$/, '');\n return `${newUrl + paramName}=${paramValue}&`;\n};\n","import { IError } from '../../common-types/IError';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IIDentifyUserResult,\n ILinkExtraParams,\n ISubscribeResult,\n OneClickFlowState\n} from '../../sharedFlowTypes/OneClickTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { replaceUrlParam } from '../../utilities/replaceUrlParam';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nexport const additionalQueryString = `msisdnSubmitted=Y&legalCheckbox=Y&incentivizedCheckbox=Y&op_confirmCheckbox=N`;\n\nconst fetchJsonp: <T>(_url: string) => Promise<T> = (_url: string) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n // @ts-ignore\n window[ouisys_callback_function] = (arg) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\n\nexport const getRedirectUrl = async ({\n window,\n maybeConfig,\n extraParams\n}: {\n window: Window;\n maybeConfig: IConfig;\n extraParams?: ILinkExtraParams;\n}): Promise<{\n subscription_url?: string;\n redirect_url?: string;\n action?: () => Promise<string>;\n}> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-throw-literal, no-script-url\n throw \"javascript: console.error('SSR'); void 6\";\n } else {\n const { country, slug, queryString, apiAction } = maybeConfig;\n const customDomain = 'de-ads.tallymans.com';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n let search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n\n Object.keys(extraParams).forEach((element, index) => {\n // Check if search already has query parameters\n if (search.length > 0) {\n // If there are existing parameters, add '&' before appending the new one\n search += '&';\n }\n search = `${replaceUrlParam(search, element, extraParams[element])}${index === 1 ? '&' : ''}`;\n });\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (apiAction === 'identify-user') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=identify-user&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetchJsonp<IIDentifyUserResult>(url);\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n action: () => subscribe(result.subscription_url)\n };\n }\n } else if (apiAction === 'he') {\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?action=he&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n loadScriptInnerHtml(result.source);\n return { redirect_url: result.redirectUrlWithReplacedUniqid };\n }\n } else {\n if (country.toLowerCase() === 'om') {\n const searchObj = searchToObject(window) as {\n redirect_url: string;\n url: string;\n msisdn: string;\n success: 'true' | 'false';\n };\n if (searchObj.success === 'false') {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: searchObj.redirect_url || searchObj.url };\n }\n }\n const url = `https://${customDomain}/tallyman/v1/?action=redirect&country=${bupperizeCountry(\n country\n )}&slug=${slug}&device=${'smart'}&offerId=${offer}&rockman_id=${rockmanId}&page=${encodeURIComponent(\n window?.location?.href\n )}&sam_evina_tid=${evinaTid}&${search}`;\n const result = await fetch(url).then((x) => x.json());\n\n if (result.success === false) {\n const identifyError = new Error(`Error in getRedirectUrl() identify-user action:\\n${result.message}`) as IError;\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n return { redirect_url: result.redirect_url };\n }\n }\n }\n};\n\nexport const subscribe: (url: string, extraParams?: IHash) => Promise<string> = async (\n url: string,\n extraParams?: IHash\n) => {\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n const isCleanTraffic =\n typeof window !== 'undefined' && window.shouldBlock === true ? '&is-clean-traffic=false' : '&is-clean-traffic=true';\n\n const result: ISubscribeResult = await fetch(\n `${url}&sam_evina_tid=${evinaTid}${isCleanTraffic}${extraParamsQs}`\n ).then((x) => x.json());\n\n if (result.success === false) {\n const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as {\n productUrl: string;\n } & IError;\n subscribeError.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'SubscriptionError';\n subscribeError.productUrl = result.product_url ? result.product_url : '';\n throw subscribeError;\n } else {\n return result.product_url || result.redirect_url;\n }\n};\n\nexport const getRedirectUrlBupperWay = async (\n window: Window,\n maybeConfig: IConfig,\n extraParams?: ILinkExtraParams\n): Promise<string> => {\n if (typeof window === 'undefined') {\n // eslint-disable-next-line no-script-url\n return \"javascript: console.error('SSR'); void 6\";\n }\n const { country, slug, queryString } = maybeConfig;\n const { offer } = window.pac_analytics.visitor;\n const s = window.location.search.substr(1);\n // @ts-ignore\n const search = (!!s && s.length > 0 ? [s] : []).concat((queryString || []).map(([k, v]) => `${k}=${v}`)).join('&');\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n // one click flow must use http not https\n const xcid = window.location.href.split('/')[3].split('?')[0];\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const host = (window as Window).DEV_BASE_URL_BUPPER || '';\n return `${host}/${bupperizeCountry(country)}/${slug}?offer=${offer}&atmobirun=1&rockman_id=${\n window.pac_analytics.visitor.rockmanId\n }&redirPixels=${window.location.host}&sam_evina_tid=${evinaTid}&x-xcid=${xcid}${extraParamsQs}&${search}`;\n};\n\nexport const mockedRedirectUrlSuccessState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n // @ts-ignore\n result: RDS.Success<IGETREDIRECTURLFailure, IGETREDIRECTURLSuccess>({ redirectUrl: '/product' })\n }\n};\n\nexport const mockedSubscribeAjaxState: OneClickFlowState = {\n currentState: {\n type: 'SUBCRIBE_AJAX',\n // @ts-ignore\n result: RDS.NothingYet()\n }\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n AJAXSUBSCRIBEState,\n GETREDIRECTUrlState,\n IGETREDIRECTURLFailure,\n OneClickFlowState,\n SubscribeFailure\n} from '../../sharedFlowTypes/OneClickTypes';\nimport { RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { addEmpelloToken } from '../../utilities/addEmpelloToken';\nimport { tracker } from '../../utilities/tracker';\nimport { getRedirectUrl, getRedirectUrlBupperWay, subscribe } from './main';\n\nconst initialState: OneClickFlowState = {\n currentState: {\n type: 'GET_REDIRECT_URL',\n result: RDS.NothingYet()\n }\n};\n\ninterface GetRedirectUrlArgs {\n window: Window;\n extraParams?: IHash;\n autoRedirect?: boolean;\n isGetRedirectBupperWay?: boolean;\n ignoreUrlParams?: boolean;\n}\n/**\n * getRedirectUrlAction\n * @returns {type: ' 'oneClickFlow/getRedirectUrlAction', payload: {type: PossibleTypes, result: GETREDIRECTUrlState}}\n \n * Calls redirect api to get a redirect url for the user to be redirected to\n * Can also create a bupper redirect url\n */\nexport const getRedirectUrlAction = createAsyncThunk<\n GETREDIRECTUrlState,\n GetRedirectUrlArgs,\n {\n rejectValue: IGETREDIRECTURLFailure;\n }\n>(\n 'oneClickFlow/getRedirectUrlAction',\n // @ts-ignore\n async ({ window, isGetRedirectBupperWay, extraParams, autoRedirect }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n const { config, subscription_url, redirect_url, operator } = state.strategy.currentState.data;\n try {\n if (isGetRedirectBupperWay === true) {\n const redirectUrl = await getRedirectUrlBupperWay(window, config, {\n ...(operator && { operator }),\n ...extraParams\n });\n\n // add empellow token for specific country\n const updatedRedirectUrl = await addEmpelloToken({\n currentRedirectUrl: redirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: updatedRedirectUrl });\n if (window.isAutoFraudScreener === true) {\n // Wait for Evina to Check Fraud First\n const timer = setInterval(() => {\n if (window.isEvinaSessionChecked) {\n clearInterval(timer);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', {\n redirect_url: updatedRedirectUrl\n });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n }\n }, 100);\n } else if (autoRedirect === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { redirect_url: updatedRedirectUrl });\n setTimeout(() => {\n window.location.href = updatedRedirectUrl;\n }, 0);\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updatedRedirectUrl\n })\n };\n }\n } else {\n if (subscription_url && subscription_url != null) {\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.NothingYet()\n };\n }\n if (redirect_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url });\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: redirect_url\n })\n };\n }\n\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url');\n const { redirect_url: newRedirectUrl } = await getRedirectUrl({\n window,\n maybeConfig: config,\n extraParams: {\n ...(operator && { operator }),\n ...extraParams\n }\n });\n tracker.advancedInFlow('tallyman.v1-one-click', 'get-redirect-url-success');\n\n // add empellow token for specific country\n const updated_redirect_url = await addEmpelloToken({\n currentRedirectUrl: newRedirectUrl,\n country: config.country\n });\n\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { updated_redirect_url });\n\n if (autoRedirect === true || window.isAutoFraudScreener === true) {\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-redirect-url', { updated_redirect_url });\n\n setTimeout(() => {\n // eslint-disable-next-line camelcase\n window.location.href = updated_redirect_url;\n }, 0);\n } else {\n return {\n type: 'GET_REDIRECT_URL',\n result: RDS.Success({\n redirectUrl: updated_redirect_url\n })\n };\n }\n }\n } catch (ex) {\n console.warn(ex);\n tracker.recedeInFlow('tallyman.v1-one-click', 'get-redirect-url-failure', {\n errorType: 'UnknownError'\n });\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString()\n });\n }\n }\n);\n\n/**\n * subscribeUrlAction\n * @returns {type: ' 'oneClickFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls oneclick subscripe api to subscribe the user\n * Returns a product url\n */\ninterface OneClickSubscribeArgs {\n window: Window;\n autoRedirect?: boolean;\n extraParams?: IHash;\n}\nexport const subscribeUrlAction = createAsyncThunk<\n AJAXSUBSCRIBEState,\n OneClickSubscribeArgs,\n {\n rejectValue: SubscribeFailure;\n }\n>('oneClickFlow/subscribeUrlAction', async ({ window, autoRedirect, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n const { subscription_url } = state.strategy.currentState.data;\n try {\n // Start Call to Subscribe ajax\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe');\n const product_url = await await subscribe(subscription_url, extraParams);\n tracker.advancedInFlow('tallyman.v1-one-click', 'click-subscribe-success', { product_url });\n // End Call to Subscribe ajax\n\n if (autoRedirect === true) {\n tracker.customEvent('Flow', 'advance-auto', 'click-product-url', { product_url });\n window.location.href = product_url;\n }\n return {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Success({\n productUrl: product_url\n })\n };\n } catch (ex) {\n console.warn(ex);\n\n tracker.recedeInFlow('tallyman.v1-one-click', 'click-subscribe-failure', { error: ex.toString() });\n\n return rejectWithValue({\n errorType: 'UnknownError',\n error: ex.toString(),\n productUrl: ex.productUrl\n });\n }\n});\n\nconst oneClickFlowSlice = createSlice({\n name: 'oneClickFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getRedirectUrlAction.pending, (state) => {\n state.currentState = { type: 'GET_REDIRECT_URL', result: RDS.Loading() };\n })\n .addCase(getRedirectUrlAction.fulfilled, (state, action: PayloadAction<GETREDIRECTUrlState>) => {\n state.currentState = action.payload;\n })\n .addCase(getRedirectUrlAction.rejected, (state, action: PayloadAction<IGETREDIRECTURLFailure>) => {\n state.currentState = {\n type: 'GET_REDIRECT_URL',\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(subscribeUrlAction.pending, (state) => {\n state.currentState = { type: 'SUBCRIBE_AJAX', result: RDS.Loading() };\n })\n .addCase(subscribeUrlAction.fulfilled, (state, action: PayloadAction<AJAXSUBSCRIBEState>) => {\n state.currentState = action.payload;\n })\n .addCase(subscribeUrlAction.rejected, (state, action: PayloadAction<SubscribeFailure>) => {\n state.currentState = {\n type: 'SUBCRIBE_AJAX',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: oneClickFlowReducer, actions: oneClickFlowActions } = oneClickFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectOneClickFlowState = (state: any) => state.oneClickFlow;\n"],"names":["RDS.NothingYet","RDS.Success","RDS.Loading","RDS.Failure"],"mappings":"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"}
|