|
7 | 7 | } from "@tabler/icons-react"; |
8 | 8 | import { useTranslation } from "react-i18next"; |
9 | 9 | import type { AcpProvider } from "@/shared/api/acp"; |
10 | | -import { getProviderInventory } from "@/features/providers/api/inventory"; |
11 | | -import { useProviderInventoryStore } from "@/features/providers/stores/providerInventoryStore"; |
12 | 10 | import { cn } from "@/shared/lib/cn"; |
13 | 11 | import { Button } from "@/shared/ui/button"; |
14 | 12 | import { Popover, PopoverContent, PopoverTrigger } from "@/shared/ui/popover"; |
@@ -325,10 +323,6 @@ export function AgentModelPicker({ |
325 | 323 | const { t } = useTranslation("chat"); |
326 | 324 | const [open, setOpen] = useState(false); |
327 | 325 | const [modelView, setModelView] = useState<ModelView>("recommended"); |
328 | | - const mergeInventoryEntries = useProviderInventoryStore( |
329 | | - (s) => s.mergeEntries, |
330 | | - ); |
331 | | - |
332 | 326 | const selectedAgentLabel = |
333 | 327 | agents.find((agent) => agent.id === selectedAgentId)?.label ?? |
334 | 328 | formatProviderLabel(selectedAgentId); |
@@ -358,32 +352,6 @@ export function AgentModelPicker({ |
358 | 352 | } |
359 | 353 | }, [open]); |
360 | 354 |
|
361 | | - useEffect(() => { |
362 | | - if (!open) { |
363 | | - return; |
364 | | - } |
365 | | - |
366 | | - let cancelled = false; |
367 | | - |
368 | | - const syncInventory = async () => { |
369 | | - try { |
370 | | - const entries = await getProviderInventory(); |
371 | | - if (cancelled) { |
372 | | - return; |
373 | | - } |
374 | | - mergeInventoryEntries(entries); |
375 | | - } catch (error) { |
376 | | - console.error("Failed to sync provider inventory from picker:", error); |
377 | | - } |
378 | | - }; |
379 | | - |
380 | | - void syncInventory(); |
381 | | - |
382 | | - return () => { |
383 | | - cancelled = true; |
384 | | - }; |
385 | | - }, [open, mergeInventoryEntries]); |
386 | | - |
387 | 355 | // When in "all" view, expand the popover to full width for the search experience. |
388 | 356 | const isAllView = modelView === "all"; |
389 | 357 |
|
@@ -512,9 +480,25 @@ export function AgentModelPicker({ |
512 | 480 | className="flex min-h-0 min-w-0 overflow-hidden p-1" |
513 | 481 | > |
514 | 482 | {modelsLoading ? ( |
515 | | - <div className="flex min-h-0 flex-1 items-center gap-2 px-2 py-2 text-sm text-muted-foreground"> |
516 | | - <Spinner className="size-4" /> |
517 | | - <span>{t("toolbar.loadingModels")}</span> |
| 483 | + <div className="flex min-h-0 min-w-0 flex-1 flex-col"> |
| 484 | + <div className="shrink-0 px-2 py-1.5 text-sm font-semibold"> |
| 485 | + {t("toolbar.model")} |
| 486 | + </div> |
| 487 | + {currentModelName || currentModelId ? ( |
| 488 | + <div className="space-y-0.5 p-1"> |
| 489 | + <PickerItem selected disabled> |
| 490 | + <div className="min-w-0 flex-1 truncate"> |
| 491 | + {currentModelName ?? currentModelId} |
| 492 | + </div> |
| 493 | + <Spinner className="size-3.5 shrink-0" /> |
| 494 | + </PickerItem> |
| 495 | + </div> |
| 496 | + ) : ( |
| 497 | + <div className="flex min-h-0 flex-1 items-center gap-2 px-2 py-2 text-sm text-muted-foreground"> |
| 498 | + <Spinner className="size-4" /> |
| 499 | + <span>{t("toolbar.loadingModels")}</span> |
| 500 | + </div> |
| 501 | + )} |
518 | 502 | </div> |
519 | 503 | ) : availableModels.length > 0 ? ( |
520 | 504 | modelView === "recommended" ? ( |
|
0 commit comments