add new chat logic and message service

This commit is contained in:
JCEEE
2026-08-05 11:20:27 +01:00
parent 3378e1dce7
commit fed2f32258
11 changed files with 1013 additions and 14 deletions
+31 -1
View File
@@ -16,12 +16,40 @@ async function paydayCheck(famId: string, headers: Record<string, string>) {
} catch {}
}
async function resolveChatIdentity(
api: 'admin' | 'member',
opts: {
session?: { famId: string; userId: string };
deviceToken?: string;
famId?: string;
}
) {
try {
const headers: Record<string, string> = { 'Content-Type': 'application/json' };
if (api === 'admin' && opts.session) {
headers['x-session-famid'] = opts.session.famId;
headers['x-session-userid'] = opts.session.userId;
} else if (api === 'member' && opts.deviceToken && opts.famId) {
headers['x-device-token'] = opts.deviceToken;
headers['x-device-famid'] = opts.famId;
} else {
return null;
}
const res = await fetch(`${HONO_URL}/api/chat/me`, { headers });
if (!res.ok) return null;
return await res.json();
} catch {
return null;
}
}
export async function load(event) {
const session = event.locals.session || null;
const isParent = session !== null;
const deviceToken = event.cookies.get('device_token') || '';
let famId = '';
let chat: { famId: string; actor: any } | null = null;
if (isParent) {
famId = session.famId;
@@ -29,6 +57,7 @@ export async function load(event) {
'x-session-famid': session.famId,
'x-session-userid': session.userId
});
chat = await resolveChatIdentity('admin', { session });
} else if (deviceToken) {
try {
const res = await fetch(`${HONO_URL}/api/members/seasons`, {
@@ -44,8 +73,9 @@ export async function load(event) {
'x-device-token': deviceToken,
'x-device-famid': famId
});
chat = await resolveChatIdentity('member', { deviceToken, famId });
}
}
return { session, isParent, role: session?.role || 'child', famId };
return { session, isParent, role: session?.role || 'child', famId, chat, deviceToken };
}