diff --git a/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js b/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js index d79cdc85..15096050 100644 --- a/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +++ b/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js @@ -71,10 +71,15 @@ export default function ConnectionRow({ connection, proxyPools, isOAuth, isFirst const isCookieConnection = rowAuthType === "cookie"; const authIcon = isCookieConnection ? "cookie" : isOAuthConnection ? "lock" : "key"; const authLabel = isOAuthConnection ? "OAuth" : isCookieConnection ? "Cookie" : "API Key"; - const isEmail = (v) => typeof v === "string" && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v); - const displayName = isOAuthConnection - ? (isEmail(connection.email) ? connection.email : (isEmail(connection.name) ? connection.name : (connection.name || connection.email || connection.displayName || "OAuth Account"))) - : (connection.name || connection.email || connection.displayName || "API Key"); + const displayName = connection.name?.trim() + || connection.email?.trim() + || connection.displayName?.trim() + || (isOAuthConnection ? "OAuth Account" : isCookieConnection ? "Cookie Account" : "API Key"); + const secondaryDisplayName = connection.name?.trim() && connection.email?.trim() && connection.name.trim() !== connection.email.trim() + ? connection.email.trim() + : connection.name?.trim() && connection.displayName?.trim() && connection.name.trim() !== connection.displayName.trim() + ? connection.displayName.trim() + : null; // Use useState + useEffect for impure Date.now() to avoid calling during render const [isCooldown, setIsCooldown] = useState(false); @@ -152,6 +157,9 @@ export default function ConnectionRow({ connection, proxyPools, isOAuth, isFirst

{displayName}

+ {secondaryDisplayName && ( +

{secondaryDisplayName}

+ )}
{connection.isActive === false ? "disabled" : (effectiveStatus || "Unknown")} diff --git a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js index 70875e4e..f0e163ac 100644 --- a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +++ b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js @@ -57,6 +57,18 @@ function kiroMethodLabel(conn) { return conn.authType === "api_key" ? "API Key" : "OAuth"; } +function getConnectionSecondaryLabel(connection) { + if (connection.name?.trim() && connection.email?.trim() && connection.name.trim() !== connection.email.trim()) { + return connection.email.trim(); + } + + if (connection.name?.trim() && connection.displayName?.trim() && connection.name.trim() !== connection.displayName.trim()) { + return connection.displayName.trim(); + } + + return null; +} + // Region is stored for builder-id/idc/api_key flows; social and imported flows // omit it, so fall back to the region segment of the profileArn // (arn:aws:codewhisperer::...). @@ -918,6 +930,11 @@ export default function ProviderLimits() { {getConnectionLabel(conn)}

) : null} + {getConnectionSecondaryLabel(conn) ? ( +

+ {getConnectionSecondaryLabel(conn)} +

+ ) : null} {isCodex && (

Reset eligible: {resetCreditCount} diff --git a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js index df5edab5..d6a4cf14 100644 --- a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js +++ b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js @@ -21,11 +21,10 @@ export const QUOTA_SORT_OPTIONS = [ // ─── Pure helpers ───────────────────────────────────────────────────────────── export function getConnectionLabel(connection) { - const isEmail = (value) => - typeof value === "string" && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value); - if (isEmail(connection.email)) return connection.email; - if (isEmail(connection.name)) return connection.name; - return connection.name; + return connection.name?.trim() + || connection.email?.trim() + || connection.displayName?.trim() + || null; } export function getConnectionQuotaRemaining(connection, quotaData) {