Fix non-recurring event update functionality by using actual CalDAV hrefs
This commit resolves the 404 error when dragging/updating non-recurring events.
The issue was in the regular event update handler where it was generating fake
event hrefs based on the UID (format: "{uid}.ics") instead of using the actual
href returned by the CalDAV server during event fetching.
Changes:
- Use event.href from the stored event data instead of generating fake hrefs
- Add comprehensive debug logging to track event updates
- Fallback to generated href only when the stored href is missing
Debug logging added:
- "🔍 Found event {uid} with href: {href}" - shows which href is being used
- "📝 Updating event {uid} at calendar_path: {path}, event_href: {href}" - tracks update parameters
- "✅ Successfully updated event {uid}" - confirms successful CalDAV updates
This matches the fix previously applied to the deletion functionality and ensures
that CalDAV PUT requests target the correct resource URLs.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -533,8 +533,9 @@ pub async fn update_event(
|
|||||||
Ok(events) => {
|
Ok(events) => {
|
||||||
for event in events {
|
for event in events {
|
||||||
if event.uid == request.uid {
|
if event.uid == request.uid {
|
||||||
// Generate event href from UID
|
// Use the actual href from the event, or generate one if missing
|
||||||
let event_href = format!("{}.ics", event.uid);
|
let event_href = event.href.clone().unwrap_or_else(|| format!("{}.ics", event.uid));
|
||||||
|
println!("🔍 Found event {} with href: {}", event.uid, event_href);
|
||||||
found_event = Some((event, calendar_path.clone(), event_href));
|
found_event = Some((event, calendar_path.clone(), event_href));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -590,9 +591,12 @@ pub async fn update_event(
|
|||||||
event.priority = request.priority;
|
event.priority = request.priority;
|
||||||
|
|
||||||
// Update the event on the CalDAV server
|
// Update the event on the CalDAV server
|
||||||
|
println!("📝 Updating event {} at calendar_path: {}, event_href: {}", event.uid, calendar_path, event_href);
|
||||||
client.update_event(&calendar_path, &event, &event_href)
|
client.update_event(&calendar_path, &event, &event_href)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| ApiError::Internal(format!("Failed to update event: {}", e)))?;
|
.map_err(|e| ApiError::Internal(format!("Failed to update event: {}", e)))?;
|
||||||
|
|
||||||
|
println!("✅ Successfully updated event {}", event.uid);
|
||||||
|
|
||||||
Ok(Json(UpdateEventResponse {
|
Ok(Json(UpdateEventResponse {
|
||||||
success: true,
|
success: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user