const API_BASE = 'https://zenvogamer.com/api/leaderboard'; function getPlayerId() { let id = localStorage.getItem('wcp_pid'); if (!id) { id = 'p_' + Math.random().toString(36).slice(2, 10) + Date.now().toString(36); localStorage.setItem('wcp_pid', id); } return id; } const MySQLBackend = { async isOnline() { return navigator.onLine; }, async fetchLeaderboard(tab) { const board = ['global','weekly','daily','friends'].includes(tab) ? tab : 'global'; const res = await fetch(⁠ ${API_BASE}/fetch.php?board=${board} ⁠); if (!res.ok) throw new Error('fetch_failed_' + res.status); const rows = await res.json(); const me = getPlayerId(); return rows.map(r => ({ userId: r.user_id, username: r.username, avatar: r.avatar, score: parseInt(r.score, 10), level: parseInt(r.level, 10), wordsFound: parseInt(r.words_found, 10), games: parseInt(r.games, 10), isYou: r.user_id === me, })); }, async submitScore(stats) { await fetch(⁠ ${API_BASE}/submit.php ⁠, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ userId: getPlayerId(), username: stats.name, avatar: stats.avatar, level: stats.level, wordsFound: stats.wordsFound, games: stats.games, scores: { global: stats.totalScore, weekly: stats.weeklyScore, daily: stats.dailyScore, }, }), }); }, };