mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-20 02:19:23 +00:00
Move to own ical-rs fork and refactor timezone-related stuff
This commit is contained in:
@@ -1,18 +1,15 @@
|
||||
use crate::Error;
|
||||
use crate::{CalDateTime, ComponentMut, parse_duration};
|
||||
use crate::{CalDateTime, parse_duration};
|
||||
use chrono::{DateTime, Duration, Utc};
|
||||
use ical::{
|
||||
generator::IcalEvent,
|
||||
parser::{Component, ical::component::IcalTimeZone},
|
||||
property::Property,
|
||||
};
|
||||
use ical::parser::ComponentMut;
|
||||
use ical::{generator::IcalEvent, parser::Component, property::Property};
|
||||
use rrule::{RRule, RRuleSet};
|
||||
use std::{collections::HashMap, str::FromStr};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct EventObject {
|
||||
pub event: IcalEvent,
|
||||
pub timezones: HashMap<String, IcalTimeZone>,
|
||||
pub timezones: HashMap<String, Option<chrono_tz::Tz>>,
|
||||
pub(crate) ics: String,
|
||||
}
|
||||
|
||||
@@ -128,7 +125,7 @@ impl EventObject {
|
||||
} else {
|
||||
date.format()
|
||||
};
|
||||
let mut ev = self.event.clone();
|
||||
let mut ev = self.event.clone().mutable();
|
||||
ev.remove_property("RRULE");
|
||||
ev.remove_property("RDATE");
|
||||
ev.remove_property("EXDATE");
|
||||
@@ -163,7 +160,7 @@ impl EventObject {
|
||||
params: dtstart_prop.params,
|
||||
});
|
||||
}
|
||||
events.push(ev);
|
||||
events.push(ev.verify()?);
|
||||
}
|
||||
Ok(events)
|
||||
} else {
|
||||
|
||||
@@ -4,10 +4,7 @@ use crate::Error;
|
||||
use chrono::DateTime;
|
||||
use chrono::Utc;
|
||||
use derive_more::Display;
|
||||
use ical::{
|
||||
generator::{Emitter, IcalCalendar},
|
||||
parser::{Component, ical::component::IcalTimeZone},
|
||||
};
|
||||
use ical::generator::{Emitter, IcalCalendar};
|
||||
use serde::Serialize;
|
||||
use sha2::{Digest, Sha256};
|
||||
use std::{collections::HashMap, io::BufReader};
|
||||
@@ -90,15 +87,11 @@ impl CalendarObject {
|
||||
));
|
||||
}
|
||||
|
||||
let timezones: HashMap<String, IcalTimeZone> = cal
|
||||
let timezones: HashMap<String, Option<chrono_tz::Tz>> = cal
|
||||
.timezones
|
||||
.clone()
|
||||
.into_iter()
|
||||
.filter_map(|timezone| {
|
||||
let timezone_prop = timezone.get_property("TZID")?.to_owned();
|
||||
let tzid = timezone_prop.value?;
|
||||
Some((tzid, timezone))
|
||||
})
|
||||
.map(|timezone| (timezone.get_tzid().to_owned(), (&timezone).try_into().ok()))
|
||||
.collect();
|
||||
|
||||
if let Some(event) = cal.events.first() {
|
||||
@@ -161,11 +154,7 @@ impl CalendarObject {
|
||||
}
|
||||
|
||||
pub fn get_component_name(&self) -> &str {
|
||||
match self.data {
|
||||
CalendarObjectComponent::Todo(_) => "VTODO",
|
||||
CalendarObjectComponent::Event(_) => "VEVENT",
|
||||
CalendarObjectComponent::Journal(_) => "VJOURNAL",
|
||||
}
|
||||
self.get_object_type().as_str()
|
||||
}
|
||||
|
||||
pub fn get_object_type(&self) -> CalendarObjectType {
|
||||
|
||||
Reference in New Issue
Block a user