Implement comprehensive external calendar event deduplication and fixes
All checks were successful
Build and Push Docker Image / docker (push) Successful in 1m11s
All checks were successful
Build and Push Docker Image / docker (push) Successful in 1m11s
- Add UID-based deduplication to prefer recurring events over single events with same UID - Implement RRULE-generated instance detection to filter duplicate occurrences - Add title normalization for case-insensitive matching and consolidation - Fix external calendar refresh button with proper error handling and loading states - Update context menu for external events to show only "View Event Details" option - Add comprehensive multi-pass deduplication: UID → title consolidation → RRULE filtering This resolves issues where Outlook calendars showed duplicate events with same UID but different RRULE states (e.g., "Dragster Stand Up" appearing both as recurring and single events). 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -110,6 +110,7 @@ pub struct SidebarProps {
|
||||
pub on_color_change: Callback<(String, String)>,
|
||||
pub on_color_picker_toggle: Callback<String>,
|
||||
pub available_colors: Vec<String>,
|
||||
pub refreshing_calendar_id: Option<i32>,
|
||||
pub on_calendar_context_menu: Callback<(MouseEvent, String)>,
|
||||
pub on_calendar_visibility_toggle: Callback<String>,
|
||||
pub current_view: ViewMode,
|
||||
@@ -304,8 +305,15 @@ pub fn sidebar(props: &SidebarProps) -> Html {
|
||||
on_refresh.emit(cal_id);
|
||||
})
|
||||
}}
|
||||
disabled={props.refreshing_calendar_id == Some(cal.id)}
|
||||
>
|
||||
{"🔄"}
|
||||
{
|
||||
if props.refreshing_calendar_id == Some(cal.id) {
|
||||
"⏳" // Loading spinner
|
||||
} else {
|
||||
"🔄" // Normal refresh icon
|
||||
}
|
||||
}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user