Files
kandev/apps/web/components/task/task-select-helpers.ts
T

31 lines
1.1 KiB
TypeScript

/**
* Helpers for task selection in the sidebar. Extracted as pure functions so
* the no-session fallback path can be unit-tested without standing up the
* dockview runtime.
*/
export type FinalizeNoSessionSelectDeps = {
/** Set the new active task in the kanban store (also clears activeSessionId). */
setActiveTask: (taskId: string) => void;
/** Save the outgoing session's layout, release its portals, then build the default layout. */
releaseLayoutToDefault: (oldSessionId: string | null) => void;
/** Push the new task id into the URL without reloading. */
replaceTaskUrl: (taskId: string) => void;
};
/**
* Finalize a sidebar task selection when no session could be resolved or
* launched for the new task. Releasing the dockview to default first ensures
* portal cleanup targets the still-active outgoing session before
* `setActiveTask` clears `activeSessionId` to null.
*/
export function finalizeNoSessionSelect(
taskId: string,
oldSessionId: string | null,
deps: FinalizeNoSessionSelectDeps,
): void {
deps.releaseLayoutToDefault(oldSessionId);
deps.setActiveTask(taskId);
deps.replaceTaskUrl(taskId);
}