Files
edr-platform/apps/edr-freight-web/backoffice/src/super-admin/hooks/useExternalUsers.ts
natib21 e6e44e773b fix ui
2026-07-10 11:25:59 +00:00

107 lines
3.0 KiB
TypeScript

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 });
},
});
};