feat: add buttons - open task in dashboard, open dashboard

This commit is contained in:
2026-07-15 00:59:27 +05:00
parent beeb9dd7f9
commit 0454a32d8c
8 changed files with 130 additions and 26 deletions
+35
View File
@@ -8,6 +8,7 @@ import { appError, AppErrorVariant } from "@/error";
import { TaskLocation } from "@/model/taskLocation";
import { TaskStatus } from "@/model/task";
import { IConfigProvider, ITaskRepository } from "@/ports";
import { TaskDashboardPanel } from "@/views/taskDashboardPanel";
import { TaskTreeProvider } from "@/views/taskTreeProvider";
import { presentError } from "./presentError";
import { resolveTaskRef } from "./resolveTaskRef";
@@ -21,6 +22,14 @@ export type TaskCommandDeps = {
onTasksMutated?: () => void;
};
function dashboardDeps(deps: TaskCommandDeps) {
return {
repo: deps.repo,
config: deps.config,
onTasksMutated: () => deps.tree.refresh(),
};
}
function notifyMutated(deps: TaskCommandDeps): void {
deps.tree.refresh();
deps.onTasksMutated?.();
@@ -177,6 +186,25 @@ export async function runChangeStatus(
);
}
export async function runOpenInDashboard(
deps: TaskCommandDeps,
item?: unknown,
): Promise<void> {
const ref = await resolveTaskRef(deps.repo, deps.config, item);
if (ref === undefined) {
if (resolveTaskLocations(deps.config).length === 0) {
presentError(appError(AppErrorVariant.NO_FOLDER));
}
return;
}
TaskDashboardPanel.show(dashboardDeps(deps), { selectedId: ref.id });
}
export function runOpenDashboard(deps: TaskCommandDeps): void {
TaskDashboardPanel.show(dashboardDeps(deps));
}
/** Register all task command adapters on the extension host. */
export function registerTaskCommands(
context: vscode.ExtensionContext,
@@ -198,5 +226,12 @@ export function registerTaskCommands(
"xboctFlow.changeStatus",
(item?: unknown) => runChangeStatus(deps, item),
),
vscode.commands.registerCommand("xboctFlow.openDashboard", () =>
runOpenDashboard(deps),
),
vscode.commands.registerCommand(
"xboctFlow.openInDashboard",
(item?: unknown) => runOpenInDashboard(deps, item),
),
);
}