tju-yxq opened a new issue, #2424:
URL: https://github.com/apache/rocketmq-dashboard/issues/2424
## Problem
The backend now exposes a bounded cloud-credential inventory:
```text
GET /api/cloud-credentials?vendor=&search=&page=&pageSize=
```
It returns `PageResult<CloudCredentialVO>`, and the repository applies
vendor/name filtering and page bounds at the SQL layer.
The Settings page still consumes only the first page:
```ts
void listCloudCredentials()
.then((result) => setCredentials(result.items));
```
The table then renders:
```tsx
<Table ... pagination={false} />
```
Consequences:
- credentials beyond the first 20 rows cannot be viewed or edited from the
Settings page;
- no vendor filter is exposed even though the API supports it;
- no name search is exposed even though the API supports it;
- page size cannot be changed;
- the user is not told that the table is a bounded page rather than the
complete inventory;
- create/update/delete only mutate the local first-page array, so a deleted
last row leaves an empty-looking page even when later pages still contain rows;
- the page has no request sequencing, so changing filters can race with an
older request.
This is not a backend pagination bug: #2306 correctly added the inventory
contract. The Settings UI was only changed to unwrap `result.items`; it never
became a paginated inventory view.
## Expected behavior
The credential management tab should consume the existing backend contract
fully:
- vendor filter;
- debounced name search;
- bounded pagination with page and page size;
- total row count from the server;
- reset to page 1 when filters change;
- deterministic handling of an emptied current page;
- request sequencing so stale responses cannot overwrite newer filters;
- after create/update/delete, refresh the current server page rather than
only patching an unbounded local array;
- retain masked AccessKey display and write-only SecretKey handling.
## Suggested acceptance tests
- initial load requests page 1 with page size 20;
- changing vendor or search resets to page 1 and sends both filters;
- pagination changes send the selected page and page size;
- a stale response for an older filter cannot overwrite a newer result;
- deleting the last row on a later page moves to the previous page when
appropriate;
- creating a credential refreshes the server page;
- updating a credential replaces the row using the server response;
- masked AccessKey remains displayed and SecretKey is never returned.
## Value / size
This is a user-facing correctness/performance completion of an
already-merged backend capability. It naturally spans the Settings page, API
call construction, request sequencing, pagination UI, filter UI, and focused
component tests; the production change is expected to exceed 100 lines without
test padding.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]