diff options
| author | Brendan Allan <[email protected]> | 2026-04-02 17:40:03 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-02 09:40:03 +0000 |
| commit | 69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3 (patch) | |
| tree | 832dc97a20d9e1ee0ac4fba7b9daa689691a18c3 /packages/ui/src/theme | |
| parent | 327f62526a7f60c1c67ae017d1b105466bb730e9 (diff) | |
| download | opencode-69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3.tar.gz opencode-69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3.zip | |
cleanup event listeners with solid-primitives/event-listener (#20619)
Diffstat (limited to 'packages/ui/src/theme')
| -rw-r--r-- | packages/ui/src/theme/context.tsx | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/packages/ui/src/theme/context.tsx b/packages/ui/src/theme/context.tsx index 7d25ac397..5664eeebd 100644 --- a/packages/ui/src/theme/context.tsx +++ b/packages/ui/src/theme/context.tsx @@ -1,5 +1,6 @@ -import { createEffect, onCleanup, onMount } from "solid-js" +import { createEffect, onMount } from "solid-js" import { createStore } from "solid-js/store" +import { makeEventListener } from "@solid-primitives/event-listener" import { createSimpleContext } from "../context/helper" import oc2ThemeJson from "./themes/oc-2.json" import { resolveThemeVariant, themeToCss } from "./resolve" @@ -237,19 +238,15 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({ } } - if (typeof window === "object") { - window.addEventListener("storage", onStorage) - onCleanup(() => window.removeEventListener("storage", onStorage)) - } - onMount(() => { + makeEventListener(window, "storage", onStorage) + const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)") const onMedia = () => { if (store.colorScheme !== "system") return setStore("mode", getSystemMode()) } - mediaQuery.addEventListener("change", onMedia) - onCleanup(() => mediaQuery.removeEventListener("change", onMedia)) + makeEventListener(mediaQuery, "change", onMedia) const rawTheme = read(STORAGE_KEYS.THEME_ID) const savedTheme = normalize(rawTheme ?? props.defaultTheme) ?? "oc-2" |
