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 { 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 { 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 { data: users, loading, error, reload } = useAdminData('users');
const handleCreate = async (userData) => { const handleCreate = async (
userData: CreateUserRequest
): Promise<boolean> => {
try { try {
await createUser(userData); await createUser(userData);
notifications.show({ notifications.show({
@@ -14,19 +31,22 @@ export const useUserAdmin = () => {
color: 'green', color: 'green',
}); });
reload(); reload();
return { success: true }; return true;
} catch (err) { } catch (err) {
const message = err.response?.data?.error || err.message; const message = err instanceof Error ? err.message : String(err);
notifications.show({ notifications.show({
title: 'Error', title: 'Error',
message: `Failed to create user: ${message}`, message: `Failed to create user: ${message}`,
color: 'red', color: 'red',
}); });
return { success: false, error: message }; return false;
} }
}; };
const handleUpdate = async (userId, userData) => { const handleUpdate = async (
userId: number,
userData: UpdateUserRequest
): Promise<boolean> => {
try { try {
await updateUser(userId, userData); await updateUser(userId, userData);
notifications.show({ notifications.show({
@@ -35,36 +55,36 @@ export const useUserAdmin = () => {
color: 'green', color: 'green',
}); });
reload(); reload();
return { success: true }; return true;
} catch (err) { } catch (err) {
const message = err.response?.data?.error || err.message; const message = err instanceof Error ? err.message : String(err);
notifications.show({ notifications.show({
title: 'Error', title: 'Error',
message: `Failed to update user: ${message}`, message: `Failed to update user: ${message}`,
color: 'red', color: 'red',
}); });
return { success: false, error: message }; return false;
} }
}; };
const handleDelete = async (userId) => { const handleDelete = async (userId: number): Promise<boolean> => {
try { try {
await deleteUser(userId); await adminDeleteUser(userId);
notifications.show({ notifications.show({
title: 'Success', title: 'Success',
message: 'User deleted successfully', message: 'User deleted successfully',
color: 'green', color: 'green',
}); });
reload(); reload();
return { success: true }; return true;
} catch (err) { } catch (err) {
const message = err.response?.data?.error || err.message; const message = err instanceof Error ? err.message : String(err);
notifications.show({ notifications.show({
title: 'Error', title: 'Error',
message: `Failed to delete user: ${message}`, message: `Failed to delete user: ${message}`,
color: 'red', color: 'red',
}); });
return { success: false, error: message }; return false;
} }
}; };