Skip to content
Extraits de code Groupes Projets
users.ts 3,53 ko
Newer Older
  • Learn to ignore specific revisions
  • Brieuc Dubois's avatar
    Brieuc Dubois a validé
    import { toastAlert } from '$lib/utils/toasts';
    
    import { axiosInstance, access_cookie } from './apiInstance';
    import { get } from 'svelte/store';
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    export async function getUsersAPI() {
    	const response = await axiosInstance.get(`/users`);
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	if (response.status !== 200) {
    		toastAlert('Failed to get users');
    		return [];
    	}
    
    	return response.data;
    }
    
    
    export async function getUserAPI(user_id: number) {
    
    	const response = await axiosInstance.get(`/users/${user_id}`, {
    		headers: {
    			Authorization: `Bearer ${get(access_cookie)}`
    		}
    	});
    
    
    	if (response.status !== 200) {
    		toastAlert('Failed to get user');
    		return null;
    	}
    
    	return response.data;
    }
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function createUserContactAPI(user_id: number, contact_id: number) {
    	const response = await axiosInstance.post(`/users/${user_id}/contacts/${contact_id}`);
    
    	if (response.status !== 201) {
    		toastAlert('Failed to create user contact');
    		return null;
    	}
    
    	return response.data;
    }
    
    
    export async function createUserContactFromEmailAPI(user_id: number, email: string) {
    	const response = await axiosInstance.post(`/users/${user_id}/contacts-email/${email}`);
    
    	if (response.status === 404) {
    		toastAlert('User not found');
    		return null;
    	}
    
    	if (response.status === 400) {
    		toastAlert('User already has this contact');
    		return null;
    	}
    
    	if (response.status !== 201) {
    		toastAlert('Failed to create user contact');
    		return null;
    	}
    
    	return response.data;
    }
    
    
    export async function getUserContactsAPI(user_id: number) {
    	const response = await axiosInstance.get(`/users/${user_id}/contacts`, {
    		headers: {
    			Authorization: `Bearer ${get(access_cookie)}`
    		}
    	});
    
    	if (response.status !== 200) {
    		toastAlert('Failed to get user contacts');
    		return [];
    	}
    
    	return response.data;
    }
    
    export async function getUserContactSessionsAPI(user_id: number, contact_id: number) {
    	const response = await axiosInstance.get(`/users/${user_id}/contacts/${contact_id}/sessions`, {
    		headers: {
    			Authorization: `Bearer ${get(access_cookie)}`
    		}
    	});
    
    	if (response.status !== 200) {
    		toastAlert('Failed to get user contact sessions');
    		return [];
    	}
    
    	return response.data;
    }
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function createUserAPI(
    	nickname: string,
    	email: string,
    	password: string,
    	type: number,
    	is_active: boolean
    ): Promise<number | null> {
    	const response = await axiosInstance.post(`/users`, {
    		nickname,
    		email,
    		password,
    		type,
    		is_active
    	});
    
    	if (response.status !== 201) {
    		toastAlert('Failed to create user');
    		return null;
    	}
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return response.data;
    }
    
    export async function patchUserAPI(user_id: number, data: any): Promise<boolean> {
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	try {
    		const response = await axiosInstance.patch(`/users/${user_id}`, data);
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    		if (response.status !== 204) {
    			toastAlert('Failed to update user');
    			return false;
    		}
    
    		return true;
    	} catch (e) {
    		console.error(e);
    		toastAlert('Failed to update user due to unknown error');
    
    export async function createTestTypingAPI(
    	user_id: number,
    
    	entries: typingEntry[]
    
    ): Promise<number | null> {
    	const response = await axiosInstance.post(`/users/${user_id}/tests/typing`, {
    
    		entries
    
    	});
    
    	if (response.status !== 201) {
    		toastAlert('Failed to create test');
    		return null;
    	}
    
    	return response.data;
    }
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    export async function createWeeklySurveyAPI(
    	user_id: number,
    	q1: number,
    	q2: number,
    	q3: number,
    	q4: number
    ): Promise<number | null> {
    	const response = await axiosInstance.post(`/users/${user_id}/surveys/weekly`, {
    		q1,
    		q2,
    		q3,
    		q4
    	});
    	if (response.status !== 201) {
    		toastAlert('Failed to create weekly survey');
    		return null;
    	}
    	return response.data;
    }