refactor: separate config service

This commit is contained in:
2026-07-18 13:29:38 +05:00
parent 1fbf020c80
commit 70968c450e
8 changed files with 193 additions and 32 deletions
+15 -20
View File
@@ -1,8 +1,8 @@
import * as vscode from "vscode";
import { changeStatus } from "@/commands/changeStatus";
import { createTask } from "@/commands/createTask";
import { listLocatedTasks } from "@/commands/listLocatedTasks";
import { resolveTaskLocations } from "@/commands/resolveTaskLocations";
import { appError, AppErrorVariant } from "@/error";
import { buildKanbanBoard } from "@/kanban/buildKanbanBoard";
import {
parseKanbanInboundMessage,
@@ -10,21 +10,23 @@ import {
type KanbanScopeFilter,
} from "@/kanban/messages";
import { KanbanOutboundMessage } from "@/kanban/outboundMessages";
import { appError, AppErrorVariant } from "@/error";
import { getProjectConfigPath } from "@/model/projectConfig";
import { LocatedTask, TaskLocation, TaskScope } from "@/model/taskLocation";
import { TaskStatus, TASK_STATUS_META, TASK_STATUS_ORDER } from "@/model/taskStatus";
import { IConfigProvider, IFileSystem, ITaskRepository } from "@/ports";
import { loadProjectConfig } from "@/commands/loadProjectConfig";
import { serializeProjectConfig } from "@/projectConfig/serializeProjectConfig";
import {
TASK_STATUS_META,
TASK_STATUS_ORDER,
TaskStatus,
} from "@/model/taskStatus";
import { IConfigProvider, ITaskRepository } from "@/ports";
import { ProjectConfigService } from "@/projectConfig/ProjectConfigService";
import { presentError } from "@/ui/presentError";
import { TASK_SCOPE_LABELS } from "@/ui/taskLabels";
import * as vscode from "vscode";
import { createKanbanNonce, getTaskKanbanHtml } from "./taskKanbanHtml";
export type TaskKanbanDeps = {
repo: ITaskRepository;
config: IConfigProvider;
fs: IFileSystem;
configService: ProjectConfigService;
onTasksMutated?: () => void;
};
@@ -107,21 +109,14 @@ export class TaskKanbanPanel {
}
async #loadShownHiddenColumns(): Promise<void> {
const folderPath = this.#deps.config.getProjectTaskPath();
const loaded = await loadProjectConfig(this.#deps.fs, folderPath);
if (loaded.isErr()) return;
this.#shownHiddenColumns = loaded.value.config.shownHiddenColumns as TaskStatus[];
const config = await this.#deps.configService.load();
this.#shownHiddenColumns = config.shownHiddenColumns;
}
async #saveShownHiddenColumns(): Promise<void> {
const folderPath = this.#deps.config.getProjectTaskPath();
if (!folderPath) return;
const loaded = await loadProjectConfig(this.#deps.fs, folderPath);
if (loaded.isErr()) return;
const config = { ...loaded.value.config, shownHiddenColumns: this.#shownHiddenColumns };
const content = serializeProjectConfig(config);
const path = getProjectConfigPath(folderPath);
await this.#deps.fs.writeFile(path, content);
await this.#deps.configService.merge({
shownHiddenColumns: this.#shownHiddenColumns,
});
}
async #onMessage(raw: unknown): Promise<void> {