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
package/dist/moFlow.js
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { __awaiter, __generator, __read, __assign } from 'tslib';
|
|
2
|
+
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
3
|
+
import { S as Success, N as NothingYet, L as Loading, F as Failure } from './RemoteDataState-CwHLI23e.js';
|
|
4
|
+
import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
|
|
5
|
+
import { t as tracker } from './tracker-B_zsMRN2.js';
|
|
6
|
+
import { c as checkSubscriptionByRockmanIdOnly } from './checkSubscriptionByRockmanIdOnly-C89Ph9cV.js';
|
|
7
|
+
import { a as loop } from './helpers-J_h-ZgxH.js';
|
|
8
|
+
import 'pacman-client';
|
|
9
|
+
import 'uuid';
|
|
10
|
+
|
|
11
|
+
var useMoFlowState = function (useSelector) {
|
|
12
|
+
var currentState = useSelector(function (state) { return state.moFlow.currentState; });
|
|
13
|
+
return currentState;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
function moFlowMatch(_a) {
|
|
17
|
+
var msisdnEntry = _a.msisdnEntry;
|
|
18
|
+
return function (state) {
|
|
19
|
+
switch (state.type) {
|
|
20
|
+
case 'MSISDNEntry':
|
|
21
|
+
return msisdnEntry(state.result);
|
|
22
|
+
default:
|
|
23
|
+
// TODO - this should be an error or something
|
|
24
|
+
return msisdnEntry(state.result);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var triggerMessage = function (_a) {
|
|
30
|
+
var window = _a.window, slug = _a.slug, country = _a.country, msisdn = _a.msisdn, device = _a.device, offer = _a.offer, rockmanId = _a.rockmanId, extraParamsQs = _a.extraParamsQs;
|
|
31
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
32
|
+
var partnerAjaxResopnse, _b, params, queryString, host, url;
|
|
33
|
+
var _c;
|
|
34
|
+
return __generator(this, function (_d) {
|
|
35
|
+
switch (_d.label) {
|
|
36
|
+
case 0:
|
|
37
|
+
if (!window.api_ajax_url) return [3 /*break*/, 2];
|
|
38
|
+
return [4 /*yield*/, fetch(window.api_ajax_url).then(function (x) { return x.json(); })];
|
|
39
|
+
case 1:
|
|
40
|
+
_b = _d.sent();
|
|
41
|
+
return [3 /*break*/, 3];
|
|
42
|
+
case 2:
|
|
43
|
+
_b = null;
|
|
44
|
+
_d.label = 3;
|
|
45
|
+
case 3:
|
|
46
|
+
partnerAjaxResopnse = _b;
|
|
47
|
+
params = {
|
|
48
|
+
action: 'trigger-message',
|
|
49
|
+
slug: slug,
|
|
50
|
+
country: country,
|
|
51
|
+
msisdn: msisdn,
|
|
52
|
+
device: device,
|
|
53
|
+
offerId: offer,
|
|
54
|
+
rockman_id: rockmanId,
|
|
55
|
+
page: encodeURIComponent((_c = window === null || window === void 0 ? void 0 : window.location) === null || _c === void 0 ? void 0 : _c.href),
|
|
56
|
+
sam_g_token: window.reCaptchaToken || '',
|
|
57
|
+
antifraud_id: window.antifraud_id || '',
|
|
58
|
+
language_code: window.languageCode || '',
|
|
59
|
+
partner_form_action: (partnerAjaxResopnse === null || partnerAjaxResopnse === void 0 ? void 0 : partnerAjaxResopnse.form_action) ? encodeURIComponent(partnerAjaxResopnse === null || partnerAjaxResopnse === void 0 ? void 0 : partnerAjaxResopnse.form_action) : ''
|
|
60
|
+
};
|
|
61
|
+
queryString = Object.entries(params)
|
|
62
|
+
.filter(function (_a) {
|
|
63
|
+
var _b = __read(_a, 2); _b[0]; var value = _b[1];
|
|
64
|
+
return value;
|
|
65
|
+
})
|
|
66
|
+
.map(function (_a) {
|
|
67
|
+
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
68
|
+
return "".concat(key, "=").concat(value);
|
|
69
|
+
})
|
|
70
|
+
.join('&');
|
|
71
|
+
host = window.DEV_BASE_URL || '';
|
|
72
|
+
url = "".concat(host, "/tallyman/v1/?").concat(queryString, "&").concat(extraParamsQs);
|
|
73
|
+
return [2 /*return*/, fetch(url).then(function (x) { return x.json(); })];
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
function submitMSISDN(window, maybeConfig, internationalMSISDN, extraParams) {
|
|
80
|
+
var _a, _b;
|
|
81
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
82
|
+
var config;
|
|
83
|
+
return __generator(this, function (_c) {
|
|
84
|
+
config = __assign(__assign({}, (maybeConfig || {})), { offer: (_b = (_a = window.pac_analytics) === null || _a === void 0 ? void 0 : _a.visitor) === null || _b === void 0 ? void 0 : _b.offer });
|
|
85
|
+
return [2 /*return*/, submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams)];
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams) {
|
|
90
|
+
var _a;
|
|
91
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
92
|
+
var slug, country, device, offer, search, extraParamsQs, msisdn, rockmanId, result, type, error;
|
|
93
|
+
return __generator(this, function (_b) {
|
|
94
|
+
switch (_b.label) {
|
|
95
|
+
case 0:
|
|
96
|
+
slug = config.slug, country = config.country, device = config.device, offer = config.offer;
|
|
97
|
+
search = window.location.search.substr(1) || '';
|
|
98
|
+
extraParamsQs = !extraParams
|
|
99
|
+
? ''
|
|
100
|
+
: "&".concat(Object.keys(extraParams)
|
|
101
|
+
.map(function (k) { return "".concat(k, "=").concat(extraParams[k]); })
|
|
102
|
+
.join('&'));
|
|
103
|
+
msisdn = ((_a = internationalMSISDN.match(/\d+/gi)) === null || _a === void 0 ? void 0 : _a.join('')) || '';
|
|
104
|
+
rockmanId = window.pac_analytics.visitor.rockmanId;
|
|
105
|
+
return [4 /*yield*/, triggerMessage({
|
|
106
|
+
window: window,
|
|
107
|
+
slug: slug,
|
|
108
|
+
country: country,
|
|
109
|
+
msisdn: msisdn,
|
|
110
|
+
device: device,
|
|
111
|
+
offer: offer,
|
|
112
|
+
rockmanId: rockmanId,
|
|
113
|
+
search: search,
|
|
114
|
+
extraParamsQs: extraParamsQs
|
|
115
|
+
})];
|
|
116
|
+
case 1:
|
|
117
|
+
result = _b.sent();
|
|
118
|
+
if (result.success === false) {
|
|
119
|
+
type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';
|
|
120
|
+
error = new Error("".concat(type, ":\n").concat(result.message));
|
|
121
|
+
error.type = type;
|
|
122
|
+
error.productUrl = result.product_url ? result.product_url : '';
|
|
123
|
+
console.error(error);
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
return [2 /*return*/, __assign(__assign({}, result), { keyword: result.displayKeyword })]; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
function moCheckSubscription(window) {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
135
|
+
var rockmanId, check, checkResult, error;
|
|
136
|
+
return __generator(this, function (_a) {
|
|
137
|
+
switch (_a.label) {
|
|
138
|
+
case 0:
|
|
139
|
+
rockmanId = window.pac_analytics.visitor.rockmanId;
|
|
140
|
+
check = function () { return checkSubscriptionByRockmanIdOnly({ window: window, rockmanId: rockmanId }); };
|
|
141
|
+
return [4 /*yield*/, loop(check, 60, function (r) { return r.success; }, 0)];
|
|
142
|
+
case 1:
|
|
143
|
+
checkResult = _a.sent();
|
|
144
|
+
if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {
|
|
145
|
+
window.location.href = checkResult.product_url;
|
|
146
|
+
return [2 /*return*/, checkResult.product_url];
|
|
147
|
+
}
|
|
148
|
+
error = new Error("".concat('SubscriptionFailed', ":\n").concat(checkResult.message));
|
|
149
|
+
error.type = 'SubscriptionFailed';
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var initialState = {
|
|
157
|
+
currentState: {
|
|
158
|
+
type: 'MSISDNEntry',
|
|
159
|
+
result: NothingYet()
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* submitMSISDNAction
|
|
164
|
+
* @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}
|
|
165
|
+
|
|
166
|
+
* Calls trigger-message api that returns a short code and key word
|
|
167
|
+
* Sets completed stated
|
|
168
|
+
*/
|
|
169
|
+
var submitMSISDNAction = createAsyncThunk('moFlow/submitMSISDNAction', function (_a, _b) {
|
|
170
|
+
var window = _a.window, msisdn = _a.msisdn, extraParams = _a.extraParams;
|
|
171
|
+
var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
|
|
172
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
173
|
+
var state, config, keywordAndShortcode, ex_1, errorType;
|
|
174
|
+
return __generator(this, function (_c) {
|
|
175
|
+
switch (_c.label) {
|
|
176
|
+
case 0:
|
|
177
|
+
state = getState();
|
|
178
|
+
config = state.strategy.currentState.data.config;
|
|
179
|
+
_c.label = 1;
|
|
180
|
+
case 1:
|
|
181
|
+
_c.trys.push([1, 5, , 6]);
|
|
182
|
+
// Start Trigger Message
|
|
183
|
+
tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn: msisdn });
|
|
184
|
+
return [4 /*yield*/, submitMSISDN(window, config, msisdn, extraParams)];
|
|
185
|
+
case 2:
|
|
186
|
+
keywordAndShortcode = _c.sent();
|
|
187
|
+
tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn: msisdn });
|
|
188
|
+
if (!(extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true')) return [3 /*break*/, 4];
|
|
189
|
+
return [4 /*yield*/, storeMsisdn(msisdn)
|
|
190
|
+
.then(function (data) {
|
|
191
|
+
if (data && data.data && data.data.success) {
|
|
192
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');
|
|
196
|
+
}
|
|
197
|
+
})
|
|
198
|
+
.catch(function (error) {
|
|
199
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);
|
|
200
|
+
})];
|
|
201
|
+
case 3:
|
|
202
|
+
_c.sent();
|
|
203
|
+
_c.label = 4;
|
|
204
|
+
case 4:
|
|
205
|
+
// End Store Msisdn
|
|
206
|
+
// Check For Subscription by rockman id and redirect to product url
|
|
207
|
+
moCheckSubscription(window).then(function (product_url) {
|
|
208
|
+
tracker.advancedInFlow('tallyman.v1-mo', 'sale', { msisdn: msisdn });
|
|
209
|
+
setTimeout(function () {
|
|
210
|
+
window.location.href = product_url;
|
|
211
|
+
}, 1000);
|
|
212
|
+
});
|
|
213
|
+
return [2 /*return*/, {
|
|
214
|
+
type: 'MSISDNEntry',
|
|
215
|
+
result: Success(__assign({}, keywordAndShortcode))
|
|
216
|
+
}];
|
|
217
|
+
case 5:
|
|
218
|
+
ex_1 = _c.sent();
|
|
219
|
+
console.warn(ex_1);
|
|
220
|
+
errorType = void 0;
|
|
221
|
+
switch (ex_1.type) {
|
|
222
|
+
case 'AlreadySubscribed':
|
|
223
|
+
errorType = 'AlreadySubscribed';
|
|
224
|
+
break;
|
|
225
|
+
case 'InvalidMSISDN':
|
|
226
|
+
errorType = 'InvalidMSISDN';
|
|
227
|
+
break;
|
|
228
|
+
default:
|
|
229
|
+
errorType = 'UnknownError';
|
|
230
|
+
}
|
|
231
|
+
tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {
|
|
232
|
+
msisdn: msisdn,
|
|
233
|
+
errorType: errorType || 'UnknownError'
|
|
234
|
+
});
|
|
235
|
+
return [2 /*return*/, rejectWithValue({
|
|
236
|
+
errorType: errorType,
|
|
237
|
+
productUrl: ex_1.productUrl
|
|
238
|
+
})];
|
|
239
|
+
case 6: return [2 /*return*/];
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
var moFlowSlice = createSlice({
|
|
245
|
+
name: 'moFlow',
|
|
246
|
+
initialState: initialState,
|
|
247
|
+
reducers: {
|
|
248
|
+
backToStartAction: function (state) {
|
|
249
|
+
tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');
|
|
250
|
+
// TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY
|
|
251
|
+
state.currentState = { type: 'MSISDNEntry', result: NothingYet() };
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
extraReducers: function (builder) {
|
|
255
|
+
builder
|
|
256
|
+
.addCase(submitMSISDNAction.pending, function (state) {
|
|
257
|
+
state.currentState = { type: 'MSISDNEntry', result: Loading() };
|
|
258
|
+
})
|
|
259
|
+
.addCase(submitMSISDNAction.fulfilled, function (state, action) {
|
|
260
|
+
state.currentState = action.payload;
|
|
261
|
+
})
|
|
262
|
+
.addCase(submitMSISDNAction.rejected, function (state, action) {
|
|
263
|
+
state.currentState = {
|
|
264
|
+
type: 'MSISDNEntry',
|
|
265
|
+
result: Failure(action.payload)
|
|
266
|
+
};
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
// Export reducers and actions
|
|
271
|
+
var moFlowReducer = moFlowSlice.reducer, moFlowActions = moFlowSlice.actions;
|
|
272
|
+
var backToStartAction = moFlowActions.backToStartAction;
|
|
273
|
+
|
|
274
|
+
export { backToStartAction, moFlowMatch, moFlowReducer, submitMSISDNAction, useMoFlowState };
|
|
275
|
+
//# sourceMappingURL=moFlow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n antifraud_id: window.antifraud_id || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}&${extraParamsQs}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport {\n IGoogleReCaptcha,\n IKeywordShortcode,\n IMSISDNSubmissionResult,\n MoFlowState,\n MSISDNEntryFailure,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string; productUrl: string };\n error.type = type;\n error.productUrl = result.product_url ? result.product_url : '';\n\n console.error(error);\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = checkResult.product_url;\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN, { moCheckSubscription } from './main';\n\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst initialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n // Check For Subscription by rockman id and redirect to product url\n moCheckSubscription(window).then((product_url) => {\n tracker.advancedInFlow('tallyman.v1-mo', 'sale', { msisdn });\n setTimeout(() => {\n window.location.href = product_url;\n }, 1000);\n });\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType: errorType || 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\nexport const { backToStartAction } = moFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["RDS.NothingYet","RDS.Success","RDS.Loading","RDS.Failure"],"mappings":"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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { __awaiter, __generator, __assign } from 'tslib';
|
|
2
|
+
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
3
|
+
import { S as Success, N as NothingYet, L as Loading, F as Failure } from './RemoteDataState-CwHLI23e.js';
|
|
4
|
+
import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
|
|
5
|
+
import { t as tracker } from './tracker-B_zsMRN2.js';
|
|
6
|
+
import { t as tryGetIPRangeName } from './tryGetIPRangeName-C69HEG5W.js';
|
|
7
|
+
import 'pacman-client';
|
|
8
|
+
import 'uuid';
|
|
9
|
+
|
|
10
|
+
var useMoRedirFlowState = function (useSelector) {
|
|
11
|
+
var currentState = useSelector(function (state) { return state.moRedirFlow.currentState; });
|
|
12
|
+
return currentState;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
function moRedirFlowMatch(_a) {
|
|
16
|
+
var msisdnEntry = _a.msisdnEntry;
|
|
17
|
+
return function (state) {
|
|
18
|
+
switch (state.type) {
|
|
19
|
+
case 'MSISDNEntry':
|
|
20
|
+
return msisdnEntry(state.result);
|
|
21
|
+
default:
|
|
22
|
+
// TODO - this should be an error or something
|
|
23
|
+
return msisdnEntry(state.result);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var redirect = function (_a) {
|
|
29
|
+
var window = _a.window, slug = _a.slug, country = _a.country, msisdn = _a.msisdn, device = _a.device, offer = _a.offer, rockmanId = _a.rockmanId, ip_range_name = _a.ip_range_name, search = _a.search, extraParamsQs = _a.extraParamsQs, email = _a.email, password = _a.password;
|
|
30
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
31
|
+
var params, host, url;
|
|
32
|
+
var _b, _c, _d;
|
|
33
|
+
return __generator(this, function (_e) {
|
|
34
|
+
params = new URLSearchParams(__assign(__assign(__assign(__assign(__assign(__assign({ action: 'redirect', slug: slug, country: country, device: device, offerId: offer.toString(), rockman_id: rockmanId, page: encodeURIComponent(window.location.href), network_type: ip_range_name ? '' : 'wifi' }, (search && { search: search })), (((_d = (_c = (_b = window.pac_analytics) === null || _b === void 0 ? void 0 : _b.visitor) === null || _c === void 0 ? void 0 : _c.page) === null || _d === void 0 ? void 0 : _d.includes('agency')) && { evinaTi: rockmanId })), (window.securityProcessId && { securityProcessId: window.securityProcessId })), (window.languageCode && { language_code: window.languageCode })), (email && password ? { email: email, password: password } : { msisdn: msisdn })), (extraParamsQs && { extraParams: extraParamsQs }))).toString();
|
|
35
|
+
host = window.DEV_BASE_URL || '';
|
|
36
|
+
url = "".concat(host, "/tallyman/v1/?").concat(params);
|
|
37
|
+
if (slug.includes('za-mtn-beyondvr-r7')) {
|
|
38
|
+
return [2 /*return*/, {
|
|
39
|
+
success: true,
|
|
40
|
+
rockman_id: rockmanId,
|
|
41
|
+
redirect_url: url
|
|
42
|
+
}];
|
|
43
|
+
}
|
|
44
|
+
return [2 /*return*/, fetch(url).then(function (x) { return x.json(); })];
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
function submitMSISDN(window, maybeConfig, internationalMSISDN, extraParams) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
51
|
+
var config;
|
|
52
|
+
return __generator(this, function (_a) {
|
|
53
|
+
config = __assign({ offer: window.pac_analytics.visitor.offer }, (maybeConfig || {}));
|
|
54
|
+
return [2 /*return*/, submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams)];
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
60
|
+
var slug, country, device, offer, search, extraParamsQs, msisdn, visitor, rockmanId, ip_range_name, _a, result, type, error;
|
|
61
|
+
return __generator(this, function (_b) {
|
|
62
|
+
switch (_b.label) {
|
|
63
|
+
case 0:
|
|
64
|
+
slug = config.slug, country = config.country, device = config.device, offer = config.offer;
|
|
65
|
+
search = window.location.search.substr(1) || '';
|
|
66
|
+
extraParamsQs = !extraParams
|
|
67
|
+
? ''
|
|
68
|
+
: "&".concat(Object.keys(extraParams)
|
|
69
|
+
.map(function (k) { return "".concat(k, "=").concat(extraParams[k]); })
|
|
70
|
+
.join('&'));
|
|
71
|
+
msisdn = internationalMSISDN.match(/\d+/gi).join('');
|
|
72
|
+
visitor = window.pac_analytics.visitor;
|
|
73
|
+
rockmanId = visitor.rockmanId;
|
|
74
|
+
if (!(country === 'ci')) return [3 /*break*/, 2];
|
|
75
|
+
return [4 /*yield*/, tryGetIPRangeName(visitor)];
|
|
76
|
+
case 1:
|
|
77
|
+
_a = _b.sent();
|
|
78
|
+
return [3 /*break*/, 3];
|
|
79
|
+
case 2:
|
|
80
|
+
_a = null;
|
|
81
|
+
_b.label = 3;
|
|
82
|
+
case 3:
|
|
83
|
+
ip_range_name = _a;
|
|
84
|
+
return [4 /*yield*/, redirect({
|
|
85
|
+
window: window,
|
|
86
|
+
slug: slug,
|
|
87
|
+
country: country,
|
|
88
|
+
msisdn: msisdn,
|
|
89
|
+
device: device,
|
|
90
|
+
offer: offer,
|
|
91
|
+
rockmanId: rockmanId,
|
|
92
|
+
ip_range_name: ip_range_name,
|
|
93
|
+
search: search,
|
|
94
|
+
extraParamsQs: extraParamsQs
|
|
95
|
+
})];
|
|
96
|
+
case 4:
|
|
97
|
+
result = _b.sent();
|
|
98
|
+
if (result.success === false) {
|
|
99
|
+
type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';
|
|
100
|
+
error = new Error("".concat(type, ":\n").concat(result.message));
|
|
101
|
+
error.type = type;
|
|
102
|
+
console.error(error);
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
return [2 /*return*/, result.redirect_url];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
var initialState = {
|
|
114
|
+
currentState: {
|
|
115
|
+
type: 'MSISDNEntry',
|
|
116
|
+
result: NothingYet()
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* submitMSISDNAction
|
|
121
|
+
* @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}
|
|
122
|
+
|
|
123
|
+
* Calls redirec api that returns a redirect url
|
|
124
|
+
* Sets completed stated
|
|
125
|
+
*/
|
|
126
|
+
var submitMSISDNAction = createAsyncThunk('moRedirFlow/submitMSISDNAction', function (_a, _b) {
|
|
127
|
+
var window = _a.window, msisdn = _a.msisdn, extraParams = _a.extraParams;
|
|
128
|
+
var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
|
|
129
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
130
|
+
var state, config, href, ex_1, errorType;
|
|
131
|
+
return __generator(this, function (_c) {
|
|
132
|
+
switch (_c.label) {
|
|
133
|
+
case 0:
|
|
134
|
+
state = getState();
|
|
135
|
+
config = state.strategy.currentState.data.config;
|
|
136
|
+
_c.label = 1;
|
|
137
|
+
case 1:
|
|
138
|
+
_c.trys.push([1, 5, , 6]);
|
|
139
|
+
// Start Redirect Api Call
|
|
140
|
+
tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn: msisdn });
|
|
141
|
+
return [4 /*yield*/, submitMSISDN(window, config, msisdn, extraParams)];
|
|
142
|
+
case 2:
|
|
143
|
+
href = _c.sent();
|
|
144
|
+
tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn: msisdn });
|
|
145
|
+
if (!(extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true')) return [3 /*break*/, 4];
|
|
146
|
+
return [4 /*yield*/, storeMsisdn(msisdn)
|
|
147
|
+
.then(function (data) {
|
|
148
|
+
if (data && data.data && data.data.success) {
|
|
149
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');
|
|
153
|
+
}
|
|
154
|
+
})
|
|
155
|
+
.catch(function (error) {
|
|
156
|
+
tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);
|
|
157
|
+
})];
|
|
158
|
+
case 3:
|
|
159
|
+
_c.sent();
|
|
160
|
+
_c.label = 4;
|
|
161
|
+
case 4:
|
|
162
|
+
// End Store Msisdn
|
|
163
|
+
return [2 /*return*/, {
|
|
164
|
+
type: 'MSISDNEntry',
|
|
165
|
+
result: Success({ href: href })
|
|
166
|
+
}];
|
|
167
|
+
case 5:
|
|
168
|
+
ex_1 = _c.sent();
|
|
169
|
+
console.warn(ex_1);
|
|
170
|
+
errorType = void 0;
|
|
171
|
+
switch (ex_1.type) {
|
|
172
|
+
case 'AlreadySubscribed':
|
|
173
|
+
errorType = 'AlreadySubscribed';
|
|
174
|
+
break;
|
|
175
|
+
case 'InvalidMSISDN':
|
|
176
|
+
errorType = 'InvalidMSISDN';
|
|
177
|
+
break;
|
|
178
|
+
default:
|
|
179
|
+
errorType = 'UnknownError';
|
|
180
|
+
}
|
|
181
|
+
tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {
|
|
182
|
+
msisdn: msisdn,
|
|
183
|
+
errorType: 'UnknownError'
|
|
184
|
+
});
|
|
185
|
+
return [2 /*return*/, rejectWithValue({
|
|
186
|
+
errorType: errorType,
|
|
187
|
+
productUrl: ex_1.productUrl
|
|
188
|
+
})];
|
|
189
|
+
case 6: return [2 /*return*/];
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
var moRedirFlowSlice = createSlice({
|
|
195
|
+
name: 'moRedirFlow',
|
|
196
|
+
initialState: initialState,
|
|
197
|
+
reducers: {
|
|
198
|
+
backToStartAction: function (state) {
|
|
199
|
+
tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');
|
|
200
|
+
// TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY
|
|
201
|
+
state.currentState = { type: 'MSISDNEntry', result: NothingYet() };
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
extraReducers: function (builder) {
|
|
205
|
+
builder
|
|
206
|
+
.addCase(submitMSISDNAction.pending, function (state) {
|
|
207
|
+
state.currentState = { type: 'MSISDNEntry', result: Loading() };
|
|
208
|
+
})
|
|
209
|
+
.addCase(submitMSISDNAction.fulfilled, function (state, action) {
|
|
210
|
+
state.currentState = action.payload;
|
|
211
|
+
})
|
|
212
|
+
.addCase(submitMSISDNAction.rejected, function (state, action) {
|
|
213
|
+
state.currentState = {
|
|
214
|
+
type: 'MSISDNEntry',
|
|
215
|
+
result: Failure(action.payload)
|
|
216
|
+
};
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
// Export reducers and actions
|
|
221
|
+
var moRedirFlowReducer = moRedirFlowSlice.reducer, moRedirFlowActions = moRedirFlowSlice.actions;
|
|
222
|
+
var backToStartAction = moRedirFlowActions.backToStartAction;
|
|
223
|
+
|
|
224
|
+
export { backToStartAction, moRedirFlowMatch, moRedirFlowReducer, submitMSISDNAction, useMoRedirFlowState };
|
|
225
|
+
//# sourceMappingURL=moRedirFlow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moRedirFlow.js","sources":["../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../src/flows/moRedirFlow/match.ts","../src/flows/moRedirFlow/api.ts","../src/flows/moRedirFlow/main.ts","../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport {\n IMSISDNSubmissionResult,\n MoRedirFlowState,\n MSISDNEntryFailure,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi).join('');\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n\nexport const mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport submitMSISDN from './main';\n\nconst initialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {\n backToStartAction(state) {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n\n // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY\n state.currentState = { type: 'MSISDNEntry', result: RDS.NothingYet() };\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\nexport const { backToStartAction } = moRedirFlowActions;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["RDS.NothingYet","RDS.Success","RDS.Loading","RDS.Failure"],"mappings":"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"}
|