// import { useMutation, useQuery } from "@tanstack/react-query"; // import { // banUser, // getCurrentUser, // getUserByEmail, // getUserById, // getUsers, // unbanUser, // inviteUser, // createUser, // updateUser, // deleteUser, // getUserByUsername // } from "./action"; // import { IUserSchema } from "@/src/entities/models/users/users.model"; // import { IBanDuration, IBanUserSchema, ICredentialsBanUserSchema } from "@/src/entities/models/users/ban-user.model"; // import { ICredentialsUnbanUserSchema, IUnbanUserSchema } from "@/src/entities/models/users/unban-user.model"; // import { ICreateUserSchema } from "@/src/entities/models/users/create-user.model"; // import { IUpdateUserSchema } from "@/src/entities/models/users/update-user.model"; // import { ICredentialsInviteUserSchema } from "@/src/entities/models/users/invite-user.model"; // import { ICredentialGetUserByEmailSchema, ICredentialGetUserByIdSchema, ICredentialGetUserByUsernameSchema, IGetUserByEmailSchema, IGetUserByIdSchema, IGetUserByUsernameSchema } from "@/src/entities/models/users/read-user.model"; // const useUsersAction = () => { // // For all users (no parameters needed) // const getUsersQuery = useQuery({ // queryKey: ["users"], // queryFn: () => getUsers() // }); // // Current user query doesn't need parameters // const getCurrentUserQuery = useQuery({ // queryKey: ["user", "current"], // queryFn: () => getCurrentUser() // }); // const getUserByIdQuery = (credential: ICredentialGetUserByIdSchema) => useQuery({ // queryKey: ["user", "id", credential.id], // queryFn: () => getUserById(credential) // }); // const getUserByEmailQuery = (credential: IGetUserByEmailSchema) => useQuery({ // queryKey: ["user", "email", credential.email], // queryFn: () => getUserByEmail(credential) // }); // const getUserByUsernameQuery = (credential: IGetUserByUsernameSchema) => useQuery({ // queryKey: ["user", "username", credential.username], // queryFn: () => getUserByUsername(credential) // }); // // Mutations that don't need dynamic parameters // const banUserMutation = (credential: ICredentialsBanUserSchema, data: IBanUserSchema) => useMutation({ // mutationKey: ["banUser"], // mutationFn: () => banUser(credential, data) // }); // const unbanUserMutation = useMutation({ // mutationKey: ["unbanUser"], // mutationFn: async (credential: ICredentialsUnbanUserSchema) => await unbanUser(credential) // }); // // Create functions that return configured hooks // const inviteUserMutation = useMutation({ // mutationKey: ["inviteUser"], // mutationFn: async (credential: ICredentialsInviteUserSchema) => await inviteUser(credential) // }); // const createUserMutation = useMutation({ // mutationKey: ["createUser"], // mutationFn: async (data: ICreateUserSchema) => await createUser(data) // }); // const updateUserMutation = useMutation({ // mutationKey: ["updateUser"], // mutationFn: async (params: { id: string; data: IUpdateUserSchema }) => updateUser(params.id, params.data) // }); // const deleteUserMutation = useMutation({ // mutationKey: ["deleteUser"], // mutationFn: async (id: string) => await deleteUser(id) // }); // return { // getUsers: getUsersQuery, // getCurrentUser: getCurrentUserQuery, // getUserById: getUserByIdQuery, // getUserByEmailQuery, // getUserByUsernameQuery, // banUser: banUserMutation, // unbanUser: unbanUserMutation, // inviteUser: inviteUserMutation, // createUser: createUserMutation, // updateUser: updateUserMutation, // deleteUser: deleteUserMutation // }; // } // export const useGetUsersQuery = () => { // const { getUsers } = useUsersAction(); // return { // data: getUsers.data, // isPending: getUsers.isPending, // error: getUsers.error, // refetch: getUsers.refetch, // }; // } // export const useGetCurrentUserQuery = () => { // const { getCurrentUser } = useUsersAction(); // return { // data: getCurrentUser.data, // isPending: getCurrentUser.isPending, // error: getCurrentUser.error, // refetch: getCurrentUser.refetch, // }; // } // export const useGetUserByIdQuery = (credential: ICredentialGetUserByIdSchema) => { // const { getUserById } = useUsersAction(); // return { // data: getUserById(credential).data, // isPending: getUserById(credential).isPending, // error: getUserById(credential).error, // refetch: getUserById(credential).refetch, // }; // } // export const useGetUserByEmailQuery = (credential: ICredentialGetUserByEmailSchema) => { // const { getUserByEmailQuery } = useUsersAction(); // return { // data: getUserByEmailQuery(credential).data, // isPending: getUserByEmailQuery(credential).isPending, // error: getUserByEmailQuery(credential).error, // refetch: getUserByEmailQuery(credential).refetch, // }; // } // export const useGetUserByUsernameQuery = (credential: ICredentialGetUserByUsernameSchema) => { // const { getUserByUsernameQuery } = useUsersAction(); // return { // data: getUserByUsernameQuery(credential).data, // isPending: getUserByUsernameQuery(credential).isPending, // error: getUserByUsernameQuery(credential).error, // refetch: getUserByUsernameQuery(credential).refetch, // }; // } // export const useCreateUserMutation = () => { // const { createUser } = useUsersAction(); // return { // createUser: createUser.mutateAsync, // isPending: createUser.isPending, // errors: createUser.error, // } // } // export const useInviteUserMutation = () => { // const { inviteUser } = useUsersAction(); // return { // inviteUser: inviteUser.mutateAsync, // isPending: inviteUser.isPending, // errors: inviteUser.error, // } // } // export const useUpdateUserMutation = () => { // const { updateUser } = useUsersAction(); // return { // updateUser: updateUser.mutateAsync, // isPending: updateUser.isPending, // errors: updateUser.error, // } // } // export const useBanUserMutation = () => { // const { banUser } = useUsersAction(); // return { // banUser: banUser.mutateAsync, // isPending: banUser.isPending, // errors: banUser.error, // } // } // export const useUnbanUserMutation = () => { // const { unbanUser } = useUsersAction(); // return { // unbanUser: unbanUser.mutateAsync, // isPending: unbanUser.isPending, // errors: unbanUser.error, // } // } // export const useDeleteUserMutation = () => { // const { deleteUser } = useUsersAction(); // return { // deleteUser: deleteUser.mutateAsync, // isPending: deleteUser.isPending, // errors: deleteUser.error, // } // }