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>