fix child pref updates
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user