ouisys-engine 4.6.2 → 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.
Files changed (222) hide show
  1. package/dist/RemoteDataState-CwHLI23e.js +75 -0
  2. package/dist/RemoteDataState-CwHLI23e.js.map +1 -0
  3. package/dist/bupperizeCountry-CCDIOHP6.js +4 -0
  4. package/dist/bupperizeCountry-CCDIOHP6.js.map +1 -0
  5. package/dist/checkSubscriptionByRockmanIdOnly-C89Ph9cV.js +27 -0
  6. package/dist/checkSubscriptionByRockmanIdOnly-C89Ph9cV.js.map +1 -0
  7. package/dist/checkSubscriptionHander.js +53 -0
  8. package/dist/checkSubscriptionHander.js.map +1 -0
  9. package/dist/click2smsFlow.js +246 -0
  10. package/dist/click2smsFlow.js.map +1 -0
  11. package/dist/creditCardFlow.js +248 -0
  12. package/dist/creditCardFlow.js.map +1 -0
  13. package/dist/getConfig.js +14 -0
  14. package/dist/getConfig.js.map +1 -0
  15. package/dist/handleClickChainFlow.js +32 -0
  16. package/dist/handleClickChainFlow.js.map +1 -0
  17. package/dist/handleSubmitNumber.js +65 -0
  18. package/dist/handleSubmitNumber.js.map +1 -0
  19. package/dist/helpers-J_h-ZgxH.js +29 -0
  20. package/dist/helpers-J_h-ZgxH.js.map +1 -0
  21. package/dist/loadScriptInnerHtml-DPcoY467.js +26 -0
  22. package/dist/loadScriptInnerHtml-DPcoY467.js.map +1 -0
  23. package/dist/moFlow.js +275 -0
  24. package/dist/moFlow.js.map +1 -0
  25. package/dist/moRedirFlow.js +225 -0
  26. package/dist/moRedirFlow.js.map +1 -0
  27. package/dist/oneClickFlow.js +464 -0
  28. package/dist/oneClickFlow.js.map +1 -0
  29. package/dist/pinFlow.js +697 -0
  30. package/dist/pinFlow.js.map +1 -0
  31. package/dist/searchToObject.js +19 -0
  32. package/dist/searchToObject.js.map +1 -0
  33. package/dist/storeMsisdn-ChiBh8mI.js +58 -0
  34. package/dist/storeMsisdn-ChiBh8mI.js.map +1 -0
  35. package/dist/strategy.js +50 -0
  36. package/dist/strategy.js.map +1 -0
  37. package/dist/strategySlice-bF74rxDK.js +842 -0
  38. package/dist/strategySlice-bF74rxDK.js.map +1 -0
  39. package/dist/tracker-B_zsMRN2.js +79 -0
  40. package/dist/tracker-B_zsMRN2.js.map +1 -0
  41. package/dist/tracker.js +5 -0
  42. package/dist/tracker.js.map +1 -0
  43. package/dist/tryGetIPRangeName-C69HEG5W.js +42 -0
  44. package/dist/tryGetIPRangeName-C69HEG5W.js.map +1 -0
  45. package/dist/types/CreditCardTypes-B-IT-l6I.d.ts +72 -0
  46. package/dist/types/IHash-0OgZ_1ij.d.ts +5 -0
  47. package/dist/types/MoRedirTypes-4tEJjT1g.d.ts +31 -0
  48. package/dist/types/MoTypes-D-UK92gs.d.ts +45 -0
  49. package/dist/types/OneClickTypes-DF0jodl-.d.ts +69 -0
  50. package/dist/types/PinTypes-BLJDBZe6.d.ts +128 -0
  51. package/dist/types/RemoteDataState-D1aFrz8W.d.ts +61 -0
  52. package/dist/types/StrategyTypes-BEIYqoJV.d.ts +325 -0
  53. package/dist/types/UssdTypes-C7QlIW11.d.ts +34 -0
  54. package/dist/types/checkSubscriptionHander.d.ts +8 -0
  55. package/dist/types/click2smsFlow.d.ts +37 -0
  56. package/dist/types/creditCardFlow.d.ts +37 -0
  57. package/dist/types/getConfig.d.ts +38 -0
  58. package/dist/types/handleClickChainFlow.d.ts +6 -0
  59. package/dist/types/handleSubmitNumber.d.ts +26 -0
  60. package/dist/types/moFlow.d.ts +70 -0
  61. package/dist/types/moRedirFlow.d.ts +82 -0
  62. package/dist/types/oneClickFlow.d.ts +56 -0
  63. package/dist/types/pinFlow.d.ts +179 -0
  64. package/dist/types/searchToObject.d.ts +3 -0
  65. package/dist/types/strategy.d.ts +86 -0
  66. package/dist/types/tracker.d.ts +5 -0
  67. package/dist/types/ussdFlow.d.ts +84 -0
  68. package/dist/ussdFlow.js +211 -0
  69. package/dist/ussdFlow.js.map +1 -0
  70. package/package.json +85 -9
  71. package/.babelrc +0 -30
  72. package/.browserslistrc +0 -6
  73. package/.eslintrc.js +0 -3
  74. package/.nvmrc +0 -1
  75. package/.prettierignore +0 -4
  76. package/dist/@types/react-tracker.d.js +0 -1
  77. package/dist/@types/redux-cli-logger.d.js +0 -1
  78. package/dist/@types/tiny-async-pool.d.js +0 -1
  79. package/dist/@types/window.d.js +0 -1
  80. package/dist/api/index.d.ts +0 -43
  81. package/dist/api/index.js +0 -1
  82. package/dist/common-types/AppThunk.d.ts +0 -13
  83. package/dist/common-types/AppThunk.js +0 -1
  84. package/dist/common-types/Either.d.ts +0 -8
  85. package/dist/common-types/Either.js +0 -1
  86. package/dist/common-types/IError.d.ts +0 -3
  87. package/dist/common-types/IError.js +0 -1
  88. package/dist/common-types/IOptInFlowName.d.ts +0 -1
  89. package/dist/common-types/IOptInFlowName.js +0 -1
  90. package/dist/common-types/ITracker.d.ts +0 -9
  91. package/dist/common-types/ITracker.js +0 -1
  92. package/dist/common-types/IVisitor.d.ts +0 -14
  93. package/dist/common-types/IVisitor.js +0 -1
  94. package/dist/common-types/RemoteDataState.d.ts +0 -38
  95. package/dist/common-types/RemoteDataState.js +0 -1
  96. package/dist/custom-hooks/useOneClickRedirectUrl.d.ts +0 -3
  97. package/dist/custom-hooks/useOneClickRedirectUrl.js +0 -1
  98. package/dist/custom-hooks/usePinEntryState.d.ts +0 -8
  99. package/dist/custom-hooks/usePinEntryState.js +0 -1
  100. package/dist/custom-hooks/useStrategyConfig.d.ts +0 -4
  101. package/dist/custom-hooks/useStrategyConfig.js +0 -1
  102. package/dist/flows/click2smsFlow.d.ts +0 -6
  103. package/dist/flows/click2smsFlow.js +0 -1
  104. package/dist/flows/creditCardFlow.d.ts +0 -6
  105. package/dist/flows/creditCardFlow.js +0 -1
  106. package/dist/flows/moFlow.d.ts +0 -6
  107. package/dist/flows/moFlow.js +0 -1
  108. package/dist/flows/moRedirFlow.d.ts +0 -6
  109. package/dist/flows/moRedirFlow.js +0 -1
  110. package/dist/flows/oneClickFlow.d.ts +0 -7
  111. package/dist/flows/oneClickFlow.js +0 -1
  112. package/dist/flows/pinFlow.d.ts +0 -7
  113. package/dist/flows/pinFlow.js +0 -1
  114. package/dist/flows/strategy.d.ts +0 -14
  115. package/dist/flows/strategy.js +0 -1
  116. package/dist/flows/ussdFlow.d.ts +0 -6
  117. package/dist/flows/ussdFlow.js +0 -1
  118. package/dist/index.d.ts +0 -0
  119. package/dist/index.js +0 -1
  120. package/dist/ips/tryGetIPRangeName.d.ts +0 -2
  121. package/dist/ips/tryGetIPRangeName.js +0 -1
  122. package/dist/jest.config.js +0 -194
  123. package/dist/pacman/index.d.ts +0 -6
  124. package/dist/pacman/index.js +0 -1
  125. package/dist/pacman/queryString.d.ts +0 -3
  126. package/dist/pacman/queryString.js +0 -1
  127. package/dist/reducers/click2smsFlow/Click2smsTypes.d.ts +0 -76
  128. package/dist/reducers/click2smsFlow/Click2smsTypes.js +0 -1
  129. package/dist/reducers/click2smsFlow/IClick2smsConstants.d.ts +0 -2
  130. package/dist/reducers/click2smsFlow/IClick2smsConstants.js +0 -1
  131. package/dist/reducers/click2smsFlow/index.d.ts +0 -5
  132. package/dist/reducers/click2smsFlow/index.js +0 -1
  133. package/dist/reducers/click2smsFlow/utils.d.ts +0 -4
  134. package/dist/reducers/click2smsFlow/utils.js +0 -1
  135. package/dist/reducers/creditCardFlow/CreditCardTypes.d.ts +0 -79
  136. package/dist/reducers/creditCardFlow/CreditCardTypes.js +0 -1
  137. package/dist/reducers/creditCardFlow/ICreditCardConstants.d.ts +0 -2
  138. package/dist/reducers/creditCardFlow/ICreditCardConstants.js +0 -1
  139. package/dist/reducers/creditCardFlow/index.d.ts +0 -5
  140. package/dist/reducers/creditCardFlow/index.js +0 -1
  141. package/dist/reducers/creditCardFlow/utils.d.ts +0 -8
  142. package/dist/reducers/creditCardFlow/utils.js +0 -1
  143. package/dist/reducers/moFlow/IMoConstants.d.ts +0 -2
  144. package/dist/reducers/moFlow/IMoConstants.js +0 -1
  145. package/dist/reducers/moFlow/MoTypes.d.ts +0 -88
  146. package/dist/reducers/moFlow/MoTypes.js +0 -1
  147. package/dist/reducers/moFlow/index.d.ts +0 -16
  148. package/dist/reducers/moFlow/index.js +0 -1
  149. package/dist/reducers/moFlow/utils.d.ts +0 -12
  150. package/dist/reducers/moFlow/utils.js +0 -1
  151. package/dist/reducers/moRedirFlow/IMoRedirConstants.d.ts +0 -2
  152. package/dist/reducers/moRedirFlow/IMoRedirConstants.js +0 -1
  153. package/dist/reducers/moRedirFlow/MoRedirTypes.d.ts +0 -64
  154. package/dist/reducers/moRedirFlow/MoRedirTypes.js +0 -1
  155. package/dist/reducers/moRedirFlow/index.d.ts +0 -14
  156. package/dist/reducers/moRedirFlow/index.js +0 -1
  157. package/dist/reducers/moRedirFlow/utils.d.ts +0 -10
  158. package/dist/reducers/moRedirFlow/utils.js +0 -1
  159. package/dist/reducers/oneClickFlow/IOneClickConstants.d.ts +0 -2
  160. package/dist/reducers/oneClickFlow/IOneClickConstants.js +0 -1
  161. package/dist/reducers/oneClickFlow/OneClickTypes.d.ts +0 -85
  162. package/dist/reducers/oneClickFlow/OneClickTypes.js +0 -1
  163. package/dist/reducers/oneClickFlow/index.d.ts +0 -13
  164. package/dist/reducers/oneClickFlow/index.js +0 -1
  165. package/dist/reducers/oneClickFlow/utils.d.ts +0 -16
  166. package/dist/reducers/oneClickFlow/utils.js +0 -1
  167. package/dist/reducers/pinFlow/IPinConstants.d.ts +0 -2
  168. package/dist/reducers/pinFlow/IPinConstants.js +0 -1
  169. package/dist/reducers/pinFlow/PinTypes.d.ts +0 -156
  170. package/dist/reducers/pinFlow/PinTypes.js +0 -1
  171. package/dist/reducers/pinFlow/index.d.ts +0 -19
  172. package/dist/reducers/pinFlow/index.js +0 -1
  173. package/dist/reducers/pinFlow/utils.d.ts +0 -11
  174. package/dist/reducers/pinFlow/utils.js +0 -1
  175. package/dist/reducers/strategy/IStategyActionContants.d.ts +0 -2
  176. package/dist/reducers/strategy/IStategyActionContants.js +0 -1
  177. package/dist/reducers/strategy/StrategyTypes.d.ts +0 -248
  178. package/dist/reducers/strategy/StrategyTypes.js +0 -1
  179. package/dist/reducers/strategy/index.d.ts +0 -13
  180. package/dist/reducers/strategy/index.js +0 -1
  181. package/dist/reducers/strategy/strategies/ask_mobile_number.d.ts +0 -15
  182. package/dist/reducers/strategy/strategies/ask_mobile_number.js +0 -1
  183. package/dist/reducers/strategy/strategies/ask_operator.d.ts +0 -5
  184. package/dist/reducers/strategy/strategies/ask_operator.js +0 -1
  185. package/dist/reducers/strategy/strategies/detect_operator_by_ip.d.ts +0 -10
  186. package/dist/reducers/strategy/strategies/detect_operator_by_ip.js +0 -1
  187. package/dist/reducers/strategy/strategies/header_enrichment.d.ts +0 -7
  188. package/dist/reducers/strategy/strategies/header_enrichment.js +0 -1
  189. package/dist/reducers/strategy/strategies/injectHeaderEnrichmentScript.d.ts +0 -7
  190. package/dist/reducers/strategy/strategies/injectHeaderEnrichmentScript.js +0 -1
  191. package/dist/reducers/strategy/utils.d.ts +0 -30
  192. package/dist/reducers/strategy/utils.js +0 -1
  193. package/dist/reducers/ussdFlow/IUssdConstants.d.ts +0 -2
  194. package/dist/reducers/ussdFlow/IUssdConstants.js +0 -1
  195. package/dist/reducers/ussdFlow/UssdTypes.d.ts +0 -77
  196. package/dist/reducers/ussdFlow/UssdTypes.js +0 -1
  197. package/dist/reducers/ussdFlow/index.d.ts +0 -14
  198. package/dist/reducers/ussdFlow/index.js +0 -1
  199. package/dist/reducers/ussdFlow/utils.d.ts +0 -11
  200. package/dist/reducers/ussdFlow/utils.js +0 -1
  201. package/dist/store/index.d.ts +0 -14
  202. package/dist/store/index.js +0 -1
  203. package/dist/store/reducers.d.ts +0 -20
  204. package/dist/store/reducers.js +0 -1
  205. package/dist/utilities/addEmpelloToken.d.ts +0 -4
  206. package/dist/utilities/addEmpelloToken.js +0 -1
  207. package/dist/utilities/handleSubmitNumber.d.ts +0 -21
  208. package/dist/utilities/handleSubmitNumber.js +0 -1
  209. package/dist/utilities/index.d.ts +0 -17
  210. package/dist/utilities/index.js +0 -1
  211. package/dist/utilities/loadScriptInnerHtml.d.ts +0 -2
  212. package/dist/utilities/loadScriptInnerHtml.js +0 -1
  213. package/dist/utilities/loadScriptSrc.d.ts +0 -8
  214. package/dist/utilities/loadScriptSrc.js +0 -1
  215. package/dist/utilities/replaceUrlParam.d.ts +0 -1
  216. package/dist/utilities/replaceUrlParam.js +0 -1
  217. package/dist/utilities/storeMsisdn.d.ts +0 -3
  218. package/dist/utilities/storeMsisdn.js +0 -1
  219. package/index.html +0 -49
  220. package/mockData/config.json +0 -28
  221. package/setupJest.js +0 -6
  222. 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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"}