fix: Hex Wars - Resign setzt move_count>=2, Badge + Liste für Gewinner

This commit is contained in:
2026-06-29 12:34:00 +02:00
parent dfe217ccd3
commit 1c34b07eb0

View File

@@ -588,8 +588,15 @@ router.post('/:id/resign', authenticate, (req, res) => {
if (game.owner_id !== me && game.opponent_id !== me) return res.status(403).json({ error: 'Kein Zugriff' }); if (game.owner_id !== me && game.opponent_id !== me) return res.status(403).json({ error: 'Kein Zugriff' });
if (game.status !== 'active') return res.status(400).json({ error: 'Spiel bereits beendet' }); if (game.status !== 'active') return res.status(400).json({ error: 'Spiel bereits beendet' });
const winner = game.owner_id === me ? game.opponent_id : game.owner_id; const winner = game.owner_id === me ? game.opponent_id : game.owner_id;
db.prepare(`UPDATE geo_games SET status='finished', winner_id=?, updated_at=datetime('now','localtime') WHERE id=?`).run(winner, game.id); // move_count auf min. 2 setzen damit Spiel in Liste + Leaderboard erscheint
// seen_by: aufgebender Spieler hat es gesehen, Gewinner noch nicht
const newMoveCount = Math.max(game.move_count || 0, 2);
const seenBy = JSON.stringify([me]); // nur der Aufgebende hat es "gesehen"
db.prepare(`
UPDATE geo_games SET status='finished', winner_id=?, move_count=?, seen_by=?,
updated_at=datetime('now','localtime') WHERE id=?
`).run(winner, newMoveCount, seenBy, game.id);
const myName = db.prepare('SELECT username FROM users WHERE id=?').get(me)?.username || 'Jemand'; const myName = db.prepare('SELECT username FROM users WHERE id=?').get(me)?.username || 'Jemand';
sendPush(winner, '⬡ Hex Wars gewonnen!', `${myName} hat aufgegeben. Du gewinnst! 🎉`); sendPush(winner, '⬡ Hex Wars gewonnen!', `${myName} hat aufgegeben. Du gewinnst! 🎉`);
res.json({ ok: true }); res.json({ ok: true });