mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
preserve lock date offset in drag and drop
This commit is contained in:
@@ -130,7 +130,11 @@ export default function DraggingContextProvider({
|
|||||||
const quiz: LocalQuiz = {
|
const quiz: LocalQuiz = {
|
||||||
...previousQuiz,
|
...previousQuiz,
|
||||||
dueAt: dateToMarkdownString(dayAsDate),
|
dueAt: dateToMarkdownString(dayAsDate),
|
||||||
lockAt: getLaterDate(previousQuiz.lockAt, dayAsDate),
|
lockAt: getNewLockDate(
|
||||||
|
previousQuiz.dueAt,
|
||||||
|
previousQuiz.lockAt,
|
||||||
|
dayAsDate
|
||||||
|
),
|
||||||
};
|
};
|
||||||
updateQuizMutation.mutate({
|
updateQuizMutation.mutate({
|
||||||
item: quiz,
|
item: quiz,
|
||||||
@@ -198,14 +202,27 @@ export default function DraggingContextProvider({
|
|||||||
</DraggingContext.Provider>
|
</DraggingContext.Provider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
function getLaterDate(
|
function getNewLockDate(
|
||||||
firstDate: string | undefined,
|
originalDueDate: string,
|
||||||
|
originalLockDate: string | undefined,
|
||||||
dayAsDate: Date
|
dayAsDate: Date
|
||||||
): string | undefined {
|
): string | undefined {
|
||||||
return (
|
// todo: preserve previous due date / lock date offset
|
||||||
firstDate &&
|
const dueDate = getDateFromStringOrThrow(originalDueDate, "dueat date");
|
||||||
(getDateFromStringOrThrow(firstDate, "lockAt date") > dayAsDate
|
const lockDate =
|
||||||
? firstDate
|
originalLockDate === undefined
|
||||||
: dateToMarkdownString(dayAsDate))
|
? undefined
|
||||||
);
|
: getDateFromStringOrThrow(originalLockDate, "lockAt date");
|
||||||
|
|
||||||
|
const originalOffset =
|
||||||
|
lockDate === undefined ? undefined : lockDate.getTime() - dueDate.getTime();
|
||||||
|
|
||||||
|
const newLockDate =
|
||||||
|
originalOffset === undefined
|
||||||
|
? undefined
|
||||||
|
: new Date(dayAsDate.getTime() + originalOffset);
|
||||||
|
|
||||||
|
return newLockDate === undefined
|
||||||
|
? undefined
|
||||||
|
: dateToMarkdownString(newLockDate);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user