diff --git a/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js b/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js
index 5ac6d557..16e45520 100644
--- a/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js
+++ b/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js
@@ -65,17 +65,23 @@ export default function APIPageClient({ isAdmin }) {
const fetchQuickStats = useCallback(async () => {
setQuickStatsLoading(true);
try {
- const [statsResponse, providersResponse] = await Promise.all([
- fetch("/api/usage/stats?period=today"),
- fetch("/api/providers/client?pageSize=500"),
- ]);
+ const statsRequest = fetch("/api/usage/stats?period=today");
+ const providersRequest = isAdmin ? fetch("/api/providers/client?pageSize=500") : null;
+ const statsResponse = await statsRequest;
if (!statsResponse.ok) throw new Error("Failed to fetch usage statistics");
const statsData = await statsResponse.json();
setQuickStats(statsData);
- if (providersResponse.ok) {
+ if (!providersRequest) {
+ setProviderSummary(null);
+ } else {
+ const providersResponse = await providersRequest;
+ if (!providersResponse.ok) {
+ setProviderSummary(null);
+ return;
+ }
const providersData = await providersResponse.json();
const connections = providersData.connections || [];
const activeConnections = connections.filter(
@@ -85,8 +91,6 @@ export default function APIPageClient({ isAdmin }) {
active: activeConnections.length,
total: providersData.pagination?.total ?? connections.length,
});
- } else {
- setProviderSummary(null);
}
} catch {
setQuickStats(null);
@@ -94,7 +98,7 @@ export default function APIPageClient({ isAdmin }) {
} finally {
setQuickStatsLoading(false);
}
- }, []);
+ }, [isAdmin]);
useEffect(() => {
const initialize = window.setTimeout(() => {
@@ -207,7 +211,7 @@ export default function APIPageClient({ isAdmin }) {
-
+
@@ -243,9 +247,9 @@ export default function APIPageClient({ isAdmin }) {
{copied ? "Value copied to clipboard." : ""}
{quickStatsLoading ? (
-
+
) : (
-
+
)}
{loadError && (
diff --git a/src/app/(dashboard)/dashboard/endpoint/components/QuickStatsBar.js b/src/app/(dashboard)/dashboard/endpoint/components/QuickStatsBar.js
index 07dbd303..0b622da6 100644
--- a/src/app/(dashboard)/dashboard/endpoint/components/QuickStatsBar.js
+++ b/src/app/(dashboard)/dashboard/endpoint/components/QuickStatsBar.js
@@ -47,11 +47,17 @@ const statDefinitions = [
},
];
-export function QuickStatsBarSkeleton() {
+function getVisibleStatDefinitions(isAdmin) {
+ return isAdmin ? statDefinitions : statDefinitions.filter((stat) => stat.key !== "providers");
+}
+
+export function QuickStatsBarSkeleton({ isAdmin = false }) {
+ const visibleStatDefinitions = getVisibleStatDefinitions(isAdmin);
+
return (
Loading today's gateway statistics.
- {statDefinitions.map((stat) => (
+ {visibleStatDefinitions.map((stat) => (
@@ -65,13 +71,14 @@ export function QuickStatsBarSkeleton() {
);
}
-export default function QuickStatsBar({ stats, providerSummary = null }) {
+export default function QuickStatsBar({ stats, providerSummary = null, isAdmin = false }) {
if (!stats) return null;
+ const visibleStatDefinitions = getVisibleStatDefinitions(isAdmin);
return (
Today's gateway overview
- {statDefinitions.map((stat) => (
+ {visibleStatDefinitions.map((stat) => (
{stat.icon}
{stat.label}
@@ -84,6 +91,7 @@ export default function QuickStatsBar({ stats, providerSummary = null }) {
}
QuickStatsBar.propTypes = {
+ isAdmin: PropTypes.bool,
stats: PropTypes.shape({
totalRequests: PropTypes.number,
totalPromptTokens: PropTypes.number,