Refactor and centralize user and pagination interfaces in useAdmin hook

- Unified `User` and `PaginationMeta` type definitions into `useAdmin` to improve maintainability and consistency.
- Updated affected components (`UserManagementContent`, `UserListTable`, `UserFormDialog`, `UserActionMenu`) to reference the centralized types.
- Enhanced test coverage for user-related hooks to include create, update, delete, activate, deactivate, and bulk actions.
This commit is contained in:
Felipe Cardoso
2025-11-06 12:49:46 +01:00
parent 91bc4f190d
commit f22f87250c
6 changed files with 316 additions and 49 deletions

View File

@@ -10,7 +10,7 @@ import { useSearchParams, useRouter } from 'next/navigation';
import { Plus } from 'lucide-react';
import { Button } from '@/components/ui/button';
import { useAuth } from '@/lib/auth/AuthContext';
import { useAdminUsers } from '@/lib/api/hooks/useAdmin';
import { useAdminUsers, type User, type PaginationMeta } from '@/lib/api/hooks/useAdmin';
import { UserListTable } from './UserListTable';
import { UserFormDialog } from './UserFormDialog';
import { BulkActionToolbar } from './BulkActionToolbar';
@@ -30,13 +30,13 @@ export function UserManagementContent() {
const [selectedUsers, setSelectedUsers] = useState<string[]>([]);
const [dialogOpen, setDialogOpen] = useState(false);
const [dialogMode, setDialogMode] = useState<'create' | 'edit'>('create');
const [editingUser, setEditingUser] = useState<any | null>(null);
const [editingUser, setEditingUser] = useState<User | null>(null);
// Fetch users with query params
const { data, isLoading } = useAdminUsers(page, 20);
const users = data?.data || [];
const pagination = data?.pagination || {
const users: User[] = data?.data || [];
const pagination: PaginationMeta = data?.pagination || {
total: 0,
page: 1,
page_size: 20,
@@ -107,7 +107,7 @@ export function UserManagementContent() {
setDialogOpen(true);
};
const handleEditUser = (user: any) => {
const handleEditUser = (user: User) => {
setDialogMode('edit');
setEditingUser(user);
setDialogOpen(true);