MCPcopy Create free account
hub / github.com/IgorWarzocha/howcode / loadPiThemeStateInHost

Function loadPiThemeStateInHost

desktop/runtime-host/theme-service.ts:149–211  ·  view source on GitHub ↗
(
  projectPath?: string | undefined | null | undefined,
)

Source from the content-addressed store, hash-verified

147}
148
149export async function loadPiThemeStateInHost(
150 projectPath?: string | undefined | null | undefined,
151): Promise<PiThemeState> {
152 const { SettingsManager, DefaultResourceLoader, getAgentDir } = await getPiModule()
153 const cwd = projectPath ?? getDesktopWorkingDirectory()
154 const agentDir = getAgentDir()
155 const settingsManager = SettingsManager.create(cwd, agentDir)
156 const resourceLoader = new DefaultResourceLoader({
157 cwd,
158 agentDir,
159 settingsManager,
160 })
161 await resourceLoader.reload()
162
163 const themesResult = resourceLoader.getThemes()
164 const {
165 getResolvedThemeColors,
166 getThemeExportColors,
167 isLightTheme,
168 loadThemeFromPath,
169 setRegisteredThemes,
170 } = await getThemeHelpers()
171 const bundled = loadBundledThemes(loadThemeFromPath)
172 setRegisteredThemes([...bundled.themes, ...(themesResult.themes as unknown[])])
173
174 const selectedTheme = settingsManager.getTheme() ?? defaultPiSettings.theme
175 const themeEntries = getThemeEntries(bundled.entries, themesResult)
176
177 try {
178 const colors = getResolvedThemeColors(selectedTheme)
179 const exportColors = getThemeExportColors(selectedTheme)
180 return {
181 selectedTheme,
182 themes: themeEntries,
183 colors,
184 exportColors,
185 isLight: isResolvedLightTheme(selectedTheme, colors, exportColors, isLightTheme),
186 diagnostics: themesResult.diagnostics
187 .map(asDiagnostic)
188 .filter(Boolean)
189 .concat(bundled.diagnostics) as PiThemeState['diagnostics'],
190 }
191 } catch (error) {
192 const fallbackTheme = themeEntries.some((theme) => theme.name === defaultPiSettings.theme)
193 ? defaultPiSettings.theme
194 : 'dark'
195 return {
196 selectedTheme: fallbackTheme,
197 themes: themeEntries,
198 colors: getResolvedThemeColors(fallbackTheme),
199 exportColors: getThemeExportColors(fallbackTheme),
200 isLight: fallbackTheme === 'light',
201 diagnostics: [
202 ...themesResult.diagnostics.map(asDiagnostic).filter(Boolean),
203 ...bundled.diagnostics,
204 {
205 type: 'warning',
206 message: error instanceof Error ? error.message : String(error),

Callers 1

isKnownThemeFunction · 0.90

Calls 6

getPiModuleFunction · 0.90
getThemeHelpersFunction · 0.85
loadBundledThemesFunction · 0.85
getThemeEntriesFunction · 0.85
isResolvedLightThemeFunction · 0.85

Tested by

no test coverage detected