From b274add4da505a2f9f479b55873a22343346b642 Mon Sep 17 00:00:00 2001 From: Prakash Senthil Vel <23444145+prakashsvmx@users.noreply.github.com> Date: Fri, 2 Aug 2024 22:36:10 +0530 Subject: [PATCH] fix nested directory object display (#3415) --- api/ws_objects.go | 24 ++++++++++++------- .../Objects/ListObjects/ListObjectsTable.tsx | 10 ++------ 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/api/ws_objects.go b/api/ws_objects.go index e8bf4640d5..876a74afa7 100644 --- a/api/ws_objects.go +++ b/api/ws_objects.go @@ -139,15 +139,23 @@ func (wsc *wsMinioClient) objectManager(session *models.Principal) { continue } - objItem := ObjectResponse{ - Name: lsObj.Key, - Size: lsObj.Size, - LastModified: lsObj.LastModified.Format(time.RFC3339), - VersionID: lsObj.VersionID, - IsLatest: lsObj.IsLatest, - DeleteMarker: lsObj.IsDeleteMarker, + // if the key is same as requested prefix it would be nested directory object, so skip + // and show only objects under the prefix + // E.g: + // bucket/prefix1/prefix2/ -- this should be skipped from list item. + // bucket/prefix1/prefix2/an-object + // bucket/prefix1/prefix2/another-object + if messageRequest.Prefix != lsObj.Key { + objItem := ObjectResponse{ + Name: lsObj.Key, + Size: lsObj.Size, + LastModified: lsObj.LastModified.Format(time.RFC3339), + VersionID: lsObj.VersionID, + IsLatest: lsObj.IsLatest, + DeleteMarker: lsObj.IsDeleteMarker, + } + buffer = append(buffer, objItem) } - buffer = append(buffer, objItem) if len(buffer) >= itemsPerBatch { sendWSResponse(WSResponse{ diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx index b8b27843f1..1f627db4ff 100644 --- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx +++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx @@ -84,20 +84,14 @@ const ListObjectsTable = () => { IAM_SCOPES.S3_ALL_LIST_BUCKET, ]); - const filteredRecords = records.filter((b: BucketObjectItem) => { + const plSelect = records.filter((b: BucketObjectItem) => { if (searchObjects === "") { return true; } else { const objectName = b.name.toLowerCase(); - if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) { - return true; - } else { - return false; - } + return objectName.indexOf(searchObjects.toLowerCase()) >= 0; } }); - - const plSelect = filteredRecords; const sortASC = plSelect.sort(sortListObjects(currentSortField)); let payload: BucketObjectItem[] = [];