import { getParentDashboard, saveSessionFeedbackResponse, submitPlayerFilmLink, createPlayerFilmUpload, completePlayerFilmUpload } from 'backend/portalData.web'; $w.onReady(function () { const dashboard = $w('#html1'); let loaded = false; async function loadDashboard(force = false) { if (loaded && !force) return; loaded = true; try { const data = await getParentDashboard(); dashboard.postMessage({ type: 'PORTAL_DATA', players: data.players || [] }); } catch (error) { loaded = false; dashboard.postMessage({ type: 'PORTAL_ERROR', message: 'Please sign in with the parent account connected to your Academy player.' }); } } async function refreshDashboard() { loaded = false; await loadDashboard(true); } dashboard.onMessage(async (event) => { const message = event.data || {}; try { if (message.type === 'PORTAL_READY') await loadDashboard(); if (message.type === 'PLAYER_NOTE_RESPONSE') { await saveSessionFeedbackResponse({ noteId: message.noteId, reply: message.reply, rating: message.rating }); await refreshDashboard(); } if (message.type === 'PLAYER_FILM_LINK_SUBMIT') { await submitPlayerFilmLink(message); await refreshDashboard(); } if (message.type === 'PLAYER_FILM_UPLOAD_REQUEST') { const upload = await createPlayerFilmUpload(message); dashboard.postMessage({ type: 'PLAYER_FILM_UPLOAD_URL', ...upload }); } if (message.type === 'PLAYER_FILM_UPLOAD_COMPLETE') { await completePlayerFilmUpload(message.submissionId); await refreshDashboard(); } } catch (error) { dashboard.postMessage({ type: 'PLAYER_ACTION_ERROR', message: error?.message || 'Could not complete this action.' }); } }); loadDashboard(); });
