import { BASE_URL } from '@/api/buster_rest/config'; import type { OrganizationUser, BusterUserResponse, BusterUserFavorite, BusterUserListItem } from '@/api/asset_interfaces/users'; import type { UsersFavoritePostPayload, UserFavoriteDeletePayload, UserUpdateFavoritesPayload, UserRequestUserListPayload } from '@/api/request_interfaces/user/interfaces'; import { mainApi } from '../instances'; import { serverFetch } from '../../createServerInstance'; export const getMyUserInfo = async (): Promise => { return mainApi.get(`/users`).then((response) => response.data); }; export const getMyUserInfo_server = async ({ jwtToken }: { jwtToken: string | undefined; }): Promise => { if (!jwtToken) { try { //If Anonymous user, it will fail, so we catch the error and return undefined const res = await serverFetch(`/users`, { method: 'GET' }); return res; } catch (error) { return undefined; } } //use fetch instead of serverFetch because... return fetch(`${BASE_URL}/users`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${jwtToken}` } }) .then((response) => { if (!response.ok) { return undefined; } return response.json(); }) .catch((error) => { return undefined; }); }; export const getUser = async ({ userId }: { userId: string }) => { return mainApi.get(`/users/${userId}`).then((response) => response.data); }; export const getUser_server = async ({ userId }: { userId: string }) => { return serverFetch(`/users/${userId}`); }; export const updateOrganizationUser = async ({ userId, ...params }: { userId: string; name?: string; role?: OrganizationUser['role']; }) => { return mainApi .put(`/users/${userId}`, params) .then((response) => response.data); }; export const inviteUser = async ({ emails, team_ids }: { emails: string[]; team_ids?: string[]; }) => { return mainApi.post(`/users/invite`, { emails, team_ids }); }; export const getUserFavorites = async () => { return mainApi.get(`/users/favorites`).then((response) => response.data); }; export const getUserFavorites_server = async () => { return serverFetch(`/users/favorites`); }; export const createUserFavorite = async (payload: UsersFavoritePostPayload) => { return mainApi .post(`/users/favorites`, payload) .then((response) => response.data); }; export const createUserFavorite_server = async (payload: UsersFavoritePostPayload) => { return serverFetch(`/users/favorites`, { method: 'POST', body: JSON.stringify(payload) }); }; export const deleteUserFavorite = async (payload: UserFavoriteDeletePayload) => { return mainApi .delete(`/users/favorites`, { data: payload }) .then((response) => response.data); }; export const deleteUserFavorite_server = async (payload: UserFavoriteDeletePayload) => { return serverFetch(`/users/favorites`, { method: 'DELETE', body: JSON.stringify(payload) }); }; export const updateUserFavorites = async (payload: UserUpdateFavoritesPayload) => { return mainApi .put(`/users/favorites`, payload) .then((response) => response.data); }; export const updateUserFavorites_server = async (payload: UserUpdateFavoritesPayload) => { return serverFetch(`/users/favorites`, { method: 'PUT', body: JSON.stringify(payload) }); }; export const getUserList = async (payload: UserRequestUserListPayload) => { return mainApi .get(`/users/list`, { params: payload }) .then((response) => response.data); }; export const getUserList_server = async (payload: UserRequestUserListPayload) => { return serverFetch(`/users/list`, { params: payload }); };