mirror of
https://github.com/mue/mue.git
synced 2026-07-15 21:13:54 +02:00
fix: stat timestamps, resetting achievements
This commit is contained in:
@@ -1,31 +1,41 @@
|
||||
import { achievements } from './index';
|
||||
|
||||
export function checkAchievements(stats) {
|
||||
achievements.forEach((achievement) => {
|
||||
const oldAchievements = JSON.parse(localStorage.getItem('achievements')) || [];
|
||||
const achievementTimestamps = JSON.parse(localStorage.getItem('achievementTimestamps')) || {};
|
||||
|
||||
return achievements.map((achievement) => {
|
||||
let achieved = oldAchievements.includes(achievement.id);
|
||||
|
||||
switch (achievement.condition.type) {
|
||||
case 'tabsOpened':
|
||||
if (stats['tabs-opened'] >= achievement.condition.amount) {
|
||||
achievement.achieved = true;
|
||||
achieved = true;
|
||||
}
|
||||
break;
|
||||
case 'addonInstall':
|
||||
if (stats.marketplace) {
|
||||
if (stats.marketplace['install'] >= achievement.condition.amount) {
|
||||
achievement.achieved = true;
|
||||
achieved = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return achievements;
|
||||
return {
|
||||
...achievement,
|
||||
achieved,
|
||||
timestamp: achievementTimestamps[achievement.id],
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
export function newAchievements(stats) {
|
||||
// calculate new achievements
|
||||
const oldAchievements = JSON.parse(localStorage.getItem('achievements')) || [];
|
||||
const achievementTimestamps = JSON.parse(localStorage.getItem('achievementTimestamps')) || {};
|
||||
const checkedAchievements = checkAchievements(stats);
|
||||
const newAchievements = [];
|
||||
|
||||
@@ -36,15 +46,18 @@ export function newAchievements(stats) {
|
||||
});
|
||||
|
||||
// add timestamp to new achievements
|
||||
const now = Date.now();
|
||||
newAchievements.forEach((achievement) => {
|
||||
achievement.timestamp = Date.now();
|
||||
achievement.timestamp = now;
|
||||
achievementTimestamps[achievement.id] = now;
|
||||
});
|
||||
|
||||
// save new achievements to local storage
|
||||
// save new achievements and timestamps to local storage
|
||||
localStorage.setItem(
|
||||
'achievements',
|
||||
JSON.stringify([...oldAchievements, ...newAchievements.map((achievement) => achievement.id)]),
|
||||
);
|
||||
localStorage.setItem('achievementTimestamps', JSON.stringify(achievementTimestamps));
|
||||
|
||||
return newAchievements;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user