Files
kandev/apps/web/components/task/mobile/session-task-switcher-sheet-props.ts
T
2026-09-19 21:24:01 +01:00

65 lines
2.5 KiB
TypeScript

import type { TaskSwitcherProps } from "../task-switcher";
import type { MobileTaskListProps } from "./session-task-switcher-sheet";
/** Maps mobile view state and actions to the shared task switcher rows. */
export function buildMobileTaskSwitcherProps(
props: MobileTaskListProps,
helpers: {
grouped: TaskSwitcherProps["grouped"];
collapsedGroupKeys: string[];
onToggleGroup: (groupKey: string) => void;
collapsedSubtaskParentIds: string[];
onToggleSubtasks: (parentTaskId: string) => void;
onTogglePin: (taskId: string) => void;
onReorderGroup: (groupTaskIds: string[]) => void;
onReorderSubtasks: (parentTaskId: string, orderedSubtaskIds: string[]) => void;
pinnedTaskIds: string[];
showActivityTime: boolean;
taskRowPresentation: TaskSwitcherProps["taskRowPresentation"];
},
): TaskSwitcherProps {
return {
grouped: helpers.grouped,
nestHierarchyTasks: props.tasks,
workflows: props.workflows,
stepsByWorkflowId: props.stepsByWorkflowId,
activeTaskId: props.activeTaskId,
selectedTaskId: props.selectedTaskId,
onMoveToStep: props.onMoveToStep,
onRequestMoveOptions: props.onRequestMoveOptions,
onBeforeMoveOptionsOpen: props.onBeforeMoveOptionsOpen,
collapsedGroupKeys: helpers.collapsedGroupKeys,
showActivityTime: helpers.showActivityTime,
taskRowPresentation: helpers.taskRowPresentation,
onToggleGroup: helpers.onToggleGroup,
collapsedSubtaskParentIds: helpers.collapsedSubtaskParentIds,
onToggleSubtasks: helpers.onToggleSubtasks,
onSelectTask: props.onSelectTask,
onEditTask: props.onEditTask,
onRenameTask: props.onRenameTask,
onCreateSubtask: props.onCreateSubtask,
onArchiveTask: props.onArchiveTask,
onDeleteTask: props.onDeleteTask,
onDetachTask: props.onDetachTask,
onNestTask: props.onNestTask,
onLinkPullRequest: props.onLinkPullRequest,
onLinkIssue: props.onLinkIssue,
onLinkMergeRequest: props.onLinkMergeRequest,
onLinkJiraTicket: props.onLinkJiraTicket,
onLinkLinearIssue: props.onLinkLinearIssue,
onLinkSentryIssue: props.onLinkSentryIssue,
onTogglePin: helpers.onTogglePin,
onReorderGroup: helpers.onReorderGroup,
onReorderSubtasks: helpers.onReorderSubtasks,
pinnedTaskIds: helpers.pinnedTaskIds,
deletingTaskId: props.deletingTaskId,
archivingTaskId: props.archivingTaskId,
isArchiving: props.isArchiving,
isLoading: props.isLoading,
loadError: props.loadError,
onRetryLoad: props.onRetryLoad,
retryLabel: props.retryLabel,
totalTaskCount: props.tasks.length,
};
}