Implement calendar deletion with right-click context menu
Added complete calendar deletion functionality including: - Context menu component with right-click activation on calendar items - Backend API endpoint for calendar deletion with CalDAV DELETE method - Frontend integration with calendar list refresh after deletion - Fixed URL construction to prevent double /dav.php path issue - Added proper error handling and user feedback 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -658,6 +658,42 @@ impl CalDAVClient {
|
||||
Err(CalDAVError::ServerError(status.as_u16()))
|
||||
}
|
||||
}
|
||||
|
||||
/// Delete a calendar from the CalDAV server
|
||||
pub async fn delete_calendar(&self, calendar_path: &str) -> Result<(), CalDAVError> {
|
||||
let full_url = if calendar_path.starts_with("http") {
|
||||
calendar_path.to_string()
|
||||
} else {
|
||||
// Handle case where calendar_path already contains /dav.php
|
||||
let clean_path = if calendar_path.starts_with("/dav.php") {
|
||||
calendar_path.trim_start_matches("/dav.php")
|
||||
} else {
|
||||
calendar_path
|
||||
};
|
||||
format!("{}{}", self.config.server_url.trim_end_matches('/'), clean_path)
|
||||
};
|
||||
|
||||
println!("Deleting calendar at: {}", full_url);
|
||||
|
||||
let response = self.http_client
|
||||
.delete(&full_url)
|
||||
.header("Authorization", format!("Basic {}", self.config.get_basic_auth()))
|
||||
.send()
|
||||
.await
|
||||
.map_err(|e| CalDAVError::ParseError(e.to_string()))?;
|
||||
|
||||
println!("Calendar deletion response status: {}", response.status());
|
||||
|
||||
if response.status().is_success() || response.status().as_u16() == 204 {
|
||||
println!("✅ Calendar deleted successfully at {}", calendar_path);
|
||||
Ok(())
|
||||
} else {
|
||||
let status = response.status();
|
||||
let error_body = response.text().await.unwrap_or_default();
|
||||
println!("❌ Calendar deletion failed: {} - {}", status, error_body);
|
||||
Err(CalDAVError::ServerError(status.as_u16()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Helper struct for extracting calendar data from XML responses
|
||||
|
||||
Reference in New Issue
Block a user