🔧 Fix settings modal: Load current user preferences

- Added show_in_leaderboard to user-player API response
- Improved loadSettings() function with better error handling
- Added console logging for debugging
- Settings modal now shows current user preference instead of always 'off'
- Fixed dependency on currentPlayerId (now uses currentUser.id directly)
This commit is contained in:
2025-09-08 19:18:35 +02:00
parent fbd8677709
commit 2becf784bd
2 changed files with 108 additions and 101 deletions

View File

@@ -1256,7 +1256,7 @@ router.get('/v1/public/user-player/:supabase_user_id', async (req, res) => {
try {
const result = await pool.query(
'SELECT id, firstname, lastname, birthdate, rfiduid FROM players WHERE supabase_user_id = $1',
'SELECT id, firstname, lastname, birthdate, rfiduid, show_in_leaderboard FROM players WHERE supabase_user_id = $1',
[supabase_user_id]
);
@@ -2915,14 +2915,14 @@ router.get('/achievements/leaderboard', async (req, res) => {
router.post('/v1/public/update-player-settings', async (req, res) => {
try {
const { player_id, show_in_leaderboard } = req.body;
if (!player_id) {
return res.status(400).json({
success: false,
message: 'Player ID ist erforderlich'
});
}
// Update player settings
const updateQuery = `
UPDATE players
@@ -2930,22 +2930,22 @@ router.post('/v1/public/update-player-settings', async (req, res) => {
WHERE id = $2
RETURNING id, firstname, lastname, show_in_leaderboard
`;
const result = await pool.query(updateQuery, [show_in_leaderboard || false, player_id]);
if (result.rows.length === 0) {
return res.status(404).json({
success: false,
message: 'Spieler nicht gefunden'
});
}
res.json({
success: true,
message: 'Einstellungen erfolgreich aktualisiert',
data: result.rows[0]
});
} catch (error) {
console.error('Error updating player settings:', error);
res.status(500).json({
@@ -2959,14 +2959,14 @@ router.post('/v1/public/update-player-settings', async (req, res) => {
router.post('/v1/private/update-player-settings', requireApiKey, async (req, res) => {
try {
const { player_id, show_in_leaderboard } = req.body;
if (!player_id) {
return res.status(400).json({
success: false,
message: 'Player ID ist erforderlich'
});
}
// Update player settings
const updateQuery = `
UPDATE players
@@ -2974,22 +2974,22 @@ router.post('/v1/private/update-player-settings', requireApiKey, async (req, res
WHERE id = $2
RETURNING id, firstname, lastname, show_in_leaderboard
`;
const result = await pool.query(updateQuery, [show_in_leaderboard || false, player_id]);
if (result.rows.length === 0) {
return res.status(404).json({
success: false,
message: 'Spieler nicht gefunden'
});
}
res.json({
success: true,
message: 'Einstellungen erfolgreich aktualisiert',
data: result.rows[0]
});
} catch (error) {
console.error('Error updating player settings:', error);
res.status(500).json({