refactor: separate config service
This commit is contained in:
@@ -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> {
|
||||
|
||||
Reference in New Issue
Block a user