mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 14:08:11 +00:00
user management ui
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
|
||||
|
||||
import {
|
||||
activateUser,
|
||||
approveUser,
|
||||
deactivateUser,
|
||||
deleteUser,
|
||||
getAllExternalUsers,
|
||||
getPendingUsers,
|
||||
} from "../services/api/userService";
|
||||
|
||||
// 📦 Query Key
|
||||
const queryKeys = {
|
||||
pendingUsers: ["external-users", "pending"],
|
||||
allExternalUsers: ["external-users", "all"],
|
||||
};
|
||||
|
||||
export enum userTypeEnum {
|
||||
external = "external_organization",
|
||||
individual = "individual",
|
||||
externalUsers = "external_organization,individual",
|
||||
}
|
||||
|
||||
export interface ExternalQueryParams {
|
||||
orderBy?: string;
|
||||
take?: number;
|
||||
skip?: number;
|
||||
order?: string;
|
||||
userType?: userTypeEnum;
|
||||
name?: string;
|
||||
email?: string;
|
||||
username?: string;
|
||||
phoneNumber?: string;
|
||||
}
|
||||
|
||||
// ✅ Hook: Get pending external users
|
||||
export const usePendingExternalUsers = (params?: ExternalQueryParams) => {
|
||||
return useQuery({
|
||||
queryKey: queryKeys.pendingUsers,
|
||||
queryFn: async () => {
|
||||
const users = await getPendingUsers(params);
|
||||
return users.data;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// ✅ Hook: Get all external users
|
||||
export const useAllExternalUsers = (params?: ExternalQueryParams) => {
|
||||
return useQuery({
|
||||
queryKey: [...queryKeys.allExternalUsers, params],
|
||||
queryFn: async () => {
|
||||
const users = await getAllExternalUsers(params);
|
||||
return users.data;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// ✅ Mutation: Activate user
|
||||
export const useActivateExternalUser = () => {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (id: string) => activateUser(id),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: queryKeys.pendingUsers });
|
||||
queryClient.invalidateQueries({ queryKey: queryKeys.allExternalUsers });
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// Mutatae Approve user
|
||||
export const useApproveExternalUser = () => {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: ({ id, status }: { id: string; status: string }) =>
|
||||
approveUser(id, status),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: queryKeys.pendingUsers });
|
||||
queryClient.invalidateQueries({ queryKey: queryKeys.allExternalUsers });
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// ✅ Mutation: Deactivate user
|
||||
export const useDeactivateExternalUser = () => {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (id: string) => deactivateUser(id),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: queryKeys.pendingUsers });
|
||||
queryClient.invalidateQueries({ queryKey: queryKeys.allExternalUsers });
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// ✅ Mutation: Delete user
|
||||
export const useDeleteExternalUser = () => {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (id: string) => deleteUser(id),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: queryKeys.pendingUsers });
|
||||
queryClient.invalidateQueries({ queryKey: queryKeys.allExternalUsers });
|
||||
},
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user