MCPcopy Create free account
hub / github.com/callumalpass/tasknotes / buildTaskListDropSideEffectTask

Function buildTaskListDropSideEffectTask

src/bases/taskListDropPlanning.ts:137–188  ·  view source on GitHub ↗
(
	originalTask: TaskInfo,
	{
		plan,
		isCompletedStatus,
		getTimestamp,
		getCompletedDate,
	}: BuildTaskListDropSideEffectTaskOptions
)

Source from the content-addressed store, hash-verified

135}
136
137export function buildTaskListDropSideEffectTask(
138 originalTask: TaskInfo,
139 {
140 plan,
141 isCompletedStatus,
142 getTimestamp,
143 getCompletedDate,
144 }: BuildTaskListDropSideEffectTaskOptions
145): TaskInfo | null {
146 if (!plan.needsGroupUpdate || !plan.groupByTaskProp) {
147 return null;
148 }
149
150 const updatedTask = { ...originalTask };
151 const originalRecord = originalTask as unknown as Record<string, unknown>;
152 const updatedRecord = updatedTask as unknown as Record<string, unknown>;
153 const taskProperty = plan.groupByTaskProp;
154
155 if (plan.isListGrouping) {
156 const originalValue = originalRecord[taskProperty];
157 const currentValues = Array.isArray(originalValue)
158 ? [...originalValue]
159 : originalValue
160 ? [stringifyUnknown(originalValue)]
161 : [];
162 const nextValues = currentValues.filter((value) => value !== plan.sourceGroupKey);
163 if (
164 plan.normalizedTargetGroupKey !== null &&
165 !nextValues.includes(plan.normalizedTargetGroupKey)
166 ) {
167 nextValues.push(plan.normalizedTargetGroupKey);
168 }
169 updatedRecord[taskProperty] = nextValues;
170 } else {
171 updatedRecord[taskProperty] = plan.normalizedTargetGroupKey;
172 }
173
174 updatedTask.dateModified = getTimestamp();
175
176 if (taskProperty === "status" && !originalTask.recurrence) {
177 if (
178 plan.normalizedTargetGroupKey !== null &&
179 isCompletedStatus(plan.normalizedTargetGroupKey)
180 ) {
181 updatedTask.completedDate = getCompletedDate();
182 } else {
183 updatedTask.completedDate = undefined;
184 }
185 }
186
187 return updatedTask;
188}

Callers 2

handleSortOrderDropMethod · 0.90

Calls 2

stringifyUnknownFunction · 0.90
isCompletedStatusFunction · 0.50

Tested by

no test coverage detected