mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 18:01:22 +00:00
fix(coding-agent): sync extension theme changes to session settings (#1483)
This commit is contained in:
parent
34f841f036
commit
6137de9ce7
2 changed files with 51 additions and 0 deletions
|
|
@ -1427,6 +1427,9 @@ export class InteractiveMode {
|
|||
}
|
||||
const result = setTheme(themeOrName, true);
|
||||
if (result.success) {
|
||||
if (this.settingsManager.getTheme() !== themeOrName) {
|
||||
this.settingsManager.setTheme(themeOrName);
|
||||
}
|
||||
this.ui.requestRender();
|
||||
}
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -60,6 +60,54 @@ describe("InteractiveMode.showStatus", () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe("InteractiveMode.createExtensionUIContext setTheme", () => {
|
||||
test("persists theme changes to settings manager", () => {
|
||||
initTheme("dark");
|
||||
|
||||
let currentTheme = "dark";
|
||||
const settingsManager = {
|
||||
getTheme: vi.fn(() => currentTheme),
|
||||
setTheme: vi.fn((theme: string) => {
|
||||
currentTheme = theme;
|
||||
}),
|
||||
};
|
||||
const fakeThis: any = {
|
||||
session: { settingsManager },
|
||||
settingsManager,
|
||||
ui: { requestRender: vi.fn() },
|
||||
};
|
||||
|
||||
const uiContext = (InteractiveMode as any).prototype.createExtensionUIContext.call(fakeThis);
|
||||
const result = uiContext.setTheme("light");
|
||||
|
||||
expect(result.success).toBe(true);
|
||||
expect(settingsManager.setTheme).toHaveBeenCalledWith("light");
|
||||
expect(currentTheme).toBe("light");
|
||||
expect(fakeThis.ui.requestRender).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
test("does not persist invalid theme names", () => {
|
||||
initTheme("dark");
|
||||
|
||||
const settingsManager = {
|
||||
getTheme: vi.fn(() => "dark"),
|
||||
setTheme: vi.fn(),
|
||||
};
|
||||
const fakeThis: any = {
|
||||
session: { settingsManager },
|
||||
settingsManager,
|
||||
ui: { requestRender: vi.fn() },
|
||||
};
|
||||
|
||||
const uiContext = (InteractiveMode as any).prototype.createExtensionUIContext.call(fakeThis);
|
||||
const result = uiContext.setTheme("__missing_theme__");
|
||||
|
||||
expect(result.success).toBe(false);
|
||||
expect(settingsManager.setTheme).not.toHaveBeenCalled();
|
||||
expect(fakeThis.ui.requestRender).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe("InteractiveMode.showLoadedResources", () => {
|
||||
beforeAll(() => {
|
||||
initTheme("dark");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue