mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-05 15:44:21 +00:00
Migrate useUserAdmin
This commit is contained in:
@@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user