projects
/
arvados-workbench2.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
17152: Avoids doing one extra request to persist versions on update.
[arvados-workbench2.git]
/
src
/
services
/
collection-service
/
collection-service.ts
diff --git
a/src/services/collection-service/collection-service.ts
b/src/services/collection-service/collection-service.ts
index 90441a645f49d92d622fb0dd689fdaee9604bc51..9227393326576ab524030ac20da1d5858336c657 100644
(file)
--- a/
src/services/collection-service/collection-service.ts
+++ b/
src/services/collection-service/collection-service.ts
@@
-27,6
+27,14
@@
export class CollectionService extends TrashableResourceService<CollectionResour
]);
}
]);
}
+ create(data?: Partial<CollectionResource>) {
+ return super.create({ ...data, preserveVersion: true });
+ }
+
+ update(uuid: string, data: Partial<CollectionResource>) {
+ return super.update(uuid, { ...data, preserveVersion: true });
+ }
+
async files(uuid: string) {
const request = await this.webdavClient.propfind(`c=${uuid}`);
if (request.responseXML != null) {
async files(uuid: string) {
const request = await this.webdavClient.propfind(`c=${uuid}`);
if (request.responseXML != null) {
@@
-36,6
+44,7
@@
export class CollectionService extends TrashableResourceService<CollectionResour
}
async deleteFiles(collectionUuid: string, filePaths: string[]) {
}
async deleteFiles(collectionUuid: string, filePaths: string[]) {
+ if (collectionUuid === "" || filePaths.length === 0) { return; }
for (const path of filePaths) {
const splittedPath = path.split('/');
if (collectionUuid) {
for (const path of filePaths) {
const splittedPath = path.split('/');
if (collectionUuid) {
@@
-44,20
+53,24
@@
export class CollectionService extends TrashableResourceService<CollectionResour
await this.webdavClient.delete(`c=${collectionUuid}${path}`);
}
}
await this.webdavClient.delete(`c=${collectionUuid}${path}`);
}
}
+ await this.update(collectionUuid, { preserveVersion: true });
}
async uploadFiles(collectionUuid: string, files: File[], onProgress?: UploadProgress) {
}
async uploadFiles(collectionUuid: string, files: File[], onProgress?: UploadProgress) {
+ if (collectionUuid === "" || files.length === 0) { return; }
// files have to be uploaded sequentially
for (let idx = 0; idx < files.length; idx++) {
await this.uploadFile(collectionUuid, files[idx], idx, onProgress);
}
// files have to be uploaded sequentially
for (let idx = 0; idx < files.length; idx++) {
await this.uploadFile(collectionUuid, files[idx], idx, onProgress);
}
+ await this.update(collectionUuid, { preserveVersion: true });
}
}
- moveFile(collectionUuid: string, oldPath: string, newPath: string) {
-
return
this.webdavClient.move(
+
async
moveFile(collectionUuid: string, oldPath: string, newPath: string) {
+
await
this.webdavClient.move(
`c=${collectionUuid}${oldPath}`,
`c=${collectionUuid}${encodeURI(newPath)}`
);
`c=${collectionUuid}${oldPath}`,
`c=${collectionUuid}${encodeURI(newPath)}`
);
+ return await this.update(collectionUuid, { preserveVersion: true });
}
extendFileURL = (file: CollectionDirectory | CollectionFile) => {
}
extendFileURL = (file: CollectionDirectory | CollectionFile) => {
@@
-65,8
+78,8
@@
export class CollectionService extends TrashableResourceService<CollectionResour
? this.webdavClient.defaults.baseURL.slice(0, -1)
: this.webdavClient.defaults.baseURL;
const apiToken = this.authService.getApiToken();
? this.webdavClient.defaults.baseURL.slice(0, -1)
: this.webdavClient.defaults.baseURL;
const apiToken = this.authService.getApiToken();
- const
splittedApiToken = apiToken ? apiToken.split('/') : []
;
- const userApiToken = `/t=${
splittedApiToken[2]
}/`;
+ const
encodedApiToken = apiToken ? encodeURI(apiToken) : ''
;
+ const userApiToken = `/t=${
encodedApiToken
}/`;
const splittedPrevFileUrl = file.url.split('/');
const url = `${baseUrl}/${splittedPrevFileUrl[1]}${userApiToken}${splittedPrevFileUrl.slice(2).join('/')}`;
return {
const splittedPrevFileUrl = file.url.split('/');
const url = `${baseUrl}/${splittedPrevFileUrl[1]}${userApiToken}${splittedPrevFileUrl.slice(2).join('/')}`;
return {