From 7ba6b91db4f111e556d2f718acc791335e84ec03 Mon Sep 17 00:00:00 2001 From: shrimbly Date: Mon, 2 Mar 2026 20:49:11 +1300 Subject: [PATCH] feat(15-01): filter provider icons in ModelSearchDialog to available providers - Gemini and fal.ai always shown (always-available providers) - Replicate, Kie.ai, WaveSpeed icons only shown when API key is configured - Reset provider filter to "all" if selected provider becomes unavailable - Fix WaveSpeed active color from orange to purple (matching its badge color) Co-Authored-By: Claude Opus 4.6 --- src/components/modals/ModelSearchDialog.tsx | 138 ++++++++++++-------- 1 file changed, 82 insertions(+), 56 deletions(-) diff --git a/src/components/modals/ModelSearchDialog.tsx b/src/components/modals/ModelSearchDialog.tsx index 2ba996ed..2ddcf994 100644 --- a/src/components/modals/ModelSearchDialog.tsx +++ b/src/components/modals/ModelSearchDialog.tsx @@ -405,6 +405,22 @@ export function ModelSearchDialog({ } }; + // Compute which providers are available based on API keys + const availableProviders = useMemo(() => { + const providers = new Set(["gemini", "fal"]); // Always available + if (replicateApiKey) providers.add("replicate"); + if (kieApiKey) providers.add("kie"); + if (wavespeedApiKey) providers.add("wavespeed"); + return providers; + }, [replicateApiKey, kieApiKey, wavespeedApiKey]); + + // Reset provider filter if current selection becomes unavailable + useEffect(() => { + if (providerFilter !== "all" && !availableProviders.has(providerFilter as ProviderType)) { + setProviderFilter("all"); + } + }, [providerFilter, availableProviders]); + // Filter recent models by capability const filteredRecentModels = useMemo(() => { return recentModels @@ -585,7 +601,7 @@ export function ModelSearchDialog({ /> - {/* Provider Filter - Icon Buttons */} + {/* Provider Filter - Icon Buttons (only show available providers) */}
- - - - - + {availableProviders.has("gemini") && ( + + )} + {availableProviders.has("replicate") && ( + + )} + {availableProviders.has("fal") && ( + + )} + {availableProviders.has("kie") && ( + + )} + {availableProviders.has("wavespeed") && ( + + )}
{/* Capability Filter */}