From 4a24e740bcc36ee545ce7616bcaf27891ceb2d79 Mon Sep 17 00:00:00 2001 From: pradeepkumar Date: Mon, 22 Dec 2025 13:26:28 +0530 Subject: [PATCH] feat: Add user role filtering to the dashboard with UI tabs and API integration. --- src/app/dashboard/users/page.tsx | 40 +++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/app/dashboard/users/page.tsx b/src/app/dashboard/users/page.tsx index 9a5d6b5..b0cb28c 100644 --- a/src/app/dashboard/users/page.tsx +++ b/src/app/dashboard/users/page.tsx @@ -4,6 +4,15 @@ import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { usersService, User, getErrorMessage } from '@/services'; +type RoleFilter = 'ALL' | 'ADMIN' | 'USER' | 'AGENT'; + +const roleFilters: { label: string; value: RoleFilter }[] = [ + { label: 'All Users', value: 'ALL' }, + { label: 'Admin', value: 'ADMIN' }, + { label: 'Users', value: 'USER' }, + { label: 'Agents', value: 'AGENT' }, +]; + export default function UsersPage() { const router = useRouter(); const [users, setUsers] = useState([]); @@ -11,17 +20,22 @@ export default function UsersPage() { const [error, setError] = useState(''); const [currentPage, setCurrentPage] = useState(1); const [totalUsers, setTotalUsers] = useState(0); + const [activeFilter, setActiveFilter] = useState('ALL'); const limit = 10; useEffect(() => { fetchUsers(); - }, [currentPage]); + }, [currentPage, activeFilter]); const fetchUsers = async () => { setIsLoading(true); setError(''); try { - const response = await usersService.getUsers({ page: currentPage, limit }); + const filters: { page: number; limit: number; role?: string } = { page: currentPage, limit }; + if (activeFilter !== 'ALL') { + filters.role = activeFilter; + } + const response = await usersService.getUsers(filters); setUsers(response.users || []); setTotalUsers(response.total || 0); } catch (err) { @@ -35,6 +49,11 @@ export default function UsersPage() { } }; + const handleFilterChange = (filter: RoleFilter) => { + setActiveFilter(filter); + setCurrentPage(1); // Reset to first page when filter changes + }; + const totalPages = Math.ceil(totalUsers / limit); return ( @@ -49,7 +68,22 @@ export default function UsersPage() {
-

All Users

+ {/* Filter Tabs */} +
+ {roleFilters.map((filter) => ( + + ))} +