|
|
@@ -40,6 +40,7 @@ import { useRenderer } from "@opentui/solid"
|
|
|
import { createStore, produce } from "solid-js/store"
|
|
|
import { Global } from "@/global"
|
|
|
import { Filesystem } from "@/util/filesystem"
|
|
|
+import { useSDK } from "./sdk"
|
|
|
|
|
|
type ThemeColors = {
|
|
|
primary: RGBA
|
|
|
@@ -310,32 +311,42 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
|
|
|
})
|
|
|
})
|
|
|
|
|
|
- const renderer = useRenderer()
|
|
|
- renderer
|
|
|
- .getPalette({
|
|
|
- size: 16,
|
|
|
- })
|
|
|
- .then((colors) => {
|
|
|
- if (!colors.palette[0]) {
|
|
|
- if (store.active === "system") {
|
|
|
- setStore(
|
|
|
- produce((draft) => {
|
|
|
- draft.active = "opencode"
|
|
|
- draft.ready = true
|
|
|
- }),
|
|
|
- )
|
|
|
- }
|
|
|
- return
|
|
|
- }
|
|
|
- setStore(
|
|
|
- produce((draft) => {
|
|
|
- draft.themes.system = generateSystem(colors, store.mode)
|
|
|
+ function resolveSystemTheme() {
|
|
|
+ console.log("resolved system theme")
|
|
|
+ renderer
|
|
|
+ .getPalette({
|
|
|
+ size: 16,
|
|
|
+ })
|
|
|
+ .then((colors) => {
|
|
|
+ if (!colors.palette[0]) {
|
|
|
if (store.active === "system") {
|
|
|
- draft.ready = true
|
|
|
+ setStore(
|
|
|
+ produce((draft) => {
|
|
|
+ draft.active = "opencode"
|
|
|
+ draft.ready = true
|
|
|
+ }),
|
|
|
+ )
|
|
|
}
|
|
|
- }),
|
|
|
- )
|
|
|
- })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ setStore(
|
|
|
+ produce((draft) => {
|
|
|
+ draft.themes.system = generateSystem(colors, store.mode)
|
|
|
+ if (store.active === "system") {
|
|
|
+ draft.ready = true
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ )
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ const renderer = useRenderer()
|
|
|
+ resolveSystemTheme()
|
|
|
+
|
|
|
+ const sdk = useSDK()
|
|
|
+ sdk.event.on("server.instance.disposed", () => {
|
|
|
+ resolveSystemTheme()
|
|
|
+ })
|
|
|
|
|
|
const values = createMemo(() => {
|
|
|
return resolveTheme(store.themes[store.active] ?? store.themes.opencode, store.mode)
|