diff --git a/frontend/src/routes/+layout.server.ts b/frontend/src/routes/+layout.server.ts index b3aecd87510c735f98e5cb872178617dbaeaccd9..c403b2a7add5403c850fcf99ff0d8f7b52524e47 100644 --- a/frontend/src/routes/+layout.server.ts +++ b/frontend/src/routes/+layout.server.ts @@ -1,4 +1,5 @@ import { type ServerLoad, redirect } from '@sveltejs/kit'; +import { patchUserAPI } from '$lib/api/users'; const publicly_allowed = ['/login', '/register', '/tests', '/surveys', '/tutor/register']; @@ -11,10 +12,17 @@ const isPublic = (path: string) => { return false; }; -export const load: ServerLoad = async ({ locals, url }) => { +export const load: ServerLoad = async ({ locals, url, fetch }) => { + if (locals.user == null || locals.user == undefined) { if (!isPublic(url.pathname)) { - redirect(303, `/login`); + throw redirect(303, `/login`); + } + } else { + try { + await patchUserAPI(fetch, locals.user.id, { is_active: true }); + } catch (error) { + console.error('Failed to update user status:', error); } } diff --git a/frontend/src/routes/logout/+page.server.ts b/frontend/src/routes/logout/+page.server.ts index 7790fb9c026c13a8dfafae0d1e2b38ee1fb553f1..7cd9bda3942d17247394a1ff656bdc0b4da093e2 100644 --- a/frontend/src/routes/logout/+page.server.ts +++ b/frontend/src/routes/logout/+page.server.ts @@ -1,8 +1,22 @@ import { type ServerLoad, redirect } from '@sveltejs/kit'; +import { patchUserAPI } from '$lib/api/users'; + +export const load: ServerLoad = async ({ cookies, locals, fetch }) => { + if (locals.user) { + try { + const success = await patchUserAPI(fetch, locals.user.id, { is_active: false }); + if (!success) { + console.error('Failed to update user status.'); + } + } catch (error) { + console.error('Error updating user status:', error); + } + } -export const load: ServerLoad = async ({ cookies }) => { cookies.set('access_token_cookie', '', { maxAge: -1, path: '/' }); cookies.set('refresh_token_cookie', '', { maxAge: -1, path: '/' }); - redirect(303, '/login'); + locals.user = null; + + throw redirect(303, '/login'); }; diff --git a/frontend/src/routes/sessions/[id]/Message.svelte b/frontend/src/routes/sessions/[id]/Message.svelte index aa19c71429bf4734b95ff3a86f5ac2dfa4c2e872..796beded212a57bfdb543cd7ae79ad1b8d3de82b 100644 --- a/frontend/src/routes/sessions/[id]/Message.svelte +++ b/frontend/src/routes/sessions/[id]/Message.svelte @@ -186,28 +186,20 @@ await message.deleteFeedback(feedback); } - function getUserStatus(user: User, isInConversation: boolean): string { - console.log('status', user.is_active); + function getUserStatus(user: User | null, isInConversation: boolean): string { + if (!user) { + return 'red'; + } + if (!user.is_active) { return 'red'; } + if (isInConversation) { return 'green'; } - return 'orange'; - } - function getUserStatusTooltip(status: string): string { - switch (status) { - case 'green': - return 'User is in this conversation'; - case 'orange': - return 'User is connected but not in this conversation'; - case 'red': - return 'User is not connected to LL'; - default: - return ''; - } + return 'orange'; } </script> @@ -229,9 +221,7 @@ ? 'bg-green-500' : getUserStatus(message.user, false) === 'orange' ? 'bg-orange-500' - : getUserStatus(message.user, false) === 'red' - ? 'bg-red-500' - : '' + : 'bg-red-500' }`} ></div> </div>