|
1 | 1 | import { createSimpleContext } from "@opencode-ai/ui/context" |
2 | 2 | import { base64Encode } from "@opencode-ai/core/util/encode" |
3 | 3 | import { useParams } from "@solidjs/router" |
4 | | -import { batch, createEffect, createMemo } from "solid-js" |
| 4 | +import { batch, createEffect, createMemo, startTransition } from "solid-js" |
5 | 5 | import { createStore } from "solid-js/store" |
6 | 6 | import { useModels } from "@/context/models" |
7 | 7 | import { useProviders } from "@/hooks/use-providers" |
@@ -294,19 +294,21 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ |
294 | 294 | model.set({ providerID: entry.provider.id, modelID: entry.id }) |
295 | 295 | }, |
296 | 296 | set(item: ModelKey | undefined, options?: { recent?: boolean }) { |
297 | | - batch(() => { |
298 | | - setStore("last", { |
299 | | - type: "model", |
300 | | - agent: agent.current()?.name, |
301 | | - model: item ?? null, |
302 | | - variant: selected(), |
| 297 | + startTransition(() => |
| 298 | + batch(() => { |
| 299 | + setStore("last", { |
| 300 | + type: "model", |
| 301 | + agent: agent.current()?.name, |
| 302 | + model: item ?? null, |
| 303 | + variant: selected(), |
| 304 | + }) |
| 305 | + write({ model: item }) |
| 306 | + if (!item) return |
| 307 | + models.setVisibility(item, true) |
| 308 | + if (!options?.recent) return |
| 309 | + models.recent.push(item) |
303 | 310 | }) |
304 | | - write({ model: item }) |
305 | | - if (!item) return |
306 | | - models.setVisibility(item, true) |
307 | | - if (!options?.recent) return |
308 | | - models.recent.push(item) |
309 | | - }) |
| 311 | + ) |
310 | 312 | }, |
311 | 313 | visible(item: ModelKey) { |
312 | 314 | return models.visible(item) |
@@ -335,19 +337,21 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ |
335 | 337 | return Object.keys(item.variants) |
336 | 338 | }, |
337 | 339 | set(value: string | undefined) { |
338 | | - batch(() => { |
339 | | - const model = current() |
340 | | - setStore("last", { |
341 | | - type: "variant", |
342 | | - agent: agent.current()?.name, |
343 | | - model: model ? { providerID: model.provider.id, modelID: model.id } : null, |
344 | | - variant: value ?? null, |
| 340 | + startTransition(() => |
| 341 | + batch(() => { |
| 342 | + const model = current() |
| 343 | + setStore("last", { |
| 344 | + type: "variant", |
| 345 | + agent: agent.current()?.name, |
| 346 | + model: model ? { providerID: model.provider.id, modelID: model.id } : null, |
| 347 | + variant: value ?? null, |
| 348 | + }) |
| 349 | + write({ variant: value ?? null }) |
| 350 | + if (model) { |
| 351 | + models.variant.set({ providerID: model.provider.id, modelID: model.id }, value ?? undefined) |
| 352 | + } |
345 | 353 | }) |
346 | | - write({ variant: value ?? null }) |
347 | | - if (model) { |
348 | | - models.variant.set({ providerID: model.provider.id, modelID: model.id }, value ?? undefined) |
349 | | - } |
350 | | - }) |
| 354 | + ) |
351 | 355 | }, |
352 | 356 | cycle() { |
353 | 357 | const items = this.list() |
|
0 commit comments