update login flow

This commit is contained in:
JCEEE
2026-09-08 17:45:12 +01:00
parent 02df79968e
commit 10d8b3d29d
3 changed files with 22 additions and 11 deletions
+1
View File
@@ -216,5 +216,6 @@ export interface Session {
famId: string; famId: string;
userId: string; userId: string;
memberName?: string; memberName?: string;
username?: string;
role?: string; role?: string;
} }
+11 -3
View File
@@ -26,13 +26,16 @@ function actorFrom(session: {
}; };
} }
async function resolveChatIdentity(session: { async function resolveChatIdentity(
session: {
famId: string; famId: string;
id: string; id: string;
role: string; role: string;
name?: string; name?: string;
color?: string; color?: string;
}, pbToken: string) { },
pbToken: string
) {
try { try {
const s = createServices(createPbClient(pbToken)); const s = createServices(createPbClient(pbToken));
const actor = actorFrom(session); const actor = actorFrom(session);
@@ -51,7 +54,11 @@ export async function load(event) {
let famId = ''; let famId = '';
let chat: { famId: string; actor: ChatActor } | null = null; let chat: { famId: string; actor: ChatActor } | null = null;
let fam: any = null; let fam: any = null;
let famAccess = { disabled: false, mode: 'none' as 'none' | 'code' | 'sub' | 'canceled', reason: '' }; let famAccess = {
disabled: false,
mode: 'none' as 'none' | 'code' | 'sub' | 'canceled',
reason: ''
};
if (session && pbToken) { if (session && pbToken) {
famId = session.famId; famId = session.famId;
@@ -87,6 +94,7 @@ export async function load(event) {
userId: session.id, userId: session.id,
memberName: session.name, memberName: session.name,
memberColor: session.color || '', memberColor: session.color || '',
username: session.username || '',
role: session.role role: session.role
} }
: null, : null,
+3 -1
View File
@@ -114,12 +114,14 @@
// session exists. $effect (not onMount) so it also fires when the session // session exists. $effect (not onMount) so it also fires when the session
// appears after the layout was already mounted — e.g. a member redeeming // appears after the layout was already mounted — e.g. a member redeeming
// their OTP on /{fam}/join/{username} then landing on /{fam}/{username}. // their OTP on /{fam}/join/{username} then landing on /{fam}/{username}.
// The handle comes from the session (not page.params) so jump-back-in lands
// on the user's own dashboard even from the bare /{fam} page.
$effect(() => { $effect(() => {
if (!page.data.session) return; if (!page.data.session) return;
recordShortcut({ recordShortcut({
famSlug: (page.data.fam?.slug as string) || page.params.fam || '', famSlug: (page.data.fam?.slug as string) || page.params.fam || '',
famName: (page.data.fam?.name as string) || page.params.fam || '', famName: (page.data.fam?.name as string) || page.params.fam || '',
userName: page.data.role === 'parent' ? '' : page.params.username || '' userName: page.data.session.username || page.params.username || ''
}); });
}); });