@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.
@@ -26,8 +26,8 @@ export interface TMiniGamePrize {
26
26
  name: string;
27
27
  /** The type of the prize — see {@link MiniGamePrizeTypeName} ('no-prize', 'points', 'gems-and-diamonds', 'spin', 'bonus', 'jackpot', 'raffle-ticket', 'mission', 'change-level', 'manual') */
28
28
  prize_type: MiniGamePrizeTypeName;
29
- /** Numeric value of the prize in case it's 'points' or 'spin' type. For other types of prizes this value is not relevant.
30
- * For example for prize '100 points' the prize_value will be 100. For '100 free spins' the prize_value will be 100.
29
+ /** Amount of the prize: points for 'points', attempts for 'spin', gems or diamonds for 'gems-and-diamonds' (their sum when the prize gives both), tickets for 'raffle-ticket'. Not relevant for other types.
30
+ * For example for prize '100 points' the prize_value will be 100, for '100 free spins' 100, for '50 Diamonds' 50.
31
31
  */
32
32
  prize_value?: number;
33
33
  /** Custom font size in px for rendering the prize name on the game surface (e.g. a wheel sector), desktop */
package/dist/index.js CHANGED
@@ -483,6 +483,22 @@ var MiniGamePrizeTypeNamed = function MiniGamePrizeTypeNamed(type) {
483
483
  return (_SAWPrizeType$NO_PRIZ = {}, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.NO_PRIZE] = exports.MiniGamePrizeTypeName.NO_PRIZE, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.POINTS] = exports.MiniGamePrizeTypeName.POINTS, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.BONUS] = exports.MiniGamePrizeTypeName.BONUS, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.MANUAL] = exports.MiniGamePrizeTypeName.MANUAL, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.SPIN] = exports.MiniGamePrizeTypeName.SPIN, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.JACKPOT] = exports.MiniGamePrizeTypeName.JACKPOT, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.CHANGE_LEVEL] = exports.MiniGamePrizeTypeName.CHANGE_LEVEL, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.MISSION] = exports.MiniGamePrizeTypeName.MISSION, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.RAFFLE_TICKET] = exports.MiniGamePrizeTypeName.RAFFLE_TICKET, _SAWPrizeType$NO_PRIZ[exports.SAWPrizeType.GEMS_AND_DIAMONDS] = exports.MiniGamePrizeTypeName.GEMS_AND_DIAMONDS, _SAWPrizeType$NO_PRIZ)[type] || exports.MiniGamePrizeTypeName.UNKNOWN;
484
484
  };
485
485
 
486
+ /**
487
+ * The amount a prize gives. Gems/diamonds and raffle-ticket prizes carry it in
488
+ * `prize_details_json` (their `prize_value` is only a default), the same way the
489
+ * default Smartico UI reads it; every other type keeps `prize_value`.
490
+ */
491
+ var sawPrizeValue = function sawPrizeValue(p) {
492
+ var d = p.prize_details_json;
493
+ var n = 0;
494
+ if (p.prize_type_id === exports.SAWPrizeType.GEMS_AND_DIAMONDS && d) {
495
+ // _gems_diamonds_type: 0 gems, 1 diamonds, 2 both
496
+ n = (d._gems_diamonds_type === 1 ? 0 : d.gems || 0) + (d._gems_diamonds_type === 0 ? 0 : d.diamonds || 0);
497
+ } else if (p.prize_type_id === exports.SAWPrizeType.RAFFLE_TICKET && d) {
498
+ n = d.tickets_count || 0;
499
+ }
500
+ return n > 0 ? n : p.prize_value;
501
+ };
486
502
  var SAWTemplatesTransform = function SAWTemplatesTransform(items) {
487
503
  return items.map(function (r) {
488
504
  var _r$saw_skin_ui_defini;
@@ -536,7 +552,7 @@ var SAWTemplatesTransform = function SAWTemplatesTransform(items) {
536
552
  id: p.saw_prize_id,
537
553
  name: p.saw_prize_ui_definition.name,
538
554
  prize_type: MiniGamePrizeTypeNamed(p.prize_type_id),
539
- prize_value: p.prize_value,
555
+ prize_value: sawPrizeValue(p),
540
556
  font_size: p.saw_prize_ui_definition.font_size,
541
557
  font_size_mobile: p.saw_prize_ui_definition.font_size_mobile,
542
558
  icon: p.saw_prize_ui_definition.icon,
@@ -1328,7 +1344,8 @@ exports.BadgesTimeLimitStates = void 0;
1328
1344
  })(exports.BadgesTimeLimitStates || (exports.BadgesTimeLimitStates = {}));
1329
1345
 
1330
1346
  var _MissionUtils;
1331
- var USER_STATE_PARAMS_KEYS_GAMES = ['core_fav_game_top3', 'core_fav_game_type_top3', 'core_fav_game_provider_top3'];
1347
+ // tag -> favorites (top 3 arrays) that fill it; a task has at most one condition per tag (enforced in the BO)
1348
+ var 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']]];
1332
1349
  var USER_STATE_PARAMS_KEYS_BET_AMOUNT = ['core_recommended_deposit_amount', 'core_recommended_casino_bet_amount', 'core_recommended_sport_bet_amount'];
1333
1350
  var 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']);
1334
1351
  function toGameTitleCase(raw) {
@@ -1507,60 +1524,49 @@ MissionUtils.replaceTagsFavMissionTask = function (_ref) {
1507
1524
  }
1508
1525
  var userStateParams = task.user_state_params || {};
1509
1526
  var userStateOperator = (_task$task_public_met = task.task_public_meta) == null ? void 0 : _task$task_public_met.user_state_operations;
1510
- var userStateParamsKeys = Object.keys(userStateParams);
1511
- if (userStateParamsKeys.length === 0 || !userStateOperator) {
1527
+ if (Object.keys(userStateParams).length === 0 || !userStateOperator) {
1512
1528
  return result;
1513
1529
  }
1514
- var operatorsMulti = ['has', '!has'];
1515
- var operatorsPos = ['pos1', 'pos2', 'pos3'];
1516
- var suggestedGames = '';
1517
- var suggestedValue = '';
1518
- userStateParamsKeys.forEach(function (k) {
1530
+ var formatFav = function formatFav(v) {
1531
+ return toGameTitleCase(v.replace(/_/g, ' '));
1532
+ };
1533
+ // 'has' / '!has' -> all favorites, 'posN' -> the N-th one
1534
+ var favValue = function favValue(k) {
1519
1535
  var _userStateOperator$k;
1536
+ var values = userStateParams[k];
1520
1537
  var operator = (_userStateOperator$k = userStateOperator[k]) == null ? void 0 : _userStateOperator$k.op;
1521
- if (USER_STATE_PARAMS_KEYS_GAMES.includes(k)) {
1522
- if (operatorsMulti.includes(operator)) {
1523
- var _userStateParams$k;
1524
- var value = (_userStateParams$k = userStateParams[k]) == null ? void 0 : _userStateParams$k.filter(function (v) {
1525
- return Boolean(v);
1526
- });
1527
- if (value && value.length > 0) {
1528
- suggestedGames = value.map(function (v) {
1529
- var cleaned = v.replace(/_/g, ' ');
1530
- return toGameTitleCase(cleaned);
1531
- }).join(', ');
1532
- }
1533
- }
1534
- if (operatorsPos.includes(operator)) {
1535
- var _value = userStateParams[k];
1536
- var pos = Number(operator.replace('pos', '')) - 1;
1537
- if (IntUtils.isNotNull(pos) && _value && _value[pos]) {
1538
- suggestedGames = _value[pos];
1539
- if (suggestedGames) {
1540
- suggestedGames = toGameTitleCase(suggestedGames.replace(/_/g, ' '));
1541
- }
1542
- }
1543
- }
1538
+ if (!Array.isArray(values)) {
1539
+ return '';
1544
1540
  }
1545
- if (USER_STATE_PARAMS_KEYS_BET_AMOUNT.includes(k)) {
1546
- suggestedValue = userStateParams[k];
1547
- if (suggestedValue) {
1548
- var currencyFromTheTask = userStateParams == null ? void 0 : userStateParams.core_wallet_currency;
1549
- suggestedValue = suggestedValue + " " + (currencySymbol || currencyFromTheTask || '');
1550
- }
1541
+ if (operator === 'has' || operator === '!has') {
1542
+ return values.filter(Boolean).map(formatFav).join(', ');
1543
+ }
1544
+ var pos = /^pos[1-3]$/.test(operator) ? values[Number(operator.substring(3)) - 1] : null;
1545
+ return pos ? formatFav(pos) : '';
1546
+ };
1547
+ // split/join replaces every occurrence of the tag, not only the first one
1548
+ var replaceTag = function replaceTag(tag, value) {
1549
+ if (value && result) {
1550
+ result = result.split(tag).join(value);
1551
1551
  }
1552
+ };
1553
+ FAV_TAGS.forEach(function (_ref2) {
1554
+ var tag = _ref2[0],
1555
+ keys = _ref2[1];
1556
+ replaceTag(tag, keys.map(favValue).find(Boolean));
1552
1557
  });
1553
- if (suggestedGames && result) {
1554
- result = result.replace('{{suggested_games}}', suggestedGames);
1555
- }
1556
- if (suggestedValue && result) {
1557
- result = result.replace('{{suggested_value}}', suggestedValue);
1558
+ var amountKey = USER_STATE_PARAMS_KEYS_BET_AMOUNT.find(function (k) {
1559
+ return userStateParams[k];
1560
+ });
1561
+ if (amountKey) {
1562
+ var currencyFromTheTask = userStateParams.core_wallet_currency;
1563
+ replaceTag('{{suggested_value}}', userStateParams[amountKey] + " " + (currencySymbol || currencyFromTheTask || ''));
1558
1564
  }
1559
1565
  return result;
1560
1566
  };
1561
- MissionUtils.replaceFavGameNameTag = function (_ref2) {
1562
- var task = _ref2.task,
1563
- currencySymbol = _ref2.currencySymbol;
1567
+ MissionUtils.replaceFavGameNameTag = function (_ref3) {
1568
+ var task = _ref3.task,
1569
+ currencySymbol = _ref3.currencySymbol;
1564
1570
  if (task && task.task_public_meta && task.task_public_meta.name) {
1565
1571
  task.task_public_meta.name = _MissionUtils.replaceTagsFavMissionTask({
1566
1572
  task: task,
@@ -1633,19 +1639,19 @@ var UserAchievementTransform = function UserAchievementTransform(items) {
1633
1639
  if ((_r$ach_public_meta$na = r.ach_public_meta.name) != null && _r$ach_public_meta$na.includes('{{suggested_')) {
1634
1640
  missionName = MissionUtils.replaceTagsFavMissionTask({
1635
1641
  task: t,
1636
- valueToReplace: r.ach_public_meta.name
1642
+ valueToReplace: missionName
1637
1643
  });
1638
1644
  }
1639
1645
  if ((_r$ach_public_meta$su = r.ach_public_meta.sub_header) != null && _r$ach_public_meta$su.includes('{{suggested_')) {
1640
1646
  missionSubHeader = MissionUtils.replaceTagsFavMissionTask({
1641
1647
  task: t,
1642
- valueToReplace: r.ach_public_meta.sub_header
1648
+ valueToReplace: missionSubHeader
1643
1649
  });
1644
1650
  }
1645
1651
  if ((_r$ach_public_meta$de = r.ach_public_meta.description) != null && _r$ach_public_meta$de.includes('{{suggested_')) {
1646
1652
  missionDescription = MissionUtils.replaceTagsFavMissionTask({
1647
1653
  task: t,
1648
- valueToReplace: r.ach_public_meta.description
1654
+ valueToReplace: missionDescription
1649
1655
  });
1650
1656
  }
1651
1657
  });