chamesu
Version:
This package contains all packages of the chat application.
71 lines (55 loc) • 2.44 kB
text/typescript
/*
* Copyright (c) 2022.
* Author Peter Placzek (tada5hi)
* For the full copyright and license information,
* view the LICENSE file that was distributed with this source code.
*/
import {CollectionResponseType, ResourceResponseType} from "@/modules/api/type";
import {AuthUser} from "@chamesu/common/domains/auth/user";
import {AuthUserImageType} from "@chamesu/common/domains/auth/user/type";
import {useApi} from "~/modules/api";
import {formatRequestRecord, RequestRecord} from "~/modules/api/utils";
export async function getUsers<T extends CollectionResponseType<AuthUser>>(options?: RequestRecord) : Promise<T> {
const { data: response } = await useApi('auth').get<T>('auth/users' + formatRequestRecord(options));
return response;
}
export async function getUser<T extends ResourceResponseType<AuthUser>>(id: number) : Promise<T> {
const { data: response } = await useApi('auth').get<T>('auth/users/'+id);
return response;
}
export async function dropUser<T extends ResourceResponseType<AuthUser>>(id: number) : Promise<T> {
const { data: response } = await useApi('auth').delete<T>('auth/users/'+id);
return response;
}
export async function addUser<T extends ResourceResponseType<AuthUser>>(data: {[key: string] : any}) : Promise<T> {
const { data: response } = await useApi('auth').post<T>('auth/users',data);
return response;
}
export async function editUser<T extends ResourceResponseType<AuthUser>>(userId: number, data: {[key: string] : any}) : Promise<T> {
const { data: response } = await useApi('auth').post<T>('auth/users/'+userId, data);
return response;
}
export async function editUserImage<T extends ResourceResponseType<AuthUser>>(
userId: number,
type: AuthUserImageType,
image: string | Blob,
data: {
coordinates: Record<string, any>,
visibleArea: Record<string, any>
}
) : Promise<T> {
const formData = new FormData();
formData.append(type, image);
for(let key in data) {
for(let keySecond in data[key]) {
if(!data[key].hasOwnProperty(keySecond)) continue;
formData.append(key+keySecond.charAt(0).toUpperCase() + keySecond.substr(1), data[key][keySecond]);
}
}
const { data: response } = await useApi('auth').post<T>('auth/users/'+userId, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
});
return response;
}