@smartico/public-api 0.0.434 → 0.0.436

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.
@@ -480,6 +480,22 @@ const MiniGamePrizeTypeNamed = type => {
480
480
  }[type] || MiniGamePrizeTypeName.UNKNOWN;
481
481
  };
482
482
 
483
+ /**
484
+ * The amount a prize gives. Gems/diamonds and raffle-ticket prizes carry it in
485
+ * `prize_details_json` (their `prize_value` is only a default), the same way the
486
+ * default Smartico UI reads it; every other type keeps `prize_value`.
487
+ */
488
+ const sawPrizeValue = p => {
489
+ const d = p.prize_details_json;
490
+ let n = 0;
491
+ if (p.prize_type_id === SAWPrizeType.GEMS_AND_DIAMONDS && d) {
492
+ // _gems_diamonds_type: 0 gems, 1 diamonds, 2 both
493
+ n = (d._gems_diamonds_type === 1 ? 0 : d.gems || 0) + (d._gems_diamonds_type === 0 ? 0 : d.diamonds || 0);
494
+ } else if (p.prize_type_id === SAWPrizeType.RAFFLE_TICKET && d) {
495
+ n = d.tickets_count || 0;
496
+ }
497
+ return n > 0 ? n : p.prize_value;
498
+ };
483
499
  const SAWTemplatesTransform = items => {
484
500
  return items.map(r => {
485
501
  var _r$saw_skin_ui_defini;
@@ -533,7 +549,7 @@ const SAWTemplatesTransform = items => {
533
549
  id: p.saw_prize_id,
534
550
  name: p.saw_prize_ui_definition.name,
535
551
  prize_type: MiniGamePrizeTypeNamed(p.prize_type_id),
536
- prize_value: p.prize_value,
552
+ prize_value: sawPrizeValue(p),
537
553
  font_size: p.saw_prize_ui_definition.font_size,
538
554
  font_size_mobile: p.saw_prize_ui_definition.font_size_mobile,
539
555
  icon: p.saw_prize_ui_definition.icon,
@@ -1302,7 +1318,8 @@ var BadgesTimeLimitStates;
1302
1318
  })(BadgesTimeLimitStates || (BadgesTimeLimitStates = {}));
1303
1319
 
1304
1320
  var _MissionUtils;
1305
- const USER_STATE_PARAMS_KEYS_GAMES = ['core_fav_game_top3', 'core_fav_game_type_top3', 'core_fav_game_provider_top3'];
1321
+ // tag -> favorites (top 3 arrays) that fill it; a task has at most one condition per tag (enforced in the BO)
1322
+ const FAV_TAGS = [['{{suggested_games}}', ['core_fav_game_top3', 'core_fav_game_type_top3', 'core_fav_game_provider_top3']], ['{{suggested_sport}}', ['core_fav_sport_type_top3', 'core_fav_sport_league_top3']]];
1306
1323
  const USER_STATE_PARAMS_KEYS_BET_AMOUNT = ['core_recommended_deposit_amount', 'core_recommended_casino_bet_amount', 'core_recommended_sport_bet_amount'];
1307
1324
  const MINOR_WORDS = new Set(['of', 'at', 'in', 'on', 'to', 'up', 'as', 'by', 'for', 'from', 'into', 'onto', 'with', 'upon', 'via', 'and', 'but', 'or', 'nor', 'so', 'yet', 'vs', 'v', 'a', 'an', 'the']);
1308
1325
  function toGameTitleCase(raw) {
@@ -1480,52 +1497,37 @@ MissionUtils.replaceTagsFavMissionTask = ({
1480
1497
  }
1481
1498
  const userStateParams = task.user_state_params || {};
1482
1499
  const userStateOperator = (_task$task_public_met = task.task_public_meta) == null ? void 0 : _task$task_public_met.user_state_operations;
1483
- const userStateParamsKeys = Object.keys(userStateParams);
1484
- if (userStateParamsKeys.length === 0 || !userStateOperator) {
1500
+ if (Object.keys(userStateParams).length === 0 || !userStateOperator) {
1485
1501
  return result;
1486
1502
  }
1487
- const operatorsMulti = ['has', '!has'];
1488
- const operatorsPos = ['pos1', 'pos2', 'pos3'];
1489
- let suggestedGames = '';
1490
- let suggestedValue = '';
1491
- userStateParamsKeys.forEach(k => {
1503
+ const formatFav = v => toGameTitleCase(v.replace(/_/g, ' '));
1504
+ // 'has' / '!has' -> all favorites, 'posN' -> the N-th one
1505
+ const favValue = k => {
1492
1506
  var _userStateOperator$k;
1507
+ const values = userStateParams[k];
1493
1508
  const operator = (_userStateOperator$k = userStateOperator[k]) == null ? void 0 : _userStateOperator$k.op;
1494
- if (USER_STATE_PARAMS_KEYS_GAMES.includes(k)) {
1495
- if (operatorsMulti.includes(operator)) {
1496
- var _userStateParams$k;
1497
- const value = (_userStateParams$k = userStateParams[k]) == null ? void 0 : _userStateParams$k.filter(v => Boolean(v));
1498
- if (value && value.length > 0) {
1499
- suggestedGames = value.map(v => {
1500
- const cleaned = v.replace(/_/g, ' ');
1501
- return toGameTitleCase(cleaned);
1502
- }).join(', ');
1503
- }
1504
- }
1505
- if (operatorsPos.includes(operator)) {
1506
- const value = userStateParams[k];
1507
- const pos = Number(operator.replace('pos', '')) - 1;
1508
- if (IntUtils.isNotNull(pos) && value && value[pos]) {
1509
- suggestedGames = value[pos];
1510
- if (suggestedGames) {
1511
- suggestedGames = toGameTitleCase(suggestedGames.replace(/_/g, ' '));
1512
- }
1513
- }
1514
- }
1509
+ if (!Array.isArray(values)) {
1510
+ return '';
1515
1511
  }
1516
- if (USER_STATE_PARAMS_KEYS_BET_AMOUNT.includes(k)) {
1517
- suggestedValue = userStateParams[k];
1518
- if (suggestedValue) {
1519
- const currencyFromTheTask = userStateParams == null ? void 0 : userStateParams.core_wallet_currency;
1520
- suggestedValue = `${suggestedValue} ${currencySymbol || currencyFromTheTask || ''}`;
1521
- }
1512
+ if (operator === 'has' || operator === '!has') {
1513
+ return values.filter(Boolean).map(formatFav).join(', ');
1514
+ }
1515
+ const pos = /^pos[1-3]$/.test(operator) ? values[Number(operator.substring(3)) - 1] : null;
1516
+ return pos ? formatFav(pos) : '';
1517
+ };
1518
+ // split/join replaces every occurrence of the tag, not only the first one
1519
+ const replaceTag = (tag, value) => {
1520
+ if (value && result) {
1521
+ result = result.split(tag).join(value);
1522
1522
  }
1523
+ };
1524
+ FAV_TAGS.forEach(([tag, keys]) => {
1525
+ replaceTag(tag, keys.map(favValue).find(Boolean));
1523
1526
  });
1524
- if (suggestedGames && result) {
1525
- result = result.replace('{{suggested_games}}', suggestedGames);
1526
- }
1527
- if (suggestedValue && result) {
1528
- result = result.replace('{{suggested_value}}', suggestedValue);
1527
+ const amountKey = USER_STATE_PARAMS_KEYS_BET_AMOUNT.find(k => userStateParams[k]);
1528
+ if (amountKey) {
1529
+ const currencyFromTheTask = userStateParams.core_wallet_currency;
1530
+ replaceTag('{{suggested_value}}', `${userStateParams[amountKey]} ${currencySymbol || currencyFromTheTask || ''}`);
1529
1531
  }
1530
1532
  return result;
1531
1533
  };
@@ -1605,19 +1607,19 @@ const UserAchievementTransform = items => {
1605
1607
  if ((_r$ach_public_meta$na = r.ach_public_meta.name) != null && _r$ach_public_meta$na.includes('{{suggested_')) {
1606
1608
  missionName = MissionUtils.replaceTagsFavMissionTask({
1607
1609
  task: t,
1608
- valueToReplace: r.ach_public_meta.name
1610
+ valueToReplace: missionName
1609
1611
  });
1610
1612
  }
1611
1613
  if ((_r$ach_public_meta$su = r.ach_public_meta.sub_header) != null && _r$ach_public_meta$su.includes('{{suggested_')) {
1612
1614
  missionSubHeader = MissionUtils.replaceTagsFavMissionTask({
1613
1615
  task: t,
1614
- valueToReplace: r.ach_public_meta.sub_header
1616
+ valueToReplace: missionSubHeader
1615
1617
  });
1616
1618
  }
1617
1619
  if ((_r$ach_public_meta$de = r.ach_public_meta.description) != null && _r$ach_public_meta$de.includes('{{suggested_')) {
1618
1620
  missionDescription = MissionUtils.replaceTagsFavMissionTask({
1619
1621
  task: t,
1620
- valueToReplace: r.ach_public_meta.description
1622
+ valueToReplace: missionDescription
1621
1623
  });
1622
1624
  }
1623
1625
  });