Migrate useUserAdmin

This commit is contained in:
2025-05-11 15:44:27 +02:00
parent 5fcd24db3e
commit b7be5a46a2

View File

@@ -1,11 +1,28 @@
import { useAdminData } from './useAdminData';
import { createUser, updateUser, deleteUser } from '../api/admin';
import {
createUser,
updateUser,
deleteUser as adminDeleteUser,
} from '../api/admin';
import { notifications } from '@mantine/notifications';
import { User } from '../types/authApi';
import { CreateUserRequest, UpdateUserRequest } from '../types/adminApi';
export const useUserAdmin = () => {
interface UseUserAdminResult {
users: User[];
loading: boolean;
error: string | null;
create: (userData: CreateUserRequest) => Promise<boolean>;
update: (userId: number, userData: UpdateUserRequest) => Promise<boolean>;
delete: (userId: number) => Promise<boolean>;
}
export const useUserAdmin = (): UseUserAdminResult => {
const { data: users, loading, error, reload } = useAdminData('users');
const handleCreate = async (userData) => {
const handleCreate = async (
userData: CreateUserRequest
): Promise<boolean> => {
try {
await createUser(userData);
notifications.show({
@@ -14,19 +31,22 @@ export const useUserAdmin = () => {
color: 'green',
});
reload();
return { success: true };
return true;
} catch (err) {
const message = err.response?.data?.error || err.message;
const message = err instanceof Error ? err.message : String(err);
notifications.show({
title: 'Error',
message: `Failed to create user: ${message}`,
color: 'red',
});
return { success: false, error: message };
return false;
}
};
const handleUpdate = async (userId, userData) => {
const handleUpdate = async (
userId: number,
userData: UpdateUserRequest
): Promise<boolean> => {
try {
await updateUser(userId, userData);
notifications.show({
@@ -35,36 +55,36 @@ export const useUserAdmin = () => {
color: 'green',
});
reload();
return { success: true };
return true;
} catch (err) {
const message = err.response?.data?.error || err.message;
const message = err instanceof Error ? err.message : String(err);
notifications.show({
title: 'Error',
message: `Failed to update user: ${message}`,
color: 'red',
});
return { success: false, error: message };
return false;
}
};
const handleDelete = async (userId) => {
const handleDelete = async (userId: number): Promise<boolean> => {
try {
await deleteUser(userId);
await adminDeleteUser(userId);
notifications.show({
title: 'Success',
message: 'User deleted successfully',
color: 'green',
});
reload();
return { success: true };
return true;
} catch (err) {
const message = err.response?.data?.error || err.message;
const message = err instanceof Error ? err.message : String(err);
notifications.show({
title: 'Error',
message: `Failed to delete user: ${message}`,
color: 'red',
});
return { success: false, error: message };
return false;
}
};