fix: resolve timezone properly in TimezoneSelector and EventModal
- Resolve timezone alias to main timezone in TimezoneSelector before passing to TimezoneAutocomplete - Resolve timezone in EventModal useState initialization to ensure correct timezone display - Sync resolved timezone when modal opens or Redux timezone changes - Ensure timezone is always resolved in resetAllStateToDefault callback - Fix issue where TimezoneAutocomplete doesn't show correct timezone on first load
This commit is contained in:
committed by
Benoit TELLIER
parent
6421f53a8d
commit
ed8bb41ca9
@@ -20,7 +20,10 @@ export function TimezoneSelector({ value, onChange }: TimezoneSelectProps) {
|
||||
return { zones, browserTz, getTimezoneOffset };
|
||||
}, []);
|
||||
|
||||
const selectedOffset = getTimezoneOffset(value);
|
||||
const effectiveTimezone = value
|
||||
? resolveTimezone(value)
|
||||
: timezoneList.browserTz;
|
||||
const selectedOffset = getTimezoneOffset(effectiveTimezone);
|
||||
|
||||
const handleOpen = (event: MouseEvent<HTMLElement>) => {
|
||||
setAnchorEl(event.currentTarget);
|
||||
@@ -68,7 +71,7 @@ export function TimezoneSelector({ value, onChange }: TimezoneSelectProps) {
|
||||
}}
|
||||
>
|
||||
<TimezoneAutocomplete
|
||||
value={value}
|
||||
value={effectiveTimezone}
|
||||
onChange={onChange}
|
||||
zones={timezoneList.zones}
|
||||
getTimezoneOffset={getTimezoneOffset}
|
||||
|
||||
@@ -105,4 +105,3 @@ export function TimezoneAutocomplete({
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -186,7 +186,9 @@ function EventPopover({
|
||||
const [eventClass, setEventClass] = useState(event?.class ?? "PUBLIC");
|
||||
const [busy, setBusy] = useState(event?.transp ?? "OPAQUE");
|
||||
const [timezone, setTimezone] = useState(
|
||||
event?.timezone ? resolveTimezone(event.timezone) : calendarTimezone
|
||||
event?.timezone
|
||||
? resolveTimezone(event.timezone)
|
||||
: resolveTimezone(calendarTimezone)
|
||||
);
|
||||
const [hasVideoConference, setHasVideoConference] = useState(
|
||||
event?.x_openpass_videoconference ? true : false
|
||||
@@ -204,6 +206,13 @@ function EventPopover({
|
||||
userPersonnalCalendarsRef.current = userPersonnalCalendars;
|
||||
}, [userPersonnalCalendars]);
|
||||
|
||||
// Sync timezone with Redux when modal opens or timezone changes
|
||||
useEffect(() => {
|
||||
if (open && !event?.timezone && calendarTimezone) {
|
||||
setTimezone(resolveTimezone(calendarTimezone));
|
||||
}
|
||||
}, [open, calendarTimezone, event?.timezone]);
|
||||
|
||||
const resetAllStateToDefault = useCallback(() => {
|
||||
setShowMore(false);
|
||||
setShowDescription(false);
|
||||
@@ -220,7 +229,7 @@ function EventPopover({
|
||||
setAlarm("");
|
||||
setEventClass("PUBLIC");
|
||||
setBusy("OPAQUE");
|
||||
setTimezone(calendarTimezone);
|
||||
setTimezone(resolveTimezone(calendarTimezone));
|
||||
setHasVideoConference(false);
|
||||
setMeetingLink(null);
|
||||
}, [calendarTimezone]);
|
||||
|
||||
Reference in New Issue
Block a user