h-gtk/utils: Remove expects and unwraps on senders

This commit is contained in:
Jordan Petridis 2018-04-16 01:27:59 +03:00
parent 4db7628eed
commit 3132856efe
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
5 changed files with 39 additions and 25 deletions

View File

@ -207,7 +207,9 @@ impl App {
}); });
let undo_callback = clone!(sender => move || { let undo_callback = clone!(sender => move || {
sender.send(Action::RefreshWidgetIfSame(id)).expect("Action channel blow up"); sender.send(Action::RefreshWidgetIfSame(id))
.map_err(|err| error!("Action Sender: {}", err))
.ok();
}); });
let text = "Marked all episodes as listened".into(); let text = "Marked all episodes as listened".into();

View File

@ -94,7 +94,8 @@ impl Header {
.connect_clicked(clone!(sender => move |_| { .connect_clicked(clone!(sender => move |_| {
sender sender
.send(Action::UpdateSources(None)) .send(Action::UpdateSources(None))
.expect("Action channel blew up."); .map_err(|err| error!("Action Sender: {}", err))
.ok();
})); }));
self.about_button self.about_button

View File

@ -108,10 +108,12 @@ pub fn add(id: i32, directory: String, sender: Sender<Action>) -> Result<(), Err
sender sender
.send(Action::RefreshWidgetIfSame(pid)) .send(Action::RefreshWidgetIfSame(pid))
.expect("Action channel blew up."); .map_err(|err| error!("Action Sender: {}", err))
.ok();
sender sender
.send(Action::RefreshEpisodesView) .send(Action::RefreshEpisodesView)
.expect("Action channel blew up."); .map_err(|err| error!("Action Sender: {}", err))
.ok();
} }
}); });

View File

@ -143,7 +143,10 @@ fn refresh_feed<S>(source: Option<S>, sender: Sender<Action>) -> Result<(), Erro
where where
S: IntoIterator<Item = Source> + Send + 'static, S: IntoIterator<Item = Source> + Send + 'static,
{ {
sender.send(Action::HeaderBarShowUpdateIndicator)?; sender
.send(Action::HeaderBarShowUpdateIndicator)
.map_err(|err| error!("Action Sender: {}", err))
.ok();
rayon::spawn(move || { rayon::spawn(move || {
if let Some(s) = source { if let Some(s) = source {
@ -163,10 +166,12 @@ where
sender sender
.send(Action::HeaderBarHideUpdateIndicator) .send(Action::HeaderBarHideUpdateIndicator)
.expect("Action channel blew up."); .map_err(|err| error!("Action Sender: {}", err))
.ok();
sender sender
.send(Action::RefreshAllViews) .send(Action::RefreshAllViews)
.expect("Action channel blew up."); .map_err(|err| error!("Action Sender: {}", err))
.ok();
}); });
Ok(()) Ok(())
} }
@ -230,7 +235,10 @@ pub fn set_image_from_path(
guard.insert(pd_.id()); guard.insert(pd_.id());
} }
let _ = sender.send(downloader::cache_image(&pd_)); sender
.send(downloader::cache_image(&pd_))
.map_err(|err| error!("Action Sender: {}", err))
.ok();
if let Ok(mut guard) = COVER_DL_REGISTRY.write() { if let Ok(mut guard) = COVER_DL_REGISTRY.write() {
guard.remove(&pd_.id()); guard.remove(&pd_.id());

View File

@ -12,7 +12,7 @@ use app::Action;
use utils::set_image_from_path; use utils::set_image_from_path;
use widgets::episode::episodes_listbox; use widgets::episode::episodes_listbox;
use std::sync::mpsc::Sender; use std::sync::mpsc::{SendError, Sender};
use std::sync::Arc; use std::sync::Arc;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -68,9 +68,7 @@ impl ShowWidget {
self.unsub self.unsub
.connect_clicked(clone!(pd, sender => move |bttn| { .connect_clicked(clone!(pd, sender => move |bttn| {
if let Err(err) = on_unsub_button_clicked(pd.clone(), bttn, sender.clone()) { on_unsub_button_clicked(pd.clone(), bttn, sender.clone());
error!("Error: {}", err);
}
})); }));
self.setup_listbox(pd.clone(), sender.clone()); self.setup_listbox(pd.clone(), sender.clone());
@ -126,23 +124,23 @@ impl ShowWidget {
} }
} }
fn on_unsub_button_clicked( fn on_unsub_button_clicked(pd: Arc<Podcast>, unsub_button: &gtk::Button, sender: Sender<Action>) {
pd: Arc<Podcast>,
unsub_button: &gtk::Button,
sender: Sender<Action>,
) -> Result<(), Error> {
// hack to get away without properly checking for none. // hack to get away without properly checking for none.
// if pressed twice would panic. // if pressed twice would panic.
unsub_button.set_sensitive(false); unsub_button.set_sensitive(false);
sender.send(Action::RemoveShow(pd))?;
sender.send(Action::HeaderBarNormal)?; let wrap = || -> Result<(), SendError<_>> {
sender.send(Action::ShowShowsAnimated)?; sender.send(Action::RemoveShow(pd))?;
// Queue a refresh after the switch to avoid blocking the db.
sender.send(Action::RefreshShowsView)?;
sender.send(Action::RefreshEpisodesView)?;
Ok(()) sender.send(Action::HeaderBarNormal)?;
sender.send(Action::ShowShowsAnimated)?;
// Queue a refresh after the switch to avoid blocking the db.
sender.send(Action::RefreshShowsView)?;
sender.send(Action::RefreshEpisodesView)?;
Ok(())
};
wrap().map_err(|err| error!("Action Sender: {}", err)).ok();
} }
fn on_played_button_clicked(pd: Arc<Podcast>, episodes: &gtk::Frame, sender: Sender<Action>) { fn on_played_button_clicked(pd: Arc<Podcast>, episodes: &gtk::Frame, sender: Sender<Action>) {
@ -151,7 +149,10 @@ fn on_played_button_clicked(pd: Arc<Podcast>, episodes: &gtk::Frame, sender: Sen
warn!("RUN WHILE YOU STILL CAN!"); warn!("RUN WHILE YOU STILL CAN!");
} }
sender.send(Action::MarkAllPlayerNotification(pd)).unwrap(); sender
.send(Action::MarkAllPlayerNotification(pd))
.map_err(|err| error!("Action Sender: {}", err))
.ok();
} }
pub fn mark_all_watched(pd: &Podcast, sender: Sender<Action>) -> Result<(), Error> { pub fn mark_all_watched(pd: &Podcast, sender: Sender<Action>) -> Result<(), Error> {