diff --git a/web/satellite/src/components/browser/FileBrowser.vue b/web/satellite/src/components/browser/FileBrowser.vue index e070034d5..acedf62b2 100644 --- a/web/satellite/src/components/browser/FileBrowser.vue +++ b/web/satellite/src/components/browser/FileBrowser.vue @@ -342,7 +342,7 @@ const currentPath = computed((): string => { * Return locked files number. */ const lockedFilesCount = computed((): number => { - return objectsCount.value - (isPaginationEnabled.value ? fetchedObjectsCount.value : obStore.state.objectsCount); + return objectsCount.value - obStore.state.objectsCount; }); /** @@ -668,15 +668,18 @@ onBeforeMount(async () => { await withLoading(async () => { try { if (isPaginationEnabled.value) { - await obStore.initList(''); + await Promise.all([ + obStore.initList(''), + obStore.getObjectCount(), + ]); } else { await Promise.all([ list(''), obStore.getObjectCount(), ]); } - } catch (err) { - notify.error(err.message, AnalyticsErrorEventSource.FILE_BROWSER_LIST_CALL); + } catch (error) { + notify.error(error.message, AnalyticsErrorEventSource.FILE_BROWSER_LIST_CALL); } }); }); diff --git a/web/satellite/src/components/objects/UploadFile.vue b/web/satellite/src/components/objects/UploadFile.vue index 6844060fb..676e050f8 100644 --- a/web/satellite/src/components/objects/UploadFile.vue +++ b/web/satellite/src/components/objects/UploadFile.vue @@ -117,18 +117,15 @@ watch(passphrase, async () => { }); try { - let promises: Promise[] = [ + const promises: Promise[] = [ bucketsStore.getBuckets(bucketPage.value.currentPage, projectID), + obStore.getObjectCount(), ]; if (isPaginationEnabled.value) { promises.push(obStore.initList('')); } else { - promises = [ - ...promises, - obStore.list(''), - obStore.getObjectCount(), - ]; + promises.push(obStore.list('')); } await Promise.all(promises); diff --git a/web/satellite/src/store/modules/objectBrowserStore.ts b/web/satellite/src/store/modules/objectBrowserStore.ts index 9a52d1e56..0ea724249 100644 --- a/web/satellite/src/store/modules/objectBrowserStore.ts +++ b/web/satellite/src/store/modules/objectBrowserStore.ts @@ -411,11 +411,17 @@ export const useObjectBrowserStore = defineStore('objectBrowser', () => { async function getObjectCount(): Promise { assertIsInitialized(state); - const responseV2 = await state.s3.send(new ListObjectsV2Command({ + const paginator = paginateListObjectsV2({ client: state.s3, pageSize: MAX_KEY_COUNT }, { Bucket: state.bucket, - })); + MaxKeys: MAX_KEY_COUNT, + }); - state.objectsCount = responseV2.KeyCount === undefined ? 0 : responseV2.KeyCount; + let keyCount = 0; + for await (const response of paginator) { + keyCount += response.KeyCount ?? 0; + } + + state.objectsCount = keyCount; } async function upload({ e }: { e: DragEvent | Event }): Promise {