fix: move a calendar event's end with its date instead of keeping the old end date (#31303)

This commit is contained in:
G30 2026-09-25 23:27:40 -04:00 • committed by GitHub
parent f8e15f92d1
commit 6fdbe3ab67
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -28,6 +28,7 @@
let startDate = '';
let startTime = '';
let endDate = '';
let endDayOffset = 0;
let endTime = '';
let allDay = false;
let location = '';
@ -111,6 +112,12 @@
alertMinutes = 10;
repeatFrequency = '';
}
endDayOffset = endDate
? Math.round(
(dateTimeToNs(endDate, '12:00') - dateTimeToNs(startDate, '12:00')) /
(24 * 60 * 60 * 1000 * NS)
)
: 0;
}
$: if (show) reset();
@ -129,7 +136,12 @@
loading = true;
try {
const startNs = dateTimeToNs(startDate, allDay ? '00:00' : startTime);
let endNs = endDate ? dateTimeToNs(endDate, allDay ? '23:59' : endTime) : undefined;
const shiftedEndDate = endDate
? nsToDateStr(dateTimeToNs(startDate, '12:00') + endDayOffset * 24 * 60 * 60 * 1000 * NS)
: '';
let endNs = shiftedEndDate
? dateTimeToNs(shiftedEndDate, allDay ? '23:59' : endTime)
: undefined;
if (endNs !== undefined && endNs < startNs) {
const duration =
event?.end_at && event.end_at > event.start_at ? event.end_at - event.start_at : 0;