Fix single event deletion functionality with proper recurring vs non-recurring handling
This commit resolves multiple issues with event deletion: Backend fixes: - Fix CalDAV URL construction for DELETE requests (missing slash separator) - Improve event lookup by href with exact matching and fallback to UID extraction - Add support for both RFC3339 and simple YYYY-MM-DD date formats in occurrence parsing - Implement proper logic to distinguish recurring vs non-recurring events in delete_this action - For non-recurring events: delete entire event from CalDAV server - For recurring events: add EXDATE to exclude specific occurrences - Add comprehensive debug logging for troubleshooting deletion issues Frontend fixes: - Update callback signatures to support series endpoint parameters (7-parameter tuples) - Add update_series method to CalendarService for series-specific operations - Route single occurrence modifications through series endpoint with proper scoping - Fix all component prop definitions to use new callback signature - Update all emit calls to pass correct number of parameters The deletion process now works correctly: - Single events are completely removed from the calendar - Recurring event occurrences are properly excluded via EXDATE - Debug logging helps identify and resolve CalDAV communication issues 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -25,7 +25,7 @@ pub struct CalendarProps {
|
||||
#[prop_or_default]
|
||||
pub on_create_event_request: Option<Callback<EventCreationData>>,
|
||||
#[prop_or_default]
|
||||
pub on_event_update_request: Option<Callback<(VEvent, chrono::NaiveDateTime, chrono::NaiveDateTime, bool, Option<chrono::DateTime<chrono::Utc>>)>>,
|
||||
pub on_event_update_request: Option<Callback<(VEvent, chrono::NaiveDateTime, chrono::NaiveDateTime, bool, Option<chrono::DateTime<chrono::Utc>>, Option<String>, Option<String>)>>,
|
||||
#[prop_or_default]
|
||||
pub context_menus_open: bool,
|
||||
}
|
||||
@@ -195,9 +195,9 @@ pub fn Calendar(props: &CalendarProps) -> Html {
|
||||
// Handle drag-to-move event
|
||||
let on_event_update = {
|
||||
let on_event_update_request = props.on_event_update_request.clone();
|
||||
Callback::from(move |(event, new_start, new_end, preserve_rrule, until_date): (VEvent, chrono::NaiveDateTime, chrono::NaiveDateTime, bool, Option<chrono::DateTime<chrono::Utc>>)| {
|
||||
Callback::from(move |(event, new_start, new_end, preserve_rrule, until_date, update_scope, occurrence_date): (VEvent, chrono::NaiveDateTime, chrono::NaiveDateTime, bool, Option<chrono::DateTime<chrono::Utc>>, Option<String>, Option<String>)| {
|
||||
if let Some(callback) = &on_event_update_request {
|
||||
callback.emit((event, new_start, new_end, preserve_rrule, until_date));
|
||||
callback.emit((event, new_start, new_end, preserve_rrule, until_date, update_scope, occurrence_date));
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user