summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorShkumbin Hasani <[email protected]>2026-01-05 01:46:23 +0100
committerGitHub <[email protected]>2026-01-04 18:46:23 -0600
commite93699b741216f44be81a4a98e63e21ee8f15b03 (patch)
tree9010d33a78cbd69f2adffd63dac15ff47c4dea4a
parent9ac00f55bcf905d19745bd7580f37a1141f858c9 (diff)
downloadopencode-e93699b741216f44be81a4a98e63e21ee8f15b03.tar.gz
opencode-e93699b741216f44be81a4a98e63e21ee8f15b03.zip
perf: optimize model dialog visibility lookups (#6791)
-rw-r--r--packages/app/src/context/local.tsx19
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")