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 */}