feat: UI pagination and members search (#724)

* feat: pagination (UI)

* Fixes

* feat: add search to member list page

* responsiveness
This commit is contained in:
Philip Okugbe
2025-02-13 23:28:00 +00:00
committed by GitHub
parent ae842f94d0
commit 0ef6b1978a
19 changed files with 605 additions and 426 deletions

View File

@ -1,4 +1,5 @@
import {
keepPreviousData,
useMutation,
useQuery,
useQueryClient,
@ -22,6 +23,7 @@ import {
IInvitation,
IWorkspace,
} from "@/features/workspace/types/workspace.types.ts";
import { IUser } from "@/features/user/types/user.types.ts";
export function useWorkspaceQuery(): UseQueryResult<IWorkspace, Error> {
return useQuery({
@ -40,10 +42,13 @@ export function useWorkspacePublicDataQuery(): UseQueryResult<
});
}
export function useWorkspaceMembersQuery(params?: QueryParams) {
export function useWorkspaceMembersQuery(
params?: QueryParams,
): UseQueryResult<IPagination<IUser>, Error> {
return useQuery({
queryKey: ["workspaceMembers", params],
queryFn: () => getWorkspaceMembers(params),
placeholderData: keepPreviousData,
});
}
@ -53,7 +58,6 @@ export function useChangeMemberRoleMutation() {
return useMutation<any, Error, any>({
mutationFn: (data) => changeMemberRole(data),
onSuccess: (data, variables) => {
// TODO: change in cache instead
notifications.show({ message: "Member role updated successfully" });
queryClient.refetchQueries({
queryKey: ["workspaceMembers"],
@ -72,6 +76,7 @@ export function useWorkspaceInvitationsQuery(
return useQuery({
queryKey: ["invitations", params],
queryFn: () => getPendingInvitations(params),
placeholderData: keepPreviousData,
});
}
@ -82,7 +87,6 @@ export function useCreateInvitationMutation() {
mutationFn: (data) => createInvitation(data),
onSuccess: (data, variables) => {
notifications.show({ message: "Invitation sent" });
// TODO: mutate cache
queryClient.refetchQueries({
queryKey: ["invitations"],
});