From 1247a105a07f2446addd7d08cd6de6e5073551e4 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Sat, 17 May 2025 18:06:16 -0300 Subject: [PATCH] feat: info for rare and platinum achievements --- .../achievements/merge-achievements.ts | 33 +++++++++++++------ .../notification/achievement-notification.tsx | 2 +- .../aparence/modals/add-theme-modal.tsx | 10 ------ 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/main/services/achievements/merge-achievements.ts b/src/main/services/achievements/merge-achievements.ts index 6e070c7d..801b53c7 100644 --- a/src/main/services/achievements/merge-achievements.ts +++ b/src/main/services/achievements/merge-achievements.ts @@ -14,6 +14,12 @@ import { SubscriptionRequiredError } from "@shared"; import { achievementsLogger } from "../logger"; import { db, gameAchievementsSublevel, levelKeys } from "@main/level"; +const isRareAchievement = (points: number) => { + const rawPercentage = (50 - Math.sqrt(points)) * 2; + + return rawPercentage < 10; +}; + const saveAchievementsOnLocal = async ( objectId: string, shop: GameShop, @@ -87,7 +93,7 @@ export const mergeAchievements = async ( publishNotification && userPreferences?.achievementNotificationsEnabled ) { - const achievementsInfo: AchievementNotificationInfo[] = newAchievements + const filteredAchievements = newAchievements .toSorted((a, b) => { return a.unlockTime - b.unlockTime; }) @@ -99,16 +105,23 @@ export const mergeAchievements = async ( ); }); }) - .filter((achievement) => Boolean(achievement)) - .map((achievement) => { + .filter((achievement) => !!achievement); + + const achievementsInfo: AchievementNotificationInfo[] = + filteredAchievements.map((achievement, index) => { return { - title: achievement!.displayName, - description: achievement!.description, - points: achievement!.points, - isHidden: achievement!.hidden, - isRare: false, - isPlatinum: false, - iconUrl: achievement!.icon, + title: achievement.displayName, + description: achievement.description, + points: achievement.points, + isHidden: achievement.hidden, + isRare: achievement.points + ? isRareAchievement(achievement.points) + : false, + isPlatinum: + index === filteredAchievements.length - 1 && + newAchievements.length + unlockedAchievements.length === + achievementsData.length, + iconUrl: achievement.icon, }; }); diff --git a/src/renderer/src/pages/achievements/notification/achievement-notification.tsx b/src/renderer/src/pages/achievements/notification/achievement-notification.tsx index 8b431b32..fc71723e 100644 --- a/src/renderer/src/pages/achievements/notification/achievement-notification.tsx +++ b/src/renderer/src/pages/achievements/notification/achievement-notification.tsx @@ -8,7 +8,7 @@ import { import { injectCustomCss } from "@renderer/helpers"; import { AchievementNotificationItem } from "@renderer/components/achievements/notification/achievement-notification"; -const NOTIFICATION_TIMEOUT = 40000; +const NOTIFICATION_TIMEOUT = 4000; export function AchievementNotification() { const { t } = useTranslation("achievement"); diff --git a/src/renderer/src/pages/settings/aparence/modals/add-theme-modal.tsx b/src/renderer/src/pages/settings/aparence/modals/add-theme-modal.tsx index 4a5babc6..58bcf58d 100644 --- a/src/renderer/src/pages/settings/aparence/modals/add-theme-modal.tsx +++ b/src/renderer/src/pages/settings/aparence/modals/add-theme-modal.tsx @@ -50,16 +50,6 @@ const DEFAULT_THEME_CODE = `/* /* Button */ .button {} - -/* Custom Achievement Notification */ -.achievement-notification {} -.achievement-notification__container {} -.achievement-notification__content {} -.achievement-notification__icon {} -.achievement-notification__text-container {} -.achievement-notification__title {} -.achievement-notification__description {} - `; export function AddThemeModal({