diff --git a/src/main.js b/src/main.js index c8a2db7..c15aadf 100644 --- a/src/main.js +++ b/src/main.js @@ -22,9 +22,13 @@ import { showInfoMessage } from "./utils/messages.js"; import { ConfigService } from "./services/configService.js"; import { openCodexApp } from "./services/codexapp.js"; +import { UiService } from "./services/uiservice.js"; +import { FsService } from "./services/fsService.js"; import { MainMenu } from "./ui/mainmenu.js"; import { InstallMenu } from "./ui/installmenu.js"; -import { UiService } from "./services/uiservice.js"; +import { ConfigMenu } from "./ui/configmenu.js"; +import { PathSelector } from "./utils/pathSelector.js"; +import { NumberSelector } from "./utils/numberSelector.js"; async function showNavigationMenu() { console.log("\n"); @@ -91,8 +95,12 @@ export async function main() { const configService = new ConfigService(); const uiService = new UiService(); + const fsService = new FsService(); + const pathSelector = new PathSelector(uiService, fsService); + const numberSelector = new NumberSelector(uiService); const installMenu = new InstallMenu(uiService, configService); - const mainMenu = new MainMenu(uiService, installMenu); + const configMenu = new ConfigMenu(uiService, configService, pathSelector, numberSelector) + const mainMenu = new MainMenu(uiService, installMenu, configMenu); await mainMenu.show(); return; diff --git a/src/ui/configmenu.js b/src/ui/configmenu.js index c884412..1d55340 100644 --- a/src/ui/configmenu.js +++ b/src/ui/configmenu.js @@ -21,7 +21,7 @@ export class ConfigMenu { action: this.editLogsDir, }, { - label: `Storage quota = ${bytesAmountToString(this.config.storageQuota)}`, + label: `Storage quota = ${this.bytesAmountToString(this.config.storageQuota)}`, action: this.editStorageQuota, }, { diff --git a/src/ui/mainmenu.js b/src/ui/mainmenu.js index 867c392..817ac54 100644 --- a/src/ui/mainmenu.js +++ b/src/ui/mainmenu.js @@ -1,7 +1,8 @@ export class MainMenu { - constructor(uiService, installMenu) { + constructor(uiService, installMenu, configMenu) { this.ui = uiService; this.installMenu = installMenu; + this.configMenu = configMenu; this.running = true; } @@ -22,6 +23,10 @@ export class MainMenu { label: "Install Codex", action: this.installMenu.show, }, + { + label: "Configure Codex", + action: this.configMenu.show, + }, { label: "Exit", action: this.closeMainMenu, diff --git a/src/ui/mainmenu.test.js b/src/ui/mainmenu.test.js index 249a6c7..d0de034 100644 --- a/src/ui/mainmenu.test.js +++ b/src/ui/mainmenu.test.js @@ -12,10 +12,14 @@ describe("mainmenu", () => { show: vi.fn(), }; + const mockConfigMenu = { + show: vi.fn(), + } + beforeEach(() => { vi.resetAllMocks(); - mainmenu = new MainMenu(mockUiService, mockInstallMenu); + mainmenu = new MainMenu(mockUiService, mockInstallMenu, mockConfigMenu); // Presents test getting stuck in main loop. const originalPrompt = mainmenu.promptMainMenu; @@ -36,6 +40,7 @@ describe("mainmenu", () => { "Select an option", [ { label: "Install Codex", action: mockInstallMenu.show }, + { label: "Configure Codex", action: mockConfigMenu.show }, { label: "Exit", action: mainmenu.closeMainMenu }, ], );