Files
mixtape/zero.Backoffice.UI/app/modules/media/api.ts
T
2021-12-19 01:16:02 +01:00

82 lines
3.0 KiB
TypeScript

import { get, post, put, del, ApiRequestConfig, ApiRequestQuery } from '../../services/request';
const files = {
getEmpty: (flavor?: string, config?: ApiRequestConfig) => get("media/empty", { ...config, params: { flavor } }),
getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('media/' + id, { ...config, params: { changeVector } }),
getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('media', { ...config, params: { ...query } }),
getHierarchy: (id: string, config?: ApiRequestConfig) => get(`media/${id}/hierarchy`, { ...config }),
//create: (model: any, config?: ApiRequestConfig) => post('media', model, config),
update: (model: any, config?: ApiRequestConfig) => put('media/' + model.id, model, config),
move: (id: string, parentId: string, config?: ApiRequestConfig) => put(`media/${id}/move/${parentId}`, {}, { ...config }),
delete: (id: string, config?: ApiRequestConfig) => del('media/' + id, config),
upload: async (file: File, folderId?: string, onProgress?: any) =>
{
var data = new FormData();
data.append('file', file);
if (folderId)
{
data.append('folderId', folderId);
}
return await post('media', data, {
onUploadProgress: (progressEvent) =>
{
if (typeof onProgress === 'function')
{
var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
onProgress(percentCompleted);
}
}
});
}
};
const folders = {
getEmpty: (flavor?: string, config?: ApiRequestConfig) => get("media/folders/empty", { ...config, params: { flavor } }),
getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('media/folders/' + id, { ...config, params: { changeVector } }),
getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('media/folders', { ...config, params: { ...query } }),
getChildren: (id: string, includeFiles: boolean, query: ApiRequestQuery, config?: ApiRequestConfig) => get(`media/folders/${id}/children`, { ...config, params: { ...query, files: includeFiles } }),
getHierarchy: (id: string, config?: ApiRequestConfig) => get(`media/folders/${id}/hierarchy`, { ...config }),
create: (model: any, config?: ApiRequestConfig) => post('media/folders', model, config),
update: (model: any, config?: ApiRequestConfig) => put('media/folders/' + model.id, model, config),
move: (id: string, parentId: string, config?: ApiRequestConfig) => put(`media/folders/${id}/move/${parentId}`, {}, { ...config }),
delete: (id: string, config?: ApiRequestConfig) => del('media/folders/' + id, config)
};
const bulk = {
delete: (ids: string[], config?: ApiRequestConfig) => del(`media/bulk/delete`, { ids }, { ...config }),
move: (ids: string[], parentId: string, config?: ApiRequestConfig) => put(`media/bulk/move`, { parentId, ids }, { ...config }),
getDescendants: (ids: string[], config?: ApiRequestConfig) => get(`media/bulk/descendants`, { ...config, params: { ids } }),
};
export default {
...files,
folders,
bulk
};