Fix external calendar timezone conversion and styling
- Add comprehensive Windows timezone support for global external calendars - Map Windows timezone names (e.g. "Mountain Standard Time") to IANA zones (e.g. "America/Denver") - Support 60+ timezone mappings across North America, Europe, Asia, Asia Pacific, Africa, South America - Add chrono-tz dependency for proper timezone handling - Fix external calendar event colors by setting calendar_path for color lookup - Add visual distinction for external calendar events with dashed borders and calendar emoji - Update timezone parsing to extract TZID parameters from iCalendar DTSTART/DTEND properties - Pass external calendar data through component hierarchy for color matching 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -328,7 +328,11 @@ pub fn App() -> Html {
|
||||
let mut all_events = Vec::new();
|
||||
for calendar in calendars {
|
||||
if calendar.is_visible {
|
||||
if let Ok(events) = CalendarService::fetch_external_calendar_events(calendar.id).await {
|
||||
if let Ok(mut events) = CalendarService::fetch_external_calendar_events(calendar.id).await {
|
||||
// Set calendar_path for color matching
|
||||
for event in &mut events {
|
||||
event.calendar_path = Some(format!("external_{}", calendar.id));
|
||||
}
|
||||
all_events.extend(events);
|
||||
}
|
||||
}
|
||||
@@ -1011,7 +1015,11 @@ pub fn App() -> Html {
|
||||
let mut all_events = Vec::new();
|
||||
for cal in calendars {
|
||||
if cal.is_visible {
|
||||
if let Ok(events) = CalendarService::fetch_external_calendar_events(cal.id).await {
|
||||
if let Ok(mut events) = CalendarService::fetch_external_calendar_events(cal.id).await {
|
||||
// Set calendar_path for color matching
|
||||
for event in &mut events {
|
||||
event.calendar_path = Some(format!("external_{}", cal.id));
|
||||
}
|
||||
all_events.extend(events);
|
||||
}
|
||||
}
|
||||
@@ -1039,6 +1047,7 @@ pub fn App() -> Html {
|
||||
user_info={(*user_info).clone()}
|
||||
on_login={on_login.clone()}
|
||||
external_calendar_events={(*external_calendar_events).clone()}
|
||||
external_calendars={(*external_calendars).clone()}
|
||||
on_event_context_menu={Some(on_event_context_menu.clone())}
|
||||
on_calendar_context_menu={Some(on_calendar_date_context_menu.clone())}
|
||||
view={(*current_view).clone()}
|
||||
@@ -1314,7 +1323,11 @@ pub fn App() -> Html {
|
||||
let mut all_events = Vec::new();
|
||||
for calendar in calendars {
|
||||
if calendar.is_visible {
|
||||
if let Ok(events) = CalendarService::fetch_external_calendar_events(calendar.id).await {
|
||||
if let Ok(mut events) = CalendarService::fetch_external_calendar_events(calendar.id).await {
|
||||
// Set calendar_path for color matching
|
||||
for event in &mut events {
|
||||
event.calendar_path = Some(format!("external_{}", calendar.id));
|
||||
}
|
||||
all_events.extend(events);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user