fix child pref updates

This commit is contained in:
JCEEE
2026-09-08 18:34:58 +01:00
parent 10d8b3d29d
commit de6047f406
2 changed files with 61 additions and 28 deletions
@@ -7,7 +7,16 @@ export async function load(event) {
const username = event.params.username; const username = event.params.username;
if (!session) { if (!session) {
return { verified: false, token: '', memberId: '', famId: '', memberName: '', memberColor: '', email: '' }; return {
verified: false,
role: '',
token: '',
memberId: '',
famId: '',
memberName: '',
memberColor: '',
email: ''
};
} }
const famId = session.famId; const famId = session.famId;
@@ -21,20 +30,41 @@ export async function load(event) {
try { try {
const me = await s.fam.getProfile(famId); const me = await s.fam.getProfile(famId);
return { return {
verified: true, token: '', memberId: me.id, famId, verified: true,
memberName: me.name, memberColor: me.color, email: me.email || '', role: 'parent',
session: true, token: '',
memberId: me.id,
famId,
memberName: me.name,
memberColor: me.color,
email: me.email || '',
session: true
}; };
} catch { } catch {
return { verified: false, token: '', memberId: '', famId: '', memberName: '', memberColor: '', email: '' }; return {
verified: false,
role: '',
token: '',
memberId: '',
famId: '',
memberName: '',
memberColor: '',
email: ''
};
} }
} }
// Child — profile lives on the users record, read from the session. // Child — profile lives on the users record, read from the session.
return { return {
verified: true, token: event.cookies.get('pb_token') || '', memberId: session.id, famId, verified: true,
memberName: session.name || '', memberColor: session.color || '', email: '', role: 'child',
session: true, token: event.cookies.get('pb_token') || '',
memberId: session.id,
famId,
memberName: session.name || '',
memberColor: session.color || '',
email: '',
session: true
}; };
} }
@@ -74,5 +104,5 @@ export const actions = {
} catch (e) { } catch (e) {
return { error: e instanceof Error ? e.message : 'Update failed' }; return { error: e instanceof Error ? e.message : 'Update failed' };
} }
}, }
}; };
@@ -8,7 +8,16 @@
let memberColor = $state(data.memberColor || '#6366f1'); let memberColor = $state(data.memberColor || '#6366f1');
let memberEmail = $state(data.email || ''); let memberEmail = $state(data.email || '');
const colors = ['#6366f1', '#ec4899', '#f59e0b', '#10b981', '#3b82f6', '#ef4444', '#8b5cf6', '#14b8a6']; const colors = [
'#6366f1',
'#ec4899',
'#f59e0b',
'#10b981',
'#3b82f6',
'#ef4444',
'#8b5cf6',
'#14b8a6'
];
</script> </script>
<ViewHeader title="Preferences" subtitle={data.verified ? data.memberName : ''} hero /> <ViewHeader title="Preferences" subtitle={data.verified ? data.memberName : ''} hero />
@@ -59,35 +68,29 @@
{#each colors as c} {#each colors as c}
<button <button
type="button" type="button"
style="width:2rem;height:2rem;border-radius:50%;border:{c === memberColor ? '3px solid #111827' : '2px solid transparent'};background:{c};cursor:pointer" style="width:2rem;height:2rem;border-radius:50%;border:{c === memberColor
onclick={() => memberColor = c} ? '3px solid #111827'
: '2px solid transparent'};background:{c};cursor:pointer"
onclick={() => (memberColor = c)}
></button> ></button>
{/each} {/each}
</div> </div>
<input type="hidden" name="color" value={memberColor} /> <input type="hidden" name="color" value={memberColor} />
</div> </div>
<div style="margin-bottom:1rem"> {#if data.role === 'parent'}
<label style="display:block;font-size:0.85rem;color:#374151;margin-bottom:0.25rem"> <div style="margin-bottom:1rem">
Email <label style="display:block;font-size:0.85rem;color:#374151;margin-bottom:0.25rem">
</label> Email
{#if data.session} </label>
<input <input
type="email" type="email"
name="email" name="email"
bind:value={memberEmail} bind:value={memberEmail}
style="padding:0.5rem;border:1px solid #d1d5db;border-radius:6px;font-size:0.9rem;width:100%;box-sizing:border-box" style="padding:0.5rem;border:1px solid #d1d5db;border-radius:6px;font-size:0.9rem;width:100%;box-sizing:border-box"
/> />
{:else} </div>
<input {/if}
type="email"
name="email"
value={memberEmail}
disabled
style="padding:0.5rem;border:1px solid #d1d5db;border-radius:6px;font-size:0.9rem;width:100%;box-sizing:border-box;background:#f3f4f6;color:#9ca3af"
/>
{/if}
</div>
{#if form?.error} {#if form?.error}
<p style="color:#dc2626;font-size:0.85rem;margin-bottom:0.5rem">{form.error}</p> <p style="color:#dc2626;font-size:0.85rem;margin-bottom:0.5rem">{form.error}</p>