Add right-click context menu to external calendars for deletion
Users can now right-click on external calendar items in the sidebar to access a context menu with a "Delete Calendar" option. The delete action removes the calendar from both the server and local state, including all associated events from the calendar display. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1029,6 +1029,39 @@ pub fn App() -> Html {
|
||||
});
|
||||
}
|
||||
})}
|
||||
on_external_calendar_delete={Callback::from({
|
||||
let external_calendars = external_calendars.clone();
|
||||
let external_calendar_events = external_calendar_events.clone();
|
||||
move |id: i32| {
|
||||
let external_calendars = external_calendars.clone();
|
||||
let external_calendar_events = external_calendar_events.clone();
|
||||
wasm_bindgen_futures::spawn_local(async move {
|
||||
// Delete the external calendar from the server
|
||||
if let Err(err) = CalendarService::delete_external_calendar(id).await {
|
||||
web_sys::console::log_1(
|
||||
&format!("Failed to delete external calendar: {}", err).into(),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove calendar from local state
|
||||
let mut calendars = (*external_calendars).clone();
|
||||
calendars.retain(|c| c.id != id);
|
||||
external_calendars.set(calendars.clone());
|
||||
|
||||
// Remove events from this calendar
|
||||
let mut events = (*external_calendar_events).clone();
|
||||
events.retain(|e| {
|
||||
if let Some(ref calendar_path) = e.calendar_path {
|
||||
calendar_path != &format!("external_{}", id)
|
||||
} else {
|
||||
true
|
||||
}
|
||||
});
|
||||
external_calendar_events.set(events);
|
||||
});
|
||||
}
|
||||
})}
|
||||
color_picker_open={(*color_picker_open).clone()}
|
||||
on_color_change={on_color_change}
|
||||
on_color_picker_toggle={on_color_picker_toggle}
|
||||
|
||||
Reference in New Issue
Block a user