ShowWidget: Add some assertions.

This commit is contained in:
Jordan Petridis 2018-07-21 10:24:48 +03:00
parent 536805791e
commit b5ddca65f5
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6

View File

@ -63,9 +63,8 @@ impl ShowWidget {
sender.send(Action::InitShowMenu(SendCell::new(menu))); sender.send(Action::InitShowMenu(SendCell::new(menu)));
let pdw = Rc::new(pdw); let pdw = Rc::new(pdw);
populate_listbox(&pdw, pd.clone(), sender) let res = populate_listbox(&pdw, pd.clone(), sender);
.map_err(|err| error!("Failed to populate the listbox: {}", err)) debug_assert!(res.is_ok());
.ok();
pdw pdw
} }
@ -74,9 +73,8 @@ impl ShowWidget {
self.set_description(pd.description()); self.set_description(pd.description());
self.show_id = Some(pd.id()); self.show_id = Some(pd.id());
self.set_cover(&pd) let res = self.set_cover(&pd);
.map_err(|err| error!("Failed to set a cover: {}", err)) debug_assert!(res.is_ok());
.ok();
} }
/// Set the show cover. /// Set the show cover.
@ -135,7 +133,6 @@ impl ShowWidget {
/// Populate the listbox with the shows episodes. /// Populate the listbox with the shows episodes.
fn populate_listbox( fn populate_listbox(
// FIXME: Refference cycle
show: &Rc<ShowWidget>, show: &Rc<ShowWidget>,
pd: Arc<Show>, pd: Arc<Show>,
sender: Sender<Action>, sender: Sender<Action>,
@ -146,15 +143,18 @@ fn populate_listbox(
let (sender_, receiver) = bounded(1); let (sender_, receiver) = bounded(1);
rayon::spawn(clone!(pd => move || { rayon::spawn(clone!(pd => move || {
let episodes = dbqueries::get_pd_episodeswidgets(&pd).unwrap(); if let Ok(episodes) = dbqueries::get_pd_episodeswidgets(&pd) {
// The receiver can be dropped if there's an early return // The receiver can be dropped if there's an early return
// like on show without episodes for example. // like on show without episodes for example.
sender_.send(episodes); sender_.send(episodes);
}
})); }));
if count == 0 { if count == 0 {
let builder = gtk::Builder::new_from_resource("/org/gnome/Hammond/gtk/empty_show.ui"); let builder = gtk::Builder::new_from_resource("/org/gnome/Hammond/gtk/empty_show.ui");
let container: gtk::Box = builder.get_object("empty_show").unwrap(); let container: gtk::Box = builder
.get_object("empty_show")
.ok_or_else(|| format_err!("FOO"))?;
show.episodes.add(&container); show.episodes.add(&container);
return Ok(()); return Ok(());
} }
@ -165,17 +165,16 @@ fn populate_listbox(
Some(e) => e, Some(e) => e,
None => return glib::Continue(true), None => return glib::Continue(true),
}; };
debug_assert!(episodes.len() as i64 == count);
let list = show_.episodes.clone(); let list = show_.episodes.clone();
let constructor = clone!(sender => move |ep| { let constructor = clone!(sender => move |ep| {
EpisodeWidget::new(ep, &sender).container.clone() EpisodeWidget::new(ep, &sender).container.clone()
}); });
let callback = clone!(pd, show_ => move || { let callback = clone!(pd, show_ => move || {
show_.set_vadjustment(&pd) let res = show_.set_vadjustment(&pd);
.map_err(|err| error!("Failed to set ShowWidget Alignment: {}", err)) debug_assert!(res.is_ok());
.ok();
}); });
lazy_load(episodes, list.clone(), constructor, callback); lazy_load(episodes, list.clone(), constructor, callback);