@smartico/public-api 0.0.321 → 0.0.323

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.
@@ -8,7 +8,7 @@ export interface SAWTemplateUI {
8
8
  name: string;
9
9
  description?: string;
10
10
  over_limit_message?: string;
11
- hide_prize_names?: string;
11
+ hide_prize_names?: boolean;
12
12
  no_attempts_message?: string;
13
13
  thumbnail?: string;
14
14
  sectors_count: number;
@@ -0,0 +1,14 @@
1
+ export declare enum BadgesTimeLimitStates {
2
+ /** Before Start Date */
3
+ BeforeStartDate = 0,
4
+ /** After Start Date but before earned */
5
+ AfterStartDateNoProgress = 1,
6
+ /** After Start Date but before started (no progress) + End date */
7
+ AfterStartDateNoProgressAndEndDate = 2,
8
+ /** After Start Date, but with some progress + End date */
9
+ AfterStartDateWithProgressAndEndDate = 3,
10
+ /** After End Date (not started) */
11
+ AfterEndDateNotStarted = 4,
12
+ /** After End Date (player has some progress, but not completed) */
13
+ AfterEndDateWithProgress = 5
14
+ }
@@ -1,6 +1,7 @@
1
1
  import { AchievementAvailabilityStatus } from "./AchievementAvailabilityStatus";
2
2
  import { UserAchievement } from "./UserAchievement";
3
3
  import { UserAchievementTask } from "./UserAchievementTask";
4
+ import { BadgesTimeLimitStates } from "./BadgesTimeLimitStates";
4
5
  export declare class MissionUtils {
5
6
  static getAvailabilityStatus: (mission: UserAchievement) => AchievementAvailabilityStatus;
6
7
  static getMs: (ts: number) => number;
@@ -13,4 +14,5 @@ export declare class MissionUtils {
13
14
  task: UserAchievementTask;
14
15
  currencySymbol?: string;
15
16
  }) => UserAchievementTask;
17
+ static determineBadgeState: (badge: UserAchievement) => BadgesTimeLimitStates;
16
18
  }
@@ -5,6 +5,7 @@ import { AchievementStatus } from './AchievementStatus';
5
5
  import { AchievementType } from './AchievementType';
6
6
  import { ScheduledMissionType } from './ScheduledMissionType';
7
7
  import { UserAchievementTask } from './UserAchievementTask';
8
+ import { BadgesTimeLimitStates } from './BadgesTimeLimitStates';
8
9
  export interface UserAchievement {
9
10
  ach_id?: number;
10
11
  ach_type_id?: AchievementType;
@@ -39,5 +40,7 @@ export interface UserAchievement {
39
40
  completed_this_week?: boolean;
40
41
  completed_this_month?: boolean;
41
42
  custom_section_type_id?: number;
43
+ badgeTimeLimitState?: BadgesTimeLimitStates;
42
44
  }
45
+ export declare const enrichUserAchievementsWithBadgeState: (items: UserAchievement[]) => UserAchievement[];
43
46
  export declare const UserAchievementTransform: (items: UserAchievement[]) => TMissionOrBadge[];
@@ -9,6 +9,7 @@ export * from './GetAchievementMapRequest';
9
9
  export * from './GetAchievementMapResponse';
10
10
  export * from './ReloadAchievementsEvent';
11
11
  export * from './UserAchievement';
12
+ export { enrichUserAchievementsWithBadgeState } from './UserAchievement';
12
13
  export * from './UserAchievementTask';
13
14
  export * from './ScheduledMissionType';
14
15
  export * from './AchCategoryPublicMeta';
@@ -22,3 +23,4 @@ export * from './GetRelatedAchTourResponse';
22
23
  export * from './MissionsUtils';
23
24
  export * from './MissionCategory';
24
25
  export * from './UserAchievementTaskAffectsProgress';
26
+ export * from './BadgesTimeLimitStates';
@@ -1,3 +1,4 @@
1
+ import { BadgesTimeLimitStates } from "src/Missions";
1
2
  declare enum CJMActivityType {
2
3
  Root = 0,
3
4
  Journey_Started = 1,
@@ -1539,6 +1540,7 @@ export interface UserAchievement {
1539
1540
  completed_this_week?: boolean;
1540
1541
  completed_this_month?: boolean;
1541
1542
  custom_section_type_id?: number;
1543
+ badgeTimeLimitState?: BadgesTimeLimitStates;
1542
1544
  }
1543
1545
  export interface GetAchievementMapResponse extends ProtocolResponse {
1544
1546
  achievements?: UserAchievement[];
@@ -1,7 +1,7 @@
1
1
  import { BuyStoreItemErrorCode } from '../Store';
2
2
  import { MiniGamePrizeTypeName, SAWAcknowledgeTypeName, SAWAskForUsername, SAWBuyInTypeName, SAWGameLayout, SAWGameTypeName, SAWSpinErrorCode, SAWTemplate, SAWTemplateUI } from '../MiniGames';
3
3
  import { TournamentRegistrationError, TournamentRegistrationStatusName, TournamentRegistrationTypeName } from '../Tournaments';
4
- import { AchievementAvailabilityStatus } from '../Missions';
4
+ import { AchievementAvailabilityStatus, BadgesTimeLimitStates } from '../Missions';
5
5
  import { LeaderBoardPeriodType } from '../Leaderboard';
6
6
  import { AchCustomLayoutTheme, AchCustomSectionType, AchMissionsTabsOptions, AchOverviewMissionsFilter, LiquidEntityData } from '../CustomSections';
7
7
  import { PrizeModifiers } from '../MiniGames/PrizeModifiers';
@@ -614,6 +614,8 @@ export interface TMissionOrBadge {
614
614
  claim_button_title?: string;
615
615
  /** Action for the claim reward button */
616
616
  claim_button_action?: string;
617
+ /** Badge time limit state for badges with time restrictions */
618
+ badgeTimeLimitState?: BadgesTimeLimitStates;
617
619
  }
618
620
  export interface AchRelatedGame {
619
621
  /** The ID of the related game */
package/dist/index.js CHANGED
@@ -1144,6 +1144,22 @@ exports.AchievementAvailabilityStatus = void 0;
1144
1144
  AchievementAvailabilityStatus[AchievementAvailabilityStatus["MissedByLimitInTime"] = 14] = "MissedByLimitInTime";
1145
1145
  })(exports.AchievementAvailabilityStatus || (exports.AchievementAvailabilityStatus = {}));
1146
1146
 
1147
+ exports.BadgesTimeLimitStates = void 0;
1148
+ (function (BadgesTimeLimitStates) {
1149
+ /** Before Start Date */
1150
+ BadgesTimeLimitStates[BadgesTimeLimitStates["BeforeStartDate"] = 0] = "BeforeStartDate";
1151
+ /** After Start Date but before earned */
1152
+ BadgesTimeLimitStates[BadgesTimeLimitStates["AfterStartDateNoProgress"] = 1] = "AfterStartDateNoProgress";
1153
+ /** After Start Date but before started (no progress) + End date */
1154
+ BadgesTimeLimitStates[BadgesTimeLimitStates["AfterStartDateNoProgressAndEndDate"] = 2] = "AfterStartDateNoProgressAndEndDate";
1155
+ /** After Start Date, but with some progress + End date */
1156
+ BadgesTimeLimitStates[BadgesTimeLimitStates["AfterStartDateWithProgressAndEndDate"] = 3] = "AfterStartDateWithProgressAndEndDate";
1157
+ /** After End Date (not started) */
1158
+ BadgesTimeLimitStates[BadgesTimeLimitStates["AfterEndDateNotStarted"] = 4] = "AfterEndDateNotStarted";
1159
+ /** After End Date (player has some progress, but not completed) */
1160
+ BadgesTimeLimitStates[BadgesTimeLimitStates["AfterEndDateWithProgress"] = 5] = "AfterEndDateWithProgress";
1161
+ })(exports.BadgesTimeLimitStates || (exports.BadgesTimeLimitStates = {}));
1162
+
1147
1163
  var _class;
1148
1164
  var MissionUtils = function MissionUtils() {};
1149
1165
  _class = MissionUtils;
@@ -1366,7 +1382,47 @@ MissionUtils.replaceFavGameNameTag = function (_ref2) {
1366
1382
  }
1367
1383
  return task;
1368
1384
  };
1385
+ MissionUtils.determineBadgeState = function (badge) {
1386
+ var now = Date.now();
1387
+ var active_from_ts = badge.active_from_ts,
1388
+ active_till_ts = badge.active_till_ts,
1389
+ progress = badge.progress;
1390
+ // 1. BEFORE START
1391
+ if (active_from_ts > now) {
1392
+ return exports.BadgesTimeLimitStates.BeforeStartDate;
1393
+ }
1394
+ // 2. AFTER START, NO END DATE (infinite badge)
1395
+ // → grey, no locked, no date chip
1396
+ if (!active_till_ts) {
1397
+ if (progress === 0) {
1398
+ return exports.BadgesTimeLimitStates.AfterStartDateNoProgress;
1399
+ }
1400
+ // If infinite and with progress → this state does not exist in enum
1401
+ // (but if needed we can add one)
1402
+ }
1403
+ // 3. AFTER START, BEFORE END DATE
1404
+ if (now < active_till_ts) {
1405
+ if (progress === 0) {
1406
+ // now < end + has end date → must show chip
1407
+ return exports.BadgesTimeLimitStates.AfterStartDateNoProgressAndEndDate;
1408
+ }
1409
+ return exports.BadgesTimeLimitStates.AfterStartDateWithProgressAndEndDate;
1410
+ }
1411
+ // 4. AFTER END DATE
1412
+ if (progress === 0) {
1413
+ return exports.BadgesTimeLimitStates.AfterEndDateNotStarted;
1414
+ }
1415
+ return exports.BadgesTimeLimitStates.AfterEndDateWithProgress;
1416
+ };
1369
1417
 
1418
+ var enrichUserAchievementsWithBadgeState = function enrichUserAchievementsWithBadgeState(items) {
1419
+ return items.map(function (item) {
1420
+ if (item.ach_type_id === exports.AchievementType.Badge && (item.active_from_ts || item.active_till_ts)) {
1421
+ item.badgeTimeLimitState = MissionUtils.determineBadgeState(item);
1422
+ }
1423
+ return item;
1424
+ });
1425
+ };
1370
1426
  var UserAchievementTransform = function UserAchievementTransform(items) {
1371
1427
  return items.filter(function (r) {
1372
1428
  return r.ach_id >= 1;
@@ -1472,7 +1528,8 @@ var UserAchievementTransform = function UserAchievementTransform(items) {
1472
1528
  custom_section_type_id: r.ach_public_meta.custom_section_type_id,
1473
1529
  availability_status: MissionUtils.getAvailabilityStatus(r),
1474
1530
  claim_button_title: r.ach_public_meta.claim_button_title,
1475
- claim_button_action: r.ach_public_meta.claim_button_action
1531
+ claim_button_action: r.ach_public_meta.claim_button_action,
1532
+ badgeTimeLimitState: r.badgeTimeLimitState
1476
1533
  };
1477
1534
  if (r.ach_status_id === exports.AchievementStatus.Recurring) {
1478
1535
  x.next_recurrence_date_ts = Date.now() + (r == null ? void 0 : r.milliseconds_till_available);
@@ -4484,6 +4541,7 @@ var SmarticoAPI = /*#__PURE__*/function () {
4484
4541
  responseClone.achievements = responseClone.achievements.filter(function (a) {
4485
4542
  return a.ach_type_id === exports.AchievementType.Badge;
4486
4543
  });
4544
+ responseClone.achievements = enrichUserAchievementsWithBadgeState(responseClone.achievements);
4487
4545
  }
4488
4546
  return responseClone;
4489
4547
  });
@@ -5415,6 +5473,7 @@ exports.TournamentRegistrationTypeGetName = TournamentRegistrationTypeGetName;
5415
5473
  exports.TournamentUtils = TournamentUtils;
5416
5474
  exports.UICustomSectionTransform = UICustomSectionTransform;
5417
5475
  exports.UserAchievementTransform = UserAchievementTransform;
5476
+ exports.enrichUserAchievementsWithBadgeState = enrichUserAchievementsWithBadgeState;
5418
5477
  exports.getLeaderBoardTransform = getLeaderBoardTransform;
5419
5478
  exports.marketsInfo = marketsInfo;
5420
5479
  exports.quizAnswerAwayTeamReplacementText = quizAnswerAwayTeamReplacementText;