Files
kandev/apps/web/components/task-create-dialog-form-reset.ts
2026-09-19 21:26:36 +01:00

81 lines
3.0 KiB
TypeScript

import type { LocalRepository, TaskPriority } from "@/lib/types/http";
import type {
StepType,
TaskCreateDialogInitialValues,
TaskRemoteRepoRow,
TaskRepoRow,
} from "@/components/task-create-dialog-types";
export type FormResetters = {
setTaskName: (value: string) => void;
setHasTitle: (value: boolean) => void;
setHasDescription: (value: boolean) => void;
setHasPendingAttachmentUploads: (value: boolean) => void;
setRepositories: (value: TaskRepoRow[]) => void;
setRepositoriesDirty: (value: boolean) => void;
setRemoteRepos: (value: TaskRemoteRepoRow[]) => void;
setAgentProfileId: (value: string) => void;
setExecutorId: (value: string) => void;
setExecutorProfileId: (value: string) => void;
setSelectedWorkflowId: (value: string | null) => void;
setWorkflowAgentOverrides: (value: Record<string, string>) => void;
setFetchedSteps: (value: StepType[] | null) => void;
setDiscoveredRepositories: (value: LocalRepository[]) => void;
setDiscoverReposLoaded: (value: boolean) => void;
setUseRemote: (value: boolean) => void;
setNoRepository: (value: boolean) => void;
setPreferLocalExecutor: (value: boolean) => void;
setWorkspacePath: (value: string) => void;
setAutopilot: (value: boolean) => void;
setPriority: (value: TaskPriority) => void;
setGitHubUrlError: (value: string | null) => void;
setFreshBranchEnabled: (value: boolean) => void;
setCurrentLocalBranch: (value: string) => void;
setBlockedBy: (value: string[]) => void;
};
export function resetTaskForm(
resetters: FormResetters,
name: string,
description: string,
workflowId: string | null,
initialValues?: TaskCreateDialogInitialValues,
) {
resetters.setTaskName(name);
resetters.setHasTitle(name.trim().length > 0);
resetters.setHasDescription(description.trim().length > 0);
resetters.setHasPendingAttachmentUploads(false);
const savedRepositories = initialValues?.repositories ?? [];
const restoredRepositories = savedRepositories.map((repository, index) => ({
key: `row-${index}`,
repositoryId: repository.repository_id,
branch:
repository.branch_policy_base_branch ??
repository.base_branch ??
repository.checkout_branch ??
"",
branchPolicyId: repository.branch_policy_id,
}));
if (restoredRepositories.length === 0 && initialValues?.repositoryId) {
restoredRepositories.push({
key: "row-0",
repositoryId: initialValues.repositoryId,
branch: initialValues.branch ?? "",
branchPolicyId: undefined,
});
}
resetters.setRepositories(restoredRepositories);
resetters.setRepositoriesDirty(false);
resetters.setAgentProfileId("");
resetters.setExecutorId("");
resetters.setExecutorProfileId("");
resetters.setSelectedWorkflowId(workflowId);
resetters.setWorkflowAgentOverrides({});
resetters.setFetchedSteps(null);
resetters.setNoRepository(initialValues?.noRepository ?? false);
resetters.setPreferLocalExecutor(initialValues?.preferLocalExecutor ?? false);
resetters.setWorkspacePath("");
resetters.setAutopilot(false);
resetters.setPriority("medium");
}