feat: add buttons - open task in dashboard, open dashboard
This commit is contained in:
@@ -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),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user