MCPcopy
hub / github.com/anomalyco/opencode / resolveSystemTheme

Function resolveSystemTheme

packages/tui/src/context/theme.tsx:155–179  ·  view source on GitHub ↗
(mode: "dark" | "light" = store.mode)

Source from the content-addressed store, hash-verified

153 let systemThemeMode: "dark" | "light" | undefined
154 let hasResolvedSystemTheme = false
155 function resolveSystemTheme(mode: "dark" | "light" = store.mode) {
156 return renderer
157 .getPalette({ size: 16 })
158 .then((colors: TerminalColors) => {
159 if (!colors.palette[0]) {
160 if (hasResolvedSystemTheme) return
161 setSystemTheme(undefined)
162 if (store.active === "system") setStore("active", "opencode")
163 return
164 }
165 const next = store.lock ?? terminalMode(colors) ?? mode
166 if (store.mode !== next) setStore("mode", next)
167 const signature = JSON.stringify(colors)
168 hasResolvedSystemTheme = true
169 if (store.themes.system && systemThemeSignature === signature && systemThemeMode === next) return
170 systemThemeSignature = signature
171 systemThemeMode = next
172 setSystemTheme(generateSystem(colors, next))
173 })
174 .catch(() => {
175 if (hasResolvedSystemTheme) return
176 setSystemTheme(undefined)
177 if (store.active === "system") setStore("active", "opencode")
178 })
179 }
180
181 let systemRefreshRunning = false
182 let systemRefreshQueued = false

Callers 2

theme.tsxFile · 0.85
refreshSystemThemeFunction · 0.85

Calls 4

setSystemThemeFunction · 0.90
terminalModeFunction · 0.90
generateSystemFunction · 0.90
setStoreFunction · 0.85

Tested by

no test coverage detected