|
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; |
|
}; |
|
|