From b7be5a46a2d69fdf547b10845beb31e9e2f07e0d Mon Sep 17 00:00:00 2001 From: LordMathis Date: Sun, 11 May 2025 15:44:27 +0200 Subject: [PATCH] Migrate useUserAdmin --- .../{useUserAdmin.js => useUserAdmin.ts} | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) rename app/src/hooks/{useUserAdmin.js => useUserAdmin.ts} (53%) diff --git a/app/src/hooks/useUserAdmin.js b/app/src/hooks/useUserAdmin.ts similarity index 53% rename from app/src/hooks/useUserAdmin.js rename to app/src/hooks/useUserAdmin.ts index 777a6e3..e6d6413 100644 --- a/app/src/hooks/useUserAdmin.js +++ b/app/src/hooks/useUserAdmin.ts @@ -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; + update: (userId: number, userData: UpdateUserRequest) => Promise; + delete: (userId: number) => Promise; +} + +export const useUserAdmin = (): UseUserAdminResult => { const { data: users, loading, error, reload } = useAdminData('users'); - const handleCreate = async (userData) => { + const handleCreate = async ( + userData: CreateUserRequest + ): Promise => { 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 => { 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 => { 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; } };