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;
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;
@@ -21,20 +30,41 @@ export async function load(event) {
try {
const me = await s.fam.getProfile(famId);
return {
verified: true, token: '', memberId: me.id, famId,
memberName: me.name, memberColor: me.color, email: me.email || '',
session: true,
verified: true,
role: 'parent',
token: '',
memberId: me.id,
famId,
memberName: me.name,
memberColor: me.color,
email: me.email || '',
session: true
};
} 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.
return {
verified: true, token: event.cookies.get('pb_token') || '', memberId: session.id, famId,
memberName: session.name || '', memberColor: session.color || '', email: '',
session: true,
verified: true,
role: 'child',
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) {
return { error: e instanceof Error ? e.message : 'Update failed' };
}
},
}
};
@@ -8,7 +8,16 @@
let memberColor = $state(data.memberColor || '#6366f1');
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>
<ViewHeader title="Preferences" subtitle={data.verified ? data.memberName : ''} hero />
@@ -59,35 +68,29 @@
{#each colors as c}
<button
type="button"
style="width:2rem;height:2rem;border-radius:50%;border:{c === memberColor ? '3px solid #111827' : '2px solid transparent'};background:{c};cursor:pointer"
onclick={() => memberColor = c}
style="width:2rem;height:2rem;border-radius:50%;border:{c === memberColor
? '3px solid #111827'
: '2px solid transparent'};background:{c};cursor:pointer"
onclick={() => (memberColor = c)}
></button>
{/each}
</div>
<input type="hidden" name="color" value={memberColor} />
</div>
{#if data.role === 'parent'}
<div style="margin-bottom:1rem">
<label style="display:block;font-size:0.85rem;color:#374151;margin-bottom:0.25rem">
Email
</label>
{#if data.session}
<input
type="email"
name="email"
bind:value={memberEmail}
style="padding:0.5rem;border:1px solid #d1d5db;border-radius:6px;font-size:0.9rem;width:100%;box-sizing:border-box"
/>
{:else}
<input
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}
{#if form?.error}
<p style="color:#dc2626;font-size:0.85rem;margin-bottom:0.5rem">{form.error}</p>