@smartico/public-api 0.0.434 → 0.0.435
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/index.js +38 -48
- package/dist/index.js.map +1 -1
- package/dist/index.modern.mjs +29 -43
- package/dist/index.modern.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Missions/MissionsUtils.ts +37 -47
- package/src/Missions/UserAchievement.ts +3 -3
package/package.json
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import { IntUtils } from "../IntUtils";
|
|
2
1
|
import { AchievementAvailabilityStatus } from "./AchievementAvailabilityStatus";
|
|
3
2
|
import { AchievementStatus } from "./AchievementStatus";
|
|
4
3
|
import { UserAchievement } from "./UserAchievement";
|
|
5
4
|
import { UserAchievementTask } from "./UserAchievementTask";
|
|
6
5
|
import { BadgesTimeLimitStates } from "./BadgesTimeLimitStates";
|
|
7
6
|
|
|
8
|
-
type UserStateParamsKeys =
|
|
9
|
-
|
|
7
|
+
type UserStateParamsKeys =
|
|
8
|
+
| 'core_fav_game_top3' | 'core_fav_game_type_top3' | 'core_fav_game_provider_top3'
|
|
9
|
+
| 'core_fav_sport_type_top3' | 'core_fav_sport_league_top3'
|
|
10
|
+
| 'core_recommended_deposit_amount' | 'core_recommended_casino_bet_amount' | 'core_recommended_sport_bet_amount';
|
|
11
|
+
|
|
12
|
+
// tag -> favorites (top 3 arrays) that fill it; a task has at most one condition per tag (enforced in the BO)
|
|
13
|
+
const FAV_TAGS: [string, UserStateParamsKeys[]][] = [
|
|
14
|
+
['{{suggested_games}}', ['core_fav_game_top3', 'core_fav_game_type_top3', 'core_fav_game_provider_top3']],
|
|
15
|
+
['{{suggested_sport}}', ['core_fav_sport_type_top3', 'core_fav_sport_league_top3']],
|
|
16
|
+
];
|
|
10
17
|
const USER_STATE_PARAMS_KEYS_BET_AMOUNT: UserStateParamsKeys[] = [
|
|
11
18
|
'core_recommended_deposit_amount',
|
|
12
19
|
'core_recommended_casino_bet_amount',
|
|
@@ -212,64 +219,47 @@ export class MissionUtils {
|
|
|
212
219
|
|
|
213
220
|
const userStateParams = (task.user_state_params || {});
|
|
214
221
|
const userStateOperator = task.task_public_meta?.user_state_operations;
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
if (userStateParamsKeys.length === 0 || !userStateOperator) {
|
|
222
|
+
if (Object.keys(userStateParams).length === 0 || !userStateOperator) {
|
|
218
223
|
return result;
|
|
219
224
|
}
|
|
220
225
|
|
|
221
|
-
const
|
|
222
|
-
const operatorsPos = ['pos1', 'pos2', 'pos3'];
|
|
223
|
-
|
|
224
|
-
let suggestedGames: string = '';
|
|
225
|
-
let suggestedValue: string = '';
|
|
226
|
-
|
|
227
|
-
userStateParamsKeys.forEach((k: UserStateParamsKeys) => {
|
|
228
|
-
const operator = userStateOperator[k]?.op;
|
|
229
|
-
|
|
230
|
-
if (USER_STATE_PARAMS_KEYS_GAMES.includes(k)) {
|
|
231
|
-
if (operatorsMulti.includes(operator)) {
|
|
232
|
-
const value = userStateParams[k]?.filter(v => Boolean(v));
|
|
233
|
-
if (value && value.length > 0) {
|
|
234
|
-
suggestedGames = value.map((v: string) => {
|
|
235
|
-
const cleaned = v.replace(/_/g, ' ');
|
|
236
|
-
return toGameTitleCase(cleaned);
|
|
237
|
-
}).join(', ');
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
if (operatorsPos.includes(operator)) {
|
|
242
|
-
const value = userStateParams[k];
|
|
243
|
-
const pos = Number(operator.replace('pos', '')) - 1;
|
|
226
|
+
const formatFav = (v: string): string => toGameTitleCase(v.replace(/_/g, ' '));
|
|
244
227
|
|
|
245
|
-
|
|
246
|
-
|
|
228
|
+
// 'has' / '!has' -> all favorites, 'posN' -> the N-th one
|
|
229
|
+
const favValue = (k: UserStateParamsKeys): string => {
|
|
230
|
+
const values = userStateParams[k];
|
|
231
|
+
const operator: string = userStateOperator[k]?.op;
|
|
247
232
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
233
|
+
if (!Array.isArray(values)) {
|
|
234
|
+
return '';
|
|
235
|
+
}
|
|
251
236
|
|
|
252
|
-
|
|
253
|
-
|
|
237
|
+
if (operator === 'has' || operator === '!has') {
|
|
238
|
+
return values.filter(Boolean).map(formatFav).join(', ');
|
|
254
239
|
}
|
|
255
240
|
|
|
256
|
-
|
|
257
|
-
suggestedValue = userStateParams[k];
|
|
241
|
+
const pos = /^pos[1-3]$/.test(operator) ? values[Number(operator.substring(3)) - 1] : null;
|
|
258
242
|
|
|
259
|
-
|
|
260
|
-
|
|
243
|
+
return pos ? formatFav(pos) : '';
|
|
244
|
+
};
|
|
261
245
|
|
|
262
|
-
|
|
263
|
-
|
|
246
|
+
// split/join replaces every occurrence of the tag, not only the first one
|
|
247
|
+
const replaceTag = (tag: string, value: string) => {
|
|
248
|
+
if (value && result) {
|
|
249
|
+
result = result.split(tag).join(value);
|
|
264
250
|
}
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
FAV_TAGS.forEach(([tag, keys]) => {
|
|
254
|
+
replaceTag(tag, keys.map(favValue).find(Boolean));
|
|
265
255
|
});
|
|
266
256
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
257
|
+
const amountKey = USER_STATE_PARAMS_KEYS_BET_AMOUNT.find((k) => userStateParams[k]);
|
|
258
|
+
|
|
259
|
+
if (amountKey) {
|
|
260
|
+
const currencyFromTheTask = userStateParams.core_wallet_currency;
|
|
270
261
|
|
|
271
|
-
|
|
272
|
-
result = result.replace('{{suggested_value}}', suggestedValue);
|
|
262
|
+
replaceTag('{{suggested_value}}', `${userStateParams[amountKey]} ${currencySymbol || currencyFromTheTask || ''}`);
|
|
273
263
|
}
|
|
274
264
|
|
|
275
265
|
return result;
|
|
@@ -76,13 +76,13 @@ export const UserAchievementTransform = (items: UserAchievement[]): TMissionOrBa
|
|
|
76
76
|
if (missionName?.includes('{{suggested_') || missionSubHeader?.includes('{{suggested_') || missionDescription?.includes('{{suggested_')) {
|
|
77
77
|
r.achievementTasks.forEach(t => {
|
|
78
78
|
if (r.ach_public_meta.name?.includes('{{suggested_')) {
|
|
79
|
-
missionName = MissionUtils.replaceTagsFavMissionTask({ task: t, valueToReplace:
|
|
79
|
+
missionName = MissionUtils.replaceTagsFavMissionTask({ task: t, valueToReplace: missionName });
|
|
80
80
|
}
|
|
81
81
|
if (r.ach_public_meta.sub_header?.includes('{{suggested_')) {
|
|
82
|
-
missionSubHeader = MissionUtils.replaceTagsFavMissionTask({ task: t, valueToReplace:
|
|
82
|
+
missionSubHeader = MissionUtils.replaceTagsFavMissionTask({ task: t, valueToReplace: missionSubHeader });
|
|
83
83
|
}
|
|
84
84
|
if (r.ach_public_meta.description?.includes('{{suggested_')) {
|
|
85
|
-
missionDescription = MissionUtils.replaceTagsFavMissionTask({ task: t, valueToReplace:
|
|
85
|
+
missionDescription = MissionUtils.replaceTagsFavMissionTask({ task: t, valueToReplace: missionDescription });
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
}
|