const token = location.pathname.split('/').pop(); history.replaceState(null, '', '/admin'); const grid = document.querySelector('#review-grid'); const reviewStatus = document.querySelector('#review-status'); const reviewCount = document.querySelector('#review-count'); const selected = new Set(); document.querySelector('#refresh-review').addEventListener('click', loadPending); document.querySelector('#approve-selected').addEventListener('click', () => moderateSelected('approve')); document.querySelector('#delete-selected').addEventListener('click', () => moderateSelected('delete')); grid.addEventListener('change', (event) => { const checkbox = event.target.closest('[data-select-id]'); if (!checkbox) return; if (checkbox.checked) selected.add(checkbox.dataset.selectId); else selected.delete(checkbox.dataset.selectId); }); grid.addEventListener('click', (event) => { const action = event.target.closest('[data-admin-action]'); if (!action) return; moderate([action.dataset.id], action.dataset.adminAction); }); await loadPending(); async function loadPending() { selected.clear(); reviewStatus.textContent = 'FETCHING_PENDING_QUEUE'; const response = await fetch('/api/admin/pending', { headers: adminHeaders() }); const payload = await response.json(); if (!response.ok) { reviewStatus.textContent = 'REVIEW_AUTH_FAILED'; grid.innerHTML = '
${escapeText(meme.moderationReason || 'Queued for review.')}