(mode: "dark" | "light" = store.mode)
| 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 |
no test coverage detected