Implement comprehensive recurring event support
- Add RRULE parsing for DAILY, WEEKLY, MONTHLY, YEARLY frequencies - Support INTERVAL, COUNT, and BYDAY recurrence parameters - Generate event occurrences across 30 days past to 365 days future - Update event refresh to regenerate all recurring occurrences - Clean up unused imports for cleaner compilation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
31
src/app.rs
31
src/app.rs
@@ -138,16 +138,33 @@ fn CalendarView() -> Html {
|
||||
|
||||
match calendar_service.refresh_event(&token, &uid).await {
|
||||
Ok(Some(refreshed_event)) => {
|
||||
// Update the event in the existing events map
|
||||
// If this is a recurring event, we need to regenerate all occurrences
|
||||
let mut updated_events = (*events).clone();
|
||||
|
||||
// First, remove all existing occurrences of this event
|
||||
for (_, day_events) in updated_events.iter_mut() {
|
||||
for existing_event in day_events.iter_mut() {
|
||||
if existing_event.uid == uid {
|
||||
*existing_event = refreshed_event.clone();
|
||||
break;
|
||||
}
|
||||
}
|
||||
day_events.retain(|e| e.uid != uid);
|
||||
}
|
||||
|
||||
// Then, if it's a recurring event, generate new occurrences
|
||||
if refreshed_event.recurrence_rule.is_some() {
|
||||
let new_occurrences = CalendarService::expand_recurring_events(vec![refreshed_event.clone()]);
|
||||
|
||||
// Add all new occurrences to the appropriate dates
|
||||
for occurrence in new_occurrences {
|
||||
let date = occurrence.get_date();
|
||||
updated_events.entry(date)
|
||||
.or_insert_with(Vec::new)
|
||||
.push(occurrence);
|
||||
}
|
||||
} else {
|
||||
// Non-recurring event, just add it to the appropriate date
|
||||
let date = refreshed_event.get_date();
|
||||
updated_events.entry(date)
|
||||
.or_insert_with(Vec::new)
|
||||
.push(refreshed_event);
|
||||
}
|
||||
|
||||
events.set(updated_events);
|
||||
}
|
||||
Ok(None) => {
|
||||
|
||||
Reference in New Issue
Block a user