diff --git a/desktop/renderer-app/src/pages/CloudStoragePage/store.tsx b/desktop/renderer-app/src/pages/CloudStoragePage/store.tsx index 1b7098370ff..e01bd1e9848 100644 --- a/desktop/renderer-app/src/pages/CloudStoragePage/store.tsx +++ b/desktop/renderer-app/src/pages/CloudStoragePage/store.tsx @@ -311,13 +311,17 @@ export class CloudStorageStore extends CloudStorageStoreBase { this.hasMoreFile = cloudFiles.length > 0; + const newFiles: Record = {}; + for (const cloudFile of cloudFiles) { const file = this.filesMap.get(cloudFile.fileUUID); runInAction(() => { if (file) { + if (file.createAt.valueOf() !== cloudFile.createAt.valueOf()) { + file.createAt = cloudFile.createAt; + } file.fileName = cloudFile.fileName; - file.createAt = cloudFile.createAt; file.fileSize = cloudFile.fileSize; file.convert = CloudStorageStore.mapConvertStep(cloudFile.convertStep); file.taskToken = cloudFile.taskToken; @@ -325,18 +329,17 @@ export class CloudStorageStore extends CloudStorageStoreBase { file.external = cloudFile.external; file.resourceType = cloudFile.resourceType; } else { - this.filesMap.set( - cloudFile.fileUUID, - observable.object({ - ...cloudFile, - convert: CloudStorageStore.mapConvertStep( - cloudFile.convertStep, - ), - }), - ); + newFiles[cloudFile.fileUUID] = observable.object({ + ...cloudFile, + convert: CloudStorageStore.mapConvertStep(cloudFile.convertStep), + }); } }); } + + runInAction(() => { + this.filesMap.merge(newFiles); + }); } catch { this.isFetchingFiles = false; } @@ -387,13 +390,17 @@ export class CloudStorageStore extends CloudStorageStoreBase { this.totalUsage = totalUsage; }); + const newFiles: Record = {}; + for (const cloudFile of cloudFiles) { const file = this.filesMap.get(cloudFile.fileUUID); runInAction(() => { if (file) { + if (file.createAt.valueOf() !== cloudFile.createAt.valueOf()) { + file.createAt = cloudFile.createAt; + } file.fileName = cloudFile.fileName; - file.createAt = cloudFile.createAt; file.fileSize = cloudFile.fileSize; file.convert = CloudStorageStore.mapConvertStep(cloudFile.convertStep); file.taskToken = cloudFile.taskToken; @@ -401,13 +408,10 @@ export class CloudStorageStore extends CloudStorageStoreBase { file.external = cloudFile.external; file.resourceType = cloudFile.resourceType; } else { - this.filesMap.set( - cloudFile.fileUUID, - observable.object({ - ...cloudFile, - convert: CloudStorageStore.mapConvertStep(cloudFile.convertStep), - }), - ); + newFiles[cloudFile.fileUUID] = observable.object({ + ...cloudFile, + convert: CloudStorageStore.mapConvertStep(cloudFile.convertStep), + }); } }); @@ -420,6 +424,10 @@ export class CloudStorageStore extends CloudStorageStoreBase { await this.queryConvertStatus(cloudFile.fileUUID); } } + + runInAction(() => { + this.filesMap.merge(newFiles); + }); } catch (e) { errorTips(e); } diff --git a/web/flat-web/src/pages/CloudStoragePage/store.tsx b/web/flat-web/src/pages/CloudStoragePage/store.tsx index d80d674fa3d..3870b89f189 100644 --- a/web/flat-web/src/pages/CloudStoragePage/store.tsx +++ b/web/flat-web/src/pages/CloudStoragePage/store.tsx @@ -295,7 +295,9 @@ export class CloudStorageStore extends CloudStorageStoreBase { this.cloudStorageDataPagination * this.cloudStorageSinglePageFiles; if (this.filesMap.size >= cloudStorageTotalPagesFilesCount && this.hasMoreFile) { - this.isFetchingFiles = true; + runInAction(() => { + this.isFetchingFiles = true; + }); try { const { files: cloudFiles } = await listFiles({ @@ -303,17 +305,23 @@ export class CloudStorageStore extends CloudStorageStoreBase { order: "DESC", }); - this.isFetchingFiles = false; + runInAction(() => { + this.isFetchingFiles = false; + }); this.hasMoreFile = cloudFiles.length > 0; + const newFiles: Record = {}; + for (const cloudFile of cloudFiles) { const file = this.filesMap.get(cloudFile.fileUUID); runInAction(() => { if (file) { + if (file.createAt.valueOf() !== cloudFile.createAt.valueOf()) { + file.createAt = cloudFile.createAt; + } file.fileName = cloudFile.fileName; - file.createAt = cloudFile.createAt; file.fileSize = cloudFile.fileSize; file.convert = CloudStorageStore.mapConvertStep(cloudFile.convertStep); file.taskToken = cloudFile.taskToken; @@ -321,20 +329,21 @@ export class CloudStorageStore extends CloudStorageStoreBase { file.external = cloudFile.external; file.resourceType = cloudFile.resourceType; } else { - this.filesMap.set( - cloudFile.fileUUID, - observable.object({ - ...cloudFile, - convert: CloudStorageStore.mapConvertStep( - cloudFile.convertStep, - ), - }), - ); + newFiles[cloudFile.fileUUID] = observable.object({ + ...cloudFile, + convert: CloudStorageStore.mapConvertStep(cloudFile.convertStep), + }); } }); } + + runInAction(() => { + this.filesMap.merge(newFiles); + }); } catch { - this.isFetchingFiles = false; + runInAction(() => { + this.isFetchingFiles = false; + }); } } }; @@ -383,13 +392,17 @@ export class CloudStorageStore extends CloudStorageStoreBase { this.totalUsage = totalUsage; }); + const newFiles: Record = {}; + for (const cloudFile of cloudFiles) { const file = this.filesMap.get(cloudFile.fileUUID); runInAction(() => { if (file) { + if (file.createAt.valueOf() !== cloudFile.createAt.valueOf()) { + file.createAt = cloudFile.createAt; + } file.fileName = cloudFile.fileName; - file.createAt = cloudFile.createAt; file.fileSize = cloudFile.fileSize; file.convert = CloudStorageStore.mapConvertStep(cloudFile.convertStep); file.taskToken = cloudFile.taskToken; @@ -397,13 +410,10 @@ export class CloudStorageStore extends CloudStorageStoreBase { file.external = cloudFile.external; file.resourceType = cloudFile.resourceType; } else { - this.filesMap.set( - cloudFile.fileUUID, - observable.object({ - ...cloudFile, - convert: CloudStorageStore.mapConvertStep(cloudFile.convertStep), - }), - ); + newFiles[cloudFile.fileUUID] = observable.object({ + ...cloudFile, + convert: CloudStorageStore.mapConvertStep(cloudFile.convertStep), + }); } }); @@ -416,6 +426,10 @@ export class CloudStorageStore extends CloudStorageStoreBase { await this.queryConvertStatus(cloudFile.fileUUID); } } + + runInAction(() => { + this.filesMap.merge(newFiles); + }); } catch (e) { errorTips(e); }