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