From 4fd227c85f3b2d857e049ebe654715da5941cb18 Mon Sep 17 00:00:00 2001 From: Akhil Mohan Date: Tue, 3 Oct 2023 17:02:32 +0530 Subject: [PATCH] feat(secret-approval): added loading and empty states for request list --- .../api/secretApprovalRequest/queries.tsx | 2 ++ .../SecretApprovalRequest.tsx | 33 +++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx index 929a579f8..dfe82ee43 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx +++ b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx @@ -142,6 +142,8 @@ export const useGetSecretApprovalRequests = ({ }), enabled: Boolean(workspaceId) && (options?.enabled ?? true), getNextPageParam: (lastPage, pages) => { + if (lastPage.length && lastPage.length < limit) return undefined; + return lastPage?.length !== 0 ? pages.length * limit : undefined; } }); diff --git a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/SecretApprovalRequest.tsx b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/SecretApprovalRequest.tsx index 30af811d9..8929e7ea7 100644 --- a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/SecretApprovalRequest.tsx +++ b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/SecretApprovalRequest.tsx @@ -14,7 +14,9 @@ import { DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, - DropdownMenuTrigger + DropdownMenuTrigger, + EmptyState, + Skeleton } from "@app/components/v2"; import { useWorkspace } from "@app/context"; import { useGetSecretApprovalRequests, useGetWorkspaceUsers } from "@app/hooks/api"; @@ -40,6 +42,7 @@ export const SecretApprovalRequest = () => { isFetchingNextPage: isFetchingNextApprovalRequest, fetchNextPage: fetchNextApprovalRequest, hasNextPage: hasNextApprovalPage, + isLoading: isApprovalRequestLoading, refetch } = useGetSecretApprovalRequests({ workspaceId, @@ -59,6 +62,9 @@ export const SecretApprovalRequest = () => { refetch({ refetchPage: (_page, index) => index === 0 }); }; + const isRequestListEmpty = + !isApprovalRequestLoading && secretApprovalRequests?.pages[0]?.length === 0; + return ( {isSecretApprovalScreen ? ( @@ -97,7 +103,7 @@ export const SecretApprovalRequest = () => { className={statusFilter === "close" ? "text-gray-500" : ""} > - 27 Open + Open
{ }} > - 27 Closed + Closed
@@ -167,6 +173,11 @@ export const SecretApprovalRequest = () => {
+ {isRequestListEmpty && ( +
+ +
+ )} {secretApprovalRequests?.pages?.map((group, i) => ( {group?.map((secretApproval) => { @@ -196,6 +207,22 @@ export const SecretApprovalRequest = () => { })} ))} + {(isFetchingNextApprovalRequest || isApprovalRequestLoading) && ( +
+ {Array.apply(0, Array(3)).map((_x, index) => ( +
+
+ + +
+ +
+ ))} +
+ )}
{hasNextApprovalPage && (