refactor: streamline user status handling by using backend status directly

This commit is contained in:
seaznCode 2025-11-30 13:29:56 +01:00
parent 23691ec50c
commit c94b7a91e8

View File

@ -98,15 +98,9 @@ export default function AdminUserManagementPage() {
const companyName = u.company_name || '' const companyName = u.company_name || ''
const fullName = u.user_type === 'company' ? companyName : `${firstName} ${lastName}` const fullName = u.user_type === 'company' ? companyName : `${firstName} ${lastName}`
// Map backend status to frontend status // Use backend status directly for filtering
// Backend status can be: 'pending', 'active', 'suspended', 'inactive', 'archived' const allowedStatuses: UserStatus[] = ['pending','active','suspended','inactive','archived']
// is_admin_verified: 1 = verified by admin, 0 = not verified const userStatus: UserStatus = (allowedStatuses.includes(u.status as UserStatus) ? u.status : 'pending') as UserStatus
const userStatus: UserStatus = u.status === 'archived' ? 'archived' :
u.status === 'inactive' ? 'inactive' :
u.status === 'suspended' ? 'suspended' :
u.is_admin_verified === 1 ? 'active' :
u.status === 'pending' ? 'pending' :
'pending' // default fallback
return ( return (
(fType === 'all' || u.user_type === fType) && (fType === 'all' || u.user_type === fType) &&
@ -130,8 +124,8 @@ export default function AdminUserManagementPage() {
admins: allUsers.filter(u => u.role === 'admin').length, admins: allUsers.filter(u => u.role === 'admin').length,
personal: allUsers.filter(u => u.user_type === 'personal').length, personal: allUsers.filter(u => u.user_type === 'personal').length,
company: allUsers.filter(u => u.user_type === 'company').length, company: allUsers.filter(u => u.user_type === 'company').length,
active: allUsers.filter(u => u.is_admin_verified === 1).length, active: allUsers.filter(u => u.status === 'active').length,
pending: allUsers.filter(u => u.is_admin_verified !== 1).length, pending: allUsers.filter(u => u.status === 'pending').length,
}), [allUsers]) }), [allUsers])
// Show loading during SSR/initial client render // Show loading during SSR/initial client render
@ -183,12 +177,9 @@ export default function AdminUserManagementPage() {
'First Name','Last Name','Company Name','Created At','Last Login At' 'First Name','Last Name','Company Name','Created At','Last Login At'
] ]
const rows = filtered.map(u => { const rows = filtered.map(u => {
// Map backend to friendly values // Use backend status directly
const userStatus: UserStatus = u.status === 'archived' ? 'archived' : const allowedStatuses: UserStatus[] = ['active','pending','suspended','inactive','archived']
u.status === 'inactive' ? 'inactive' : const userStatus: UserStatus = (allowedStatuses.includes(u.status as UserStatus) ? u.status : 'pending') as UserStatus
u.status === 'suspended' ? 'suspended' :
u.is_admin_verified === 1 ? 'active' :
u.status === 'pending' ? 'pending' : 'pending'
return [ return [
u.id, u.id,
u.email, u.email,
@ -436,13 +427,9 @@ export default function AdminUserManagementPage() {
? (u.company_name?.[0] || 'C').toUpperCase() ? (u.company_name?.[0] || 'C').toUpperCase()
: `${u.first_name?.[0] || 'U'}${u.last_name?.[0] || 'U'}`.toUpperCase() : `${u.first_name?.[0] || 'U'}${u.last_name?.[0] || 'U'}`.toUpperCase()
// Map backend status to frontend status for display // Use backend status directly for display to avoid desync
const userStatus: UserStatus = u.status === 'archived' ? 'archived' : const allowedStatuses: UserStatus[] = ['active','pending','suspended','inactive','archived']
u.status === 'inactive' ? 'inactive' : const userStatus: UserStatus = (allowedStatuses.includes(u.status as UserStatus) ? u.status : 'pending') as UserStatus
u.status === 'suspended' ? 'suspended' :
u.is_admin_verified === 1 ? 'active' :
u.status === 'pending' ? 'pending' :
'pending' // default fallback
const createdDate = new Date(u.created_at).toLocaleDateString() const createdDate = new Date(u.created_at).toLocaleDateString()
const lastLoginDate = u.last_login_at ? new Date(u.last_login_at).toLocaleDateString() : 'Never' const lastLoginDate = u.last_login_at ? new Date(u.last_login_at).toLocaleDateString() : 'Never'