Skip to content
Extraits de code Groupes Projets
sessions.ts 5,46 ko
Newer Older
  • Learn to ignore specific revisions
  • import { formatToUTCDate } from '$lib/utils/date';
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    import type { fetchType } from '$lib/utils/types';
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function getSessionsAPI(fetch: fetchType): Promise<any[]> {
    	const response = await fetch(`/api/sessions`);
    	if (!response.ok) return [];
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return await response.json();
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function createSessionAPI(fetch: fetchType): Promise<any | null> {
    	const response = await fetch(`/api/sessions`, { method: 'POST' });
    	if (!response.ok) return null;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return await response.json();
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function getSessionAPI(fetch: fetchType, id: number): Promise<any | null> {
    	const response = await fetch(`/api/sessions/${id}`);
    	if (!response.ok) return null;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return await response.json();
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function deleteSessionAPI(fetch: fetchType, id: number): Promise<boolean> {
    	const response = await fetch(`/api/sessions/${id}`, { method: 'DELETE' });
    	if (!response.ok) return false;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return true;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function getMessagesAPI(fetch: fetchType, id: number): Promise<any | null> {
    	const response = await fetch(`/api/sessions/${id}/messages`);
    	if (!response.ok) return null;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return await response.json();
    
    export async function createMessageAPI(
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	fetch: fetchType,
    
    	id: number,
    	content: string,
    
    	metadata: { message: string; date: number }[],
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	replyTo: string | null
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    ): Promise<any | null> {
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	const response = await fetch(`/api/sessions/${id}/messages`, {
    		method: 'POST',
    		headers: { 'Content-Type': 'application/json' },
    		body: JSON.stringify({ content, metadata, reply_to_message_id: replyTo })
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	if (!response.ok) return null;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return await response.json();
    
    export async function createAIMessageAPI(
    
    DavePk04's avatar
    DavePk04 a validé
    	fetch: fetchType,
    	sessionId: string,
    	content: string
    
    ): Promise<any | null> {
    
    DavePk04's avatar
    DavePk04 a validé
    	const response = await fetch(`/api/chat/`, {
    		method: 'POST',
    		headers: { 'Content-Type': 'application/json' },
    		body: JSON.stringify({
    			session_id: sessionId,
    			role: 'user',
    			content: content
    		})
    	});
    
    	if (!response.ok) return null;
    
    	return await response.json();
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function updateMessageAPI(
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	fetch: fetchType,
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	id: number,
    	message_id: string,
    	content: string,
    	metadata: { message: string; date: number }[]
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    ): Promise<any | null> {
    	const response = await fetch(`/api/sessions/${id}/messages`, {
    		method: 'POST',
    		headers: { 'Content-Type': 'application/json' },
    		body: JSON.stringify({ message_id, content, metadata })
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	});
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	if (!response.ok) return null;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return await response.json();
    
    export async function createMessageFeedbackAPI(
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	fetch: fetchType,
    
    	id: number,
    	message_id: number,
    	start: number,
    
    	end: number,
    	content: string | null
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    ): Promise<number | null> {
    	const response = await fetch(`/api/sessions/${id}/messages/${message_id}/feedback`, {
    		method: 'POST',
    		headers: { 'Content-Type': 'application/json' },
    		body: JSON.stringify({ start, end, content })
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	if (!response.ok) return null;
    
    	return parseInt(await response.text());
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function deleteMessageFeedbackAPI(
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	fetch: fetchType,
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	id: number,
    	message_id: number,
    	feedback_id: number
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    ): Promise<boolean> {
    	const response = await fetch(
    		`/api/sessions/${id}/messages/${message_id}/feedback/${feedback_id}`,
    		{
    			method: 'DELETE'
    		}
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	);
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return response.ok;
    }
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function patchLanguageAPI(
    	fetch: fetchType,
    	id: number,
    	language: string
    ): Promise<boolean> {
    	const response = await fetch(`/api/sessions/${id}`, {
    		method: 'PATCH',
    		headers: { 'Content-Type': 'application/json' },
    		body: JSON.stringify({ language })
    	});
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return response.ok;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    export async function createSessionSatisfyAPI(
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	fetch: fetchType,
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	id: number,
    	usefullness: number,
    	easiness: number,
    	remarks: string
    ): Promise<boolean> {
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	const response = await fetch(`/api/sessions/${id}/satisfy`, {
    		method: 'POST',
    		headers: { 'Content-Type': 'application/json' },
    		body: JSON.stringify({ usefullness, easiness, remarks })
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	});
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return response.ok;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    }
    
    
    export async function createSessionFromCalComAPI(
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	fetch: fetchType,
    
    	user_id: number,
    	contact_id: number,
    	start: Date,
    	end: Date
    ): Promise<number | null> {
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	const response = await fetch(`/api/users/${user_id}/contacts/${contact_id}/bookings`, {
    		method: 'POST',
    		headers: { 'Content-Type': 'application/json' },
    		body: JSON.stringify({
    			start_time: formatToUTCDate(start),
    			end_time: formatToUTCDate(end)
    		})
    	});
    	if (!response.ok) return null;
    
    	return await response.json();
    }
    
    export async function addUserToSessionAPI(
    	fetch: fetchType,
    	session_id: number,
    	user_id: number
    ): Promise<boolean> {
    	const response = await fetch(`/api/sessions/${session_id}/users/${user_id}`, { method: 'POST' });
    
    	return response.ok;
    }
    
    export async function patchSessionAPI(fetch: fetchType, id: number, data: any): Promise<boolean> {
    	const response = await fetch(`/api/sessions/${id}`, {
    		method: 'PATCH',
    		headers: { 'Content-Type': 'application/json' },
    		body: JSON.stringify(data)
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	return response.ok;
    }
    
    export async function sendTypingAPI(fetch: fetchType, id: number): Promise<boolean> {
    	const response = await fetch(`/api/sessions/${id}/typing`, { method: 'POST' });
    	return response.ok;
    }
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    export async function sendPresenceAPI(fetch: fetchType, id: number): Promise<boolean> {
    	const response = await fetch(`/api/sessions/${id}/presence`, { method: 'POST' });
    	return response.ok;
    }
    
    export async function removeUserFromSessionAPI(
    	fetch: fetchType,
    	session_id: number,
    	user_id: number
    ): Promise<boolean> {
    	const response = await fetch(`/api/sessions/${session_id}/users/${user_id}`, {
    		method: 'DELETE'
    	});
    	return response.ok;