Timeslot selectable times fix for not UTC timezones in Availability (#1721)

* --wip

* fix for event type availability tz mismatch

* cleanup

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Syed Ali Shahbaz 2022-02-08 21:31:18 +05:30 committed by GitHub
parent 00a79bdaba
commit 447def5849
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 10 deletions

View file

@ -73,9 +73,17 @@ export const Scheduler = ({ availability, setAvailability, timeZone, setTimeZone
className="px-3 py-2 text-sm rounded-sm bg-neutral-100" className="px-3 py-2 text-sm rounded-sm bg-neutral-100"
type="button" type="button"
onClick={() => setEditSchedule(idx)}> onClick={() => setEditSchedule(idx)}>
{item.startTime.toLocaleTimeString(i18n.language, { hour: "numeric", minute: "2-digit" })} {item.startTime.toLocaleTimeString(i18n.language, {
hour: "numeric",
minute: "2-digit",
timeZone: "UTC",
})}
&nbsp;{t("until")}&nbsp; &nbsp;{t("until")}&nbsp;
{item.endTime.toLocaleTimeString(i18n.language, { hour: "numeric", minute: "2-digit" })} {item.endTime.toLocaleTimeString(i18n.language, {
hour: "numeric",
minute: "2-digit",
timeZone: "UTC",
})}
</button> </button>
</div> </div>
<button <button
@ -118,24 +126,24 @@ export const Scheduler = ({ availability, setAvailability, timeZone, setTimeZone
<SetTimesModal <SetTimesModal
startTime={ startTime={
openingHours[editSchedule] openingHours[editSchedule]
? new Date(openingHours[editSchedule].startTime).getHours() * 60 + ? new Date(openingHours[editSchedule].startTime).getUTCHours() * 60 +
new Date(openingHours[editSchedule].startTime).getMinutes() new Date(openingHours[editSchedule].startTime).getUTCMinutes()
: 540 : 540
} }
endTime={ endTime={
openingHours[editSchedule] openingHours[editSchedule]
? new Date(openingHours[editSchedule].endTime).getHours() * 60 + ? new Date(openingHours[editSchedule].endTime).getUTCHours() * 60 +
new Date(openingHours[editSchedule].endTime).getMinutes() new Date(openingHours[editSchedule].endTime).getUTCMinutes()
: 1020 : 1020
} }
onChange={(times: { startTime: number; endTime: number }) => onChange={(times: { startTime: number; endTime: number }) =>
applyEditSchedule({ applyEditSchedule({
...(openingHours[editSchedule] || {}), ...(openingHours[editSchedule] || {}),
startTime: new Date( startTime: new Date(
new Date().setHours(Math.floor(times.startTime / 60), times.startTime % 60, 0, 0) new Date().setUTCHours(Math.floor(times.startTime / 60), times.startTime % 60, 0, 0)
), ),
endTime: new Date( endTime: new Date(
new Date().setHours(Math.floor(times.endTime / 60), times.endTime % 60, 0, 0) new Date().setUTCHours(Math.floor(times.endTime / 60), times.endTime % 60, 0, 0)
), ),
}) })
} }

View file

@ -24,8 +24,8 @@ const increment = 15;
* 23:45:00 (End of day with enough time for 15 min booking) * 23:45:00 (End of day with enough time for 15 min booking)
*/ */
const TIMES = (() => { const TIMES = (() => {
const end = dayjs().endOf("day"); const end = dayjs().utc().endOf("day");
let t: Dayjs = dayjs().startOf("day"); let t: Dayjs = dayjs().utc().startOf("day");
const times = []; const times = [];
while (t.isBefore(end)) { while (t.isBefore(end)) {