import { WEBUI_API_BASE_URL } from '$lib/constants'; import { getUserPosition } from '$lib/utils'; export const getUserPermissions = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/permissions/user`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const updateUserPermissions = async (token: string, permissions: object) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/permissions/user`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...permissions }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const updateUserRole = async (token: string, id: string, role: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/update/role`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ id: id, role: role }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getUsers = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res ? res : []; }; export const getUserSettings = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/user/settings`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const updateUserSettings = async (token: string, settings: object) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/user/settings/update`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...settings }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getUserById = async (token: string, userId: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/${userId}`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getUserInfo = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/user/info`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const updateUserInfo = async (token: string, info: object) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/user/info/update`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...info }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getAndUpdateUserLocation = async (token: string) => { const location = await getUserPosition().catch((err) => { throw err; }); if (location) { await updateUserInfo(token, { location: location }); return location; } else { throw new Error('Failed to get user location'); } }; export const deleteUserById = async (token: string, userId: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/${userId}`, { method: 'DELETE', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; type UserUpdateForm = { profile_image_url: string; email: string; name: string; password: string; }; export const updateUserById = async (token: string, userId: string, user: UserUpdateForm) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/users/${userId}/update`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ profile_image_url: user.profile_image_url, email: user.email, name: user.name, password: user.password !== '' ? user.password : undefined }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.log(err); error = err.detail; return null; }); if (error) { throw error; } return res; };