diff --git a/adminfront/src/features/users/UserDetailPage.tsx b/adminfront/src/features/users/UserDetailPage.tsx index 38144170..35ff6068 100644 --- a/adminfront/src/features/users/UserDetailPage.tsx +++ b/adminfront/src/features/users/UserDetailPage.tsx @@ -95,7 +95,7 @@ import { resolvePersonalTenant } from "./utils/personalTenant"; type UserFormValues = Omit & { email: string; - metadata: Record> & { + metadata: Record | string[] | undefined> & { sub_email?: string[]; }; }; @@ -768,6 +768,7 @@ function UserDetailPage() { // Filter out undefined/null/empty strings from metadata const cleanMetadata = Object.fromEntries( Object.entries(data.metadata).map(([tenantId, fields]) => { + if (!fields || Array.isArray(fields)) return [tenantId, fields]; const cleanFields = Object.fromEntries( Object.entries(fields).filter( ([_, v]) => v !== undefined && v !== null && v !== "", @@ -786,7 +787,9 @@ function UserDetailPage() { // Parse sub_email let sub_email: string[] = []; - if (typeof rawSubEmail === "string" && rawSubEmail.trim() !== "") { + if (Array.isArray(rawSubEmail)) { + sub_email = rawSubEmail.filter(e => typeof e === 'string' && e.includes("@")); + } else if (typeof rawSubEmail === "string" && rawSubEmail.trim() !== "") { sub_email = rawSubEmail .split(/[;,\n\r\t]/) .map((e) => e.trim()) @@ -982,13 +985,13 @@ function UserDetailPage() { {user.email} - {user.metadata?.sub_email && + {Boolean(user.metadata?.sub_email && Array.isArray(user.metadata.sub_email) && - user.metadata.sub_email.length > 0 && ( + user.metadata.sub_email.length > 0) && (
- +{user.metadata.sub_email.length} + +{Array.isArray(user.metadata?.sub_email) ? user.metadata.sub_email.length : 0}
)}