@@ -13,6 +13,7 @@ import { publishNewAchievementNotification } from "../notifications";
1313import { SubscriptionRequiredError } from "@shared" ;
1414import { achievementsLogger } from "../logger" ;
1515import { db , gameAchievementsSublevel , levelKeys } from "@main/level" ;
16+ import { getGameAchievementData } from "./get-game-achievement-data" ;
1617
1718const isRareAchievement = ( points : number ) => {
1819 const rawPercentage = ( 50 - Math . sqrt ( points ) ) * 2 ;
@@ -55,12 +56,22 @@ export const mergeAchievements = async (
5556 achievements : UnlockedAchievement [ ] ,
5657 publishNotification : boolean
5758) => {
58- const [ localGameAchievement , userPreferences ] = await Promise . all ( [
59- gameAchievementsSublevel . get ( levelKeys . game ( game . shop , game . objectId ) ) ,
60- db . get < string , UserPreferences > ( levelKeys . userPreferences , {
59+ let localGameAchievement = await gameAchievementsSublevel . get (
60+ levelKeys . game ( game . shop , game . objectId )
61+ ) ;
62+ const userPreferences = await db . get < string , UserPreferences > (
63+ levelKeys . userPreferences ,
64+ {
6165 valueEncoding : "json" ,
62- } ) ,
63- ] ) ;
66+ }
67+ ) ;
68+
69+ if ( ! localGameAchievement ) {
70+ await getGameAchievementData ( game . objectId , game . shop , true ) ;
71+ localGameAchievement = await gameAchievementsSublevel . get (
72+ levelKeys . game ( game . shop , game . objectId )
73+ ) ;
74+ }
6475
6576 const achievementsData = localGameAchievement ?. achievements ?? [ ] ;
6677 const unlockedAchievements = localGameAchievement ?. unlockedAchievements ?? [ ] ;
@@ -91,7 +102,7 @@ export const mergeAchievements = async (
91102 if (
92103 newAchievements . length &&
93104 publishNotification &&
94- userPreferences ? .achievementNotificationsEnabled
105+ userPreferences . achievementNotificationsEnabled !== false
95106 ) {
96107 const filteredAchievements = newAchievements
97108 . toSorted ( ( a , b ) => {
@@ -125,7 +136,7 @@ export const mergeAchievements = async (
125136 } ;
126137 } ) ;
127138
128- if ( userPreferences ? .achievementCustomNotificationsEnabled !== false ) {
139+ if ( userPreferences . achievementCustomNotificationsEnabled !== false ) {
129140 WindowManager . notificationWindow ?. webContents . send (
130141 "on-achievement-unlocked" ,
131142 userPreferences . achievementCustomNotificationPosition ?? "top-left" ,
0 commit comments