diff --git a/src/calendar/cached_calendar.rs b/src/calendar/cached_calendar.rs index 22d9e63..f0c4f9e 100644 --- a/src/calendar/cached_calendar.rs +++ b/src/calendar/cached_calendar.rs @@ -97,8 +97,8 @@ impl PartialCalendar for CachedCalendar { Ok(map) } - async fn get_item_ids(&mut self) -> HashSet { - self.items.keys().cloned().collect() + async fn get_item_ids(&self) -> Result, Box> { + Ok(self.items.keys().cloned().collect()) } async fn get_item_by_id_mut<'a>(&'a mut self, id: &ItemId) -> Option<&'a mut Item> { diff --git a/src/provider.rs b/src/provider.rs index 43402e0..b0e1cb6 100644 --- a/src/provider.rs +++ b/src/provider.rs @@ -83,7 +83,7 @@ where Some(date) => cal_local.get_items_deleted_since(date).await?, }; if last_sync.is_some() { - let server_deletions = cal_server.find_deletions_from(cal_local.get_item_ids().await).await; + let server_deletions = cal_server.find_deletions_from(cal_local.get_item_ids().await?).await?; for server_del_id in server_deletions { // Even in case of conflicts, "the server always wins", so it is safe to remove tasks from the local cache as soon as now if let Err(err) = cal_local.delete_item(&server_del_id).await { diff --git a/src/traits.rs b/src/traits.rs index cfde874..34fe2d8 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -45,7 +45,7 @@ pub trait PartialCalendar { -> Result, Box>; /// Get the IDs of all current items in this calendar - async fn get_item_ids(&mut self) -> HashSet; + async fn get_item_ids(&self) -> Result, Box>; /// Returns a particular item async fn get_item_by_id_mut<'a>(&'a mut self, id: &ItemId) -> Option<&'a mut Item>; @@ -68,9 +68,9 @@ pub trait PartialCalendar { } /// Finds the IDs of the items that are missing compared to a reference set - async fn find_deletions_from(&mut self, reference_set: HashSet) -> HashSet { - let current_items = self.get_item_ids().await; - reference_set.difference(¤t_items).map(|id| id.clone()).collect() + async fn find_deletions_from(&self, reference_set: HashSet) -> Result, Box> { + let current_items = self.get_item_ids().await?; + Ok(reference_set.difference(¤t_items).map(|id| id.clone()).collect()) } }