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 { 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;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Reference in New Issue
Block a user