fix(dashboard): ReferenceError getProviderLabel in RecentRequests
getProviderLabel was a useCallback inside the UsageStats component, but RecentRequests (a sibling module-level component) called it too, causing "getProviderLabel is not defined" at runtime. Extract a module-level resolveProviderLabel() (registry lookup by id/alias/display prefix) used by RecentRequests; keep the component-scoped getProviderLabel (which adds connected-provider nodeName/name lookup) for the main table render paths.
This commit is contained in:
@@ -4,11 +4,19 @@ import { useState, useEffect, useMemo, useCallback, useRef } from "react";
|
||||
import { useSearchParams, useRouter } from "next/navigation";
|
||||
import { FREE_PROVIDERS, AI_PROVIDERS, getProviderByAlias } from "@/shared/constants/providers";
|
||||
|
||||
// Resolve a provider key (built-in id, alias, or custom node id like
|
||||
// "openai-compatible-chat-096baf9a-...") to a human-friendly name.
|
||||
// Module-level so standalone components (RecentRequests) can use it too.
|
||||
function resolveProviderLabel(providerId) {
|
||||
if (!providerId) return "Unknown Provider";
|
||||
const known = getProviderByAlias(providerId) || AI_PROVIDERS[providerId] || FREE_PROVIDERS[providerId];
|
||||
return known?.name || known?.uiAlias || known?.alias || providerId;
|
||||
}
|
||||
|
||||
// Keep providers without serviceKinds (default LLM) or with "llm" in serviceKinds
|
||||
function isLLMProvider(id) {
|
||||
const p = AI_PROVIDERS[id];
|
||||
if (!p?.serviceKinds) return true;
|
||||
return p.serviceKinds.includes("llm");
|
||||
if (!p?.serviceKinds) return true; return p.serviceKinds.includes("llm");
|
||||
}
|
||||
import Badge from "./Badge";
|
||||
import Card from "./Card";
|
||||
@@ -104,7 +112,7 @@ function RecentRequests({ requests = [] }) {
|
||||
className="py-1.5 font-mono truncate max-w-[80px] text-text-muted"
|
||||
title={r.provider}
|
||||
>
|
||||
{getProviderLabel(r.provider) || "—"}
|
||||
{resolveProviderLabel(r.provider) || "—"}
|
||||
</td>
|
||||
<td className="py-1.5 text-right whitespace-nowrap">
|
||||
<span className="text-primary">
|
||||
@@ -313,13 +321,13 @@ export default function UsageStats({
|
||||
|
||||
// Resolve a provider key (built-in id, alias, or custom node id like
|
||||
// "openai-compatible-chat-096baf9a-...") to a human-friendly name.
|
||||
// Prefers the connected-providers state (nodeName > connection name)
|
||||
// and falls back to the module-level registry lookup.
|
||||
const getProviderLabel = useCallback((providerId) => {
|
||||
if (!providerId) return "Unknown Provider";
|
||||
const match = providers.find((p) => p.provider === providerId || p.id === providerId);
|
||||
if (match) return match.nodeName || match.name || providerId;
|
||||
// Fallback: known built-in provider (by id, alias, or display prefix)
|
||||
const known = getProviderByAlias(providerId) || AI_PROVIDERS[providerId] || FREE_PROVIDERS[providerId];
|
||||
return known?.name || known?.uiAlias || known?.alias || providerId;
|
||||
return resolveProviderLabel(providerId);
|
||||
}, [providers]);
|
||||
const [periodLocal, setPeriodLocal] = useState("today");
|
||||
const isInitialLoad = useRef(true);
|
||||
|
||||
Reference in New Issue
Block a user