Skip to content
Extraits de code Groupes Projets
Valider ea5bc2c2 rédigé par DavePk04's avatar DavePk04
Parcourir les fichiers

feat: Update user active status on login/logout and improve chat UI

parent c6153a35
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!34Feat/109 status indicator update
import { type ServerLoad, redirect } from '@sveltejs/kit'; import { type ServerLoad, redirect } from '@sveltejs/kit';
import { patchUserAPI } from '$lib/api/users';
const publicly_allowed = ['/login', '/register', '/tests', '/surveys', '/tutor/register']; const publicly_allowed = ['/login', '/register', '/tests', '/surveys', '/tutor/register'];
...@@ -11,10 +12,17 @@ const isPublic = (path: string) => { ...@@ -11,10 +12,17 @@ const isPublic = (path: string) => {
return false; 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 (locals.user == null || locals.user == undefined) {
if (!isPublic(url.pathname)) { 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);
} }
} }
......
import { type ServerLoad, redirect } from '@sveltejs/kit'; 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('access_token_cookie', '', { maxAge: -1, path: '/' });
cookies.set('refresh_token_cookie', '', { maxAge: -1, path: '/' }); cookies.set('refresh_token_cookie', '', { maxAge: -1, path: '/' });
redirect(303, '/login'); locals.user = null;
throw redirect(303, '/login');
}; };
...@@ -186,28 +186,20 @@ ...@@ -186,28 +186,20 @@
await message.deleteFeedback(feedback); await message.deleteFeedback(feedback);
} }
function getUserStatus(user: User, isInConversation: boolean): string { function getUserStatus(user: User | null, isInConversation: boolean): string {
console.log('status', user.is_active); if (!user) {
return 'red';
}
if (!user.is_active) { if (!user.is_active) {
return 'red'; return 'red';
} }
if (isInConversation) { if (isInConversation) {
return 'green'; return 'green';
} }
return 'orange';
}
function getUserStatusTooltip(status: string): string { return 'orange';
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 '';
}
} }
</script> </script>
...@@ -229,9 +221,7 @@ ...@@ -229,9 +221,7 @@
? 'bg-green-500' ? 'bg-green-500'
: getUserStatus(message.user, false) === 'orange' : getUserStatus(message.user, false) === 'orange'
? 'bg-orange-500' ? 'bg-orange-500'
: getUserStatus(message.user, false) === 'red' : 'bg-red-500'
? 'bg-red-500'
: ''
}`} }`}
></div> ></div>
</div> </div>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter