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 };
|
return { zones, browserTz, getTimezoneOffset };
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const selectedOffset = getTimezoneOffset(value);
|
const effectiveTimezone = value
|
||||||
|
? resolveTimezone(value)
|
||||||
|
: timezoneList.browserTz;
|
||||||
|
const selectedOffset = getTimezoneOffset(effectiveTimezone);
|
||||||
|
|
||||||
const handleOpen = (event: MouseEvent<HTMLElement>) => {
|
const handleOpen = (event: MouseEvent<HTMLElement>) => {
|
||||||
setAnchorEl(event.currentTarget);
|
setAnchorEl(event.currentTarget);
|
||||||
@@ -68,7 +71,7 @@ export function TimezoneSelector({ value, onChange }: TimezoneSelectProps) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<TimezoneAutocomplete
|
<TimezoneAutocomplete
|
||||||
value={value}
|
value={effectiveTimezone}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
zones={timezoneList.zones}
|
zones={timezoneList.zones}
|
||||||
getTimezoneOffset={getTimezoneOffset}
|
getTimezoneOffset={getTimezoneOffset}
|
||||||
|
|||||||
@@ -105,4 +105,3 @@ export function TimezoneAutocomplete({
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -186,7 +186,9 @@ function EventPopover({
|
|||||||
const [eventClass, setEventClass] = useState(event?.class ?? "PUBLIC");
|
const [eventClass, setEventClass] = useState(event?.class ?? "PUBLIC");
|
||||||
const [busy, setBusy] = useState(event?.transp ?? "OPAQUE");
|
const [busy, setBusy] = useState(event?.transp ?? "OPAQUE");
|
||||||
const [timezone, setTimezone] = useState(
|
const [timezone, setTimezone] = useState(
|
||||||
event?.timezone ? resolveTimezone(event.timezone) : calendarTimezone
|
event?.timezone
|
||||||
|
? resolveTimezone(event.timezone)
|
||||||
|
: resolveTimezone(calendarTimezone)
|
||||||
);
|
);
|
||||||
const [hasVideoConference, setHasVideoConference] = useState(
|
const [hasVideoConference, setHasVideoConference] = useState(
|
||||||
event?.x_openpass_videoconference ? true : false
|
event?.x_openpass_videoconference ? true : false
|
||||||
@@ -204,6 +206,13 @@ function EventPopover({
|
|||||||
userPersonnalCalendarsRef.current = userPersonnalCalendars;
|
userPersonnalCalendarsRef.current = userPersonnalCalendars;
|
||||||
}, [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(() => {
|
const resetAllStateToDefault = useCallback(() => {
|
||||||
setShowMore(false);
|
setShowMore(false);
|
||||||
setShowDescription(false);
|
setShowDescription(false);
|
||||||
@@ -220,7 +229,7 @@ function EventPopover({
|
|||||||
setAlarm("");
|
setAlarm("");
|
||||||
setEventClass("PUBLIC");
|
setEventClass("PUBLIC");
|
||||||
setBusy("OPAQUE");
|
setBusy("OPAQUE");
|
||||||
setTimezone(calendarTimezone);
|
setTimezone(resolveTimezone(calendarTimezone));
|
||||||
setHasVideoConference(false);
|
setHasVideoConference(false);
|
||||||
setMeetingLink(null);
|
setMeetingLink(null);
|
||||||
}, [calendarTimezone]);
|
}, [calendarTimezone]);
|
||||||
|
|||||||
Reference in New Issue
Block a user