feat: refactor

This commit is contained in:
Zamitto
2024-10-31 16:57:46 -03:00
parent 9189541c3a
commit 4f4dd29e5f
5 changed files with 44 additions and 31 deletions

View File

@@ -113,20 +113,13 @@ export const mergeAchievements = async (
};
});
if (achievementsInfo.length > 1) {
publishCombinedNewAchievementNotification(
newAchievements.length,
1,
achievementsInfo[0].iconUrl
);
} else {
publishNewAchievementNotification({
displayName: achievementsInfo[0].displayName,
achievementIcon: achievementsInfo[0].iconUrl,
unlockedAchievementCount: mergedLocalAchievements.length,
totalAchievementCount: achievementsData.length,
});
}
publishNewAchievementNotification({
achievements: achievementsInfo,
unlockedAchievementCount: mergedLocalAchievements.length,
totalAchievementCount: achievementsData.length,
gameTitle: game.title,
gameIcon: game.iconUrl,
});
}
if (game.remoteId) {

View File

@@ -120,27 +120,39 @@ export const publishCombinedNewAchievementNotification = async (
sound.play(achievementSoundPath);
};
export const publishNewAchievementNotification = async (achievement: {
displayName: string;
achievementIcon: string;
export const publishNewAchievementNotification = async (info: {
achievements: { displayName: string; iconUrl: string }[];
unlockedAchievementCount: number;
totalAchievementCount: number;
gameTitle: string;
gameIcon: string | null;
}) => {
const iconPath = await downloadImage(achievement.achievementIcon);
const partialOptions =
info.achievements.length > 1
? {
title: t("achievements_unlocked_for_game", {
ns: "achievement",
gameTitle: info.gameTitle,
achievementCount: info.achievements.length,
}),
body: info.achievements.map((a) => a.displayName).join(", "),
icon: info.gameIcon ? await downloadImage(info.gameIcon) : icon,
}
: {
title: t("achievement_unlocked", { ns: "achievement" }),
body: info.achievements[0].displayName,
icon: await downloadImage(info.achievements[0].iconUrl),
};
const options: NotificationOptions = {
title: t("achievement_unlocked", { ns: "achievement" }),
body: achievement.displayName,
icon: iconPath,
...partialOptions,
silent: true,
progress: {
value:
achievement.unlockedAchievementCount /
achievement.totalAchievementCount,
value: info.unlockedAchievementCount / info.totalAchievementCount,
valueOverride: t("achievement_progress", {
ns: "achievement",
unlockedCount: achievement.unlockedAchievementCount,
totalCount: achievement.totalAchievementCount,
unlockedCount: info.unlockedAchievementCount,
totalCount: info.totalAchievementCount,
}),
},
};