summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/components
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-04-02 17:40:03 +0800
committerGitHub <[email protected]>2026-04-02 09:40:03 +0000
commit69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3 (patch)
tree832dc97a20d9e1ee0ac4fba7b9daa689691a18c3 /packages/app/src/components
parent327f62526a7f60c1c67ae017d1b105466bb730e9 (diff)
downloadopencode-69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3.tar.gz
opencode-69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3.zip
cleanup event listeners with solid-primitives/event-listener (#20619)
Diffstat (limited to 'packages/app/src/components')
-rw-r--r--packages/app/src/components/debug-bar.tsx4
-rw-r--r--packages/app/src/components/prompt-input/attachments.ts15
-rw-r--r--packages/app/src/components/settings-keybinds.tsx4
3 files changed, 9 insertions, 14 deletions
diff --git a/packages/app/src/components/debug-bar.tsx b/packages/app/src/components/debug-bar.tsx
index f4b7a1bc0..11f9f59e4 100644
--- a/packages/app/src/components/debug-bar.tsx
+++ b/packages/app/src/components/debug-bar.tsx
@@ -1,6 +1,7 @@
import { useIsRouting, useLocation } from "@solidjs/router"
import { batch, createEffect, onCleanup, onMount } from "solid-js"
import { createStore } from "solid-js/store"
+import { makeEventListener } from "@solid-primitives/event-listener"
import { Tooltip } from "@opencode-ai/ui/tooltip"
import { useLanguage } from "@/context/language"
@@ -349,13 +350,12 @@ export function DebugBar() {
syncHeap()
start()
- document.addEventListener("visibilitychange", vis)
+ makeEventListener(document, "visibilitychange", vis)
onCleanup(() => {
if (one !== 0) cancelAnimationFrame(one)
if (two !== 0) cancelAnimationFrame(two)
stop()
- document.removeEventListener("visibilitychange", vis)
for (const ob of obs) ob.disconnect()
})
})
diff --git a/packages/app/src/components/prompt-input/attachments.ts b/packages/app/src/components/prompt-input/attachments.ts
index fa9930f68..f12a4210c 100644
--- a/packages/app/src/components/prompt-input/attachments.ts
+++ b/packages/app/src/components/prompt-input/attachments.ts
@@ -1,4 +1,5 @@
-import { onCleanup, onMount } from "solid-js"
+import { onMount } from "solid-js"
+import { makeEventListener } from "@solid-primitives/event-listener"
import { showToast } from "@opencode-ai/ui/toast"
import { usePrompt, type ContentPart, type ImageAttachmentPart } from "@/context/prompt"
import { useLanguage } from "@/context/language"
@@ -181,15 +182,9 @@ export function createPromptAttachments(input: PromptAttachmentsInput) {
}
onMount(() => {
- document.addEventListener("dragover", handleGlobalDragOver)
- document.addEventListener("dragleave", handleGlobalDragLeave)
- document.addEventListener("drop", handleGlobalDrop)
- })
-
- onCleanup(() => {
- document.removeEventListener("dragover", handleGlobalDragOver)
- document.removeEventListener("dragleave", handleGlobalDragLeave)
- document.removeEventListener("drop", handleGlobalDrop)
+ makeEventListener(document, "dragover", handleGlobalDragOver)
+ makeEventListener(document, "dragleave", handleGlobalDragLeave)
+ makeEventListener(document, "drop", handleGlobalDrop)
})
return {
diff --git a/packages/app/src/components/settings-keybinds.tsx b/packages/app/src/components/settings-keybinds.tsx
index 7e2a48110..7d2dfaa63 100644
--- a/packages/app/src/components/settings-keybinds.tsx
+++ b/packages/app/src/components/settings-keybinds.tsx
@@ -1,5 +1,6 @@
import { Component, For, Show, createMemo, onCleanup, onMount } from "solid-js"
import { createStore } from "solid-js/store"
+import { makeEventListener } from "@solid-primitives/event-listener"
import { Button } from "@opencode-ai/ui/button"
import { Icon } from "@opencode-ai/ui/icon"
import { IconButton } from "@opencode-ai/ui/icon-button"
@@ -250,8 +251,7 @@ function useKeyCapture(input: {
input.stop()
}
- document.addEventListener("keydown", handle, true)
- onCleanup(() => document.removeEventListener("keydown", handle, true))
+ makeEventListener(document, "keydown", handle, { capture: true })
})
}