@@ -37,26 +37,8 @@ func wrapEventWithDaysWithTimezone(event *calendar.Event, calendarTimezone strin
3737 return nil
3838 }
3939 startDay , endDay := eventDaysOfWeek (event )
40- calendarTimezone = strings .TrimSpace (calendarTimezone )
4140 evTimezone := eventTimezone (event )
42-
43- if loc == nil && calendarTimezone != "" {
44- if loaded , err := time .LoadLocation (calendarTimezone ); err == nil {
45- loc = loaded
46- } else {
47- calendarTimezone = ""
48- }
49- }
50- if calendarTimezone == "" {
51- calendarTimezone = evTimezone
52- if loc == nil && calendarTimezone != "" {
53- if loaded , err := time .LoadLocation (calendarTimezone ); err == nil {
54- loc = loaded
55- } else {
56- calendarTimezone = ""
57- }
58- }
59- }
41+ calendarTimezone , loc = resolveEventTimezone (event , calendarTimezone , loc )
6042
6143 startLocal := formatEventLocal (event .Start , loc )
6244 endLocal := formatEventLocal (event .End , loc )
@@ -152,3 +134,31 @@ func loadEventLocation(tz string) (*time.Location, bool) {
152134 }
153135 return loc , true
154136}
137+
138+ // resolveEventTimezone resolves the timezone and location for an event.
139+ // It tries the calendar timezone first, then falls back to the event's timezone.
140+ // Returns the resolved timezone name and location. If loc is already provided,
141+ // it will be used as-is (only calendarTimezone may be updated for display).
142+ func resolveEventTimezone (event * calendar.Event , calendarTimezone string , loc * time.Location ) (string , * time.Location ) {
143+ calendarTimezone = strings .TrimSpace (calendarTimezone )
144+ evTimezone := eventTimezone (event )
145+
146+ if loc == nil && calendarTimezone != "" {
147+ if loaded , err := time .LoadLocation (calendarTimezone ); err == nil {
148+ loc = loaded
149+ } else {
150+ calendarTimezone = ""
151+ }
152+ }
153+ if calendarTimezone == "" {
154+ calendarTimezone = evTimezone
155+ if loc == nil && calendarTimezone != "" {
156+ if loaded , err := time .LoadLocation (calendarTimezone ); err == nil {
157+ loc = loaded
158+ } else {
159+ calendarTimezone = ""
160+ }
161+ }
162+ }
163+ return calendarTimezone , loc
164+ }
0 commit comments