fixes and awards

This commit is contained in:
nate@necloud.us committed 2025-08-13 11:25:12 -04:00
1 parent 6d2987485d
commit d652248170
13 files changed
+2444 -54

No files matched your search

+40 -4
View File
@@ -445,13 +445,49 @@ app.post('/awardBadges', (req, res) => {
const badgePath = path.join(DATA_DIR, files.badges);
const allBadges = readJsonSafe(badgePath);
if (!allBadges[username]) allBadges[username] = [];
if (!allBadges[username]) allBadges[username] = { earned: [], counts: {} };
// Initialize structure if old format
if (Array.isArray(allBadges[username])) {
// Convert from old format to new format
const oldBadges = [...allBadges[username]];
allBadges[username] = {
earned: oldBadges.map(name => ({
id: name.toLowerCase().replace(/\s/g, '_'),
name,
icon: "🏅",
earnedAt: new Date().toISOString()
})),
counts: {}
};
}
badges.forEach(b => {
if (!allBadges[username].includes(b)) {
allBadges[username].push(b);
badges.forEach(badge => {
// Check if badge already exists by ID
const existingBadge = allBadges[username].earned.find(b => {
return (typeof b === 'object' && b.id === badge.id) ||
(typeof b === 'string' && b === badge.name);
});
if (!existingBadge) {
// Add new badge with timestamp
const badgeToAdd = {
...badge,
earnedAt: new Date().toISOString()
};
allBadges[username].earned.push(badgeToAdd);
// Track badge counts by category
if (badge.category) {
if (!allBadges[username].counts[badge.category]) {
allBadges[username].counts[badge.category] = 0;
}
allBadges[username].counts[badge.category]++;
}
}
});
fs.writeFileSync(badgePath, JSON.stringify(allBadges, null, 2));
res.send(`🎉 Badges updated for ${username}`);
});