'use strict'; // ---- Settings > Family: the family's settings in one place (chat, your PIN, chores and rewards, who is on the family board, shared screens). // Each row opens the same sheet that used to live inside that part of the hub. const famRow = (id, ic, title, sub) => ``; async function famManageChores() { try { cr.data = await crApi('/?date=' + crYmd(new Date())); } catch (e) { return toast(e.message); } cr.afterEdit = famManageChores; crManage(); } async function famSettings(box) { if (!box) return; const admin = ME && ME.role === 'admin', can = t => typeof allowed === 'function' && allowed(t); box.innerHTML = `

You

${can('chat') ? famRow('fs-chat', 'chat', 'Chat', 'Quiet hours for phone alerts' + (admin ? ', and the family announcement' : '')) : ''}
${admin && can('chores') ? `

Chores

${famRow('fs-chores', 'check', 'Chores and weekly rewards', 'Make chores, choose who does them, set the points and the reward tiers')}
` : ''} ${admin ? '

Family board

Who has a name tile on the shared family screen and shows in its chore progress.

Loading…
' : ''}`; const c = box.querySelector('#fs-chat'); if (c) c.onclick = () => chSettings(); const k = box.querySelector('#fs-chores'); if (k) k.onclick = famManageChores; if (typeof devSettings === 'function') devSettings(box.querySelector('#fs-dev')); if (admin) try { const r = await jfetch('/api/users'), b = box.querySelector('#fs-board'); if (!b) return; b.innerHTML = r.users.filter(u => !u.disabled).map(u => ``).join(''); b.querySelectorAll('input[data-u]').forEach(i => i.onchange = async () => { try { await jfetch('/api/users/' + encodeURIComponent(i.dataset.u), { method: 'PUT', body: JSON.stringify({ board: i.checked }) }); } catch (e) { toast(e.message); i.checked = !i.checked; } }); } catch (e) { const b = box.querySelector('#fs-board'); if (b) b.innerHTML = `
${esc(e.message)}
`; } }