diff options
| author | Shkumbin Hasani <[email protected]> | 2026-01-05 01:46:23 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-04 18:46:23 -0600 |
| commit | e93699b741216f44be81a4a98e63e21ee8f15b03 (patch) | |
| tree | 9010d33a78cbd69f2adffd63dac15ff47c4dea4a | |
| parent | 9ac00f55bcf905d19745bd7580f37a1141f858c9 (diff) | |
| download | opencode-e93699b741216f44be81a4a98e63e21ee8f15b03.tar.gz opencode-e93699b741216f44be81a4a98e63e21ee8f15b03.zip | |
perf: optimize model dialog visibility lookups (#6791)
| -rw-r--r-- | packages/app/src/context/local.tsx | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx index 5a4f0fa0d..a6c0dccb6 100644 --- a/packages/app/src/context/local.tsx +++ b/packages/app/src/context/local.tsx @@ -160,6 +160,16 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ ), ) + const latestSet = createMemo(() => new Set(latest().map((x) => `${x.providerID}:${x.modelID}`))) + + const userVisibilityMap = createMemo(() => { + const map = new Map<string, "show" | "hide">() + for (const item of store.user) { + map.set(`${item.providerID}:${item.modelID}`, item.visibility) + } + return map + }) + const list = createMemo(() => available().map((m) => ({ ...m, @@ -264,12 +274,9 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ }) }, visible(model: ModelKey) { - const user = store.user.find((x) => x.modelID === model.modelID && x.providerID === model.providerID) - return ( - user?.visibility !== "hide" && - (latest().find((x) => x.modelID === model.modelID && x.providerID === model.providerID) || - user?.visibility === "show") - ) + const key = `${model.providerID}:${model.modelID}` + const visibility = userVisibilityMap().get(key) + return visibility !== "hide" && (latestSet().has(key) || visibility === "show") }, setVisibility(model: ModelKey, visible: boolean) { updateVisibility(model, visible ? "show" : "hide") |
