// SPDX-License-Identifier: AGPL-3.0
import { CollectionResource, defaultCollectionSelectedFields } from "models/collection";
-import { AxiosInstance } from "axios";
+import { AxiosInstance, AxiosResponse } from "axios";
import { CollectionFile, CollectionDirectory } from "models/collection-file";
import { WebDAV } from "common/webdav";
import { AuthService } from "../auth-service/auth-service";
| (Partial<CollectionResource> & Pick<CollectionResource, "uuid">)
| (Partial<CollectionResource> & Pick<CollectionResource, "ownerUuid">);
+type ReplaceFilesPayload = {
+ collection: Partial<CollectionResource>;
+ replace_files: {[key: string]: string};
+}
+
export const emptyCollectionPdh = "d41d8cd98f00b204e9800998ecf8427e+0";
export const SOURCE_DESTINATION_EQUAL_ERROR_MESSAGE = "Source and destination cannot be the same";
}
async files(uuid: string) {
- const request = await this.keepWebdavClient.propfind(`c=${uuid}`);
- if (request.responseXML != null) {
- return extractFilesData(request.responseXML);
+ try {
+ const request = await this.keepWebdavClient.propfind(`c=${uuid}`);
+ if (request.responseXML != null) {
+ return extractFilesData(request.responseXML);
+ }
+ } catch (e) {
+ return Promise.reject(e);
}
-
return Promise.reject();
}
}
private replaceFiles(data: CollectionPartialUpdateOrCreate, fileMap: {}, showErrors?: boolean) {
- const payload = {
+ const payload: ReplaceFilesPayload = {
collection: {
preserve_version: true,
...CommonService.mapKeys(snakeCase)(data),
};
if (data.uuid) {
return CommonService.defaultResponse(
- this.serverApi.put<CollectionResource>(`/${this.resourceType}/${data.uuid}`, payload),
+ this.serverApi.put<ReplaceFilesPayload, AxiosResponse<CollectionResource>>(`/${this.resourceType}/${data.uuid}`, payload),
this.actions,
true, // mapKeys
showErrors
);
} else {
return CommonService.defaultResponse(
- this.serverApi.post<CollectionResource>(`/${this.resourceType}`, payload),
+ this.serverApi.post<ReplaceFilesPayload, AxiosResponse<CollectionResource>>(`/${this.resourceType}`, payload),
this.actions,
true, // mapKeys
showErrors