diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index 1c0fc2f..2402ea2 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -207,7 +207,9 @@ impl App { }); 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(); diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index db01198..fcf7095 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -94,7 +94,8 @@ impl Header { .connect_clicked(clone!(sender => move |_| { sender .send(Action::UpdateSources(None)) - .expect("Action channel blew up."); + .map_err(|err| error!("Action Sender: {}", err)) + .ok(); })); self.about_button diff --git a/hammond-gtk/src/manager.rs b/hammond-gtk/src/manager.rs index 5ee8c98..a05f79a 100644 --- a/hammond-gtk/src/manager.rs +++ b/hammond-gtk/src/manager.rs @@ -108,10 +108,12 @@ pub fn add(id: i32, directory: String, sender: Sender) -> Result<(), Err sender .send(Action::RefreshWidgetIfSame(pid)) - .expect("Action channel blew up."); + .map_err(|err| error!("Action Sender: {}", err)) + .ok(); sender .send(Action::RefreshEpisodesView) - .expect("Action channel blew up."); + .map_err(|err| error!("Action Sender: {}", err)) + .ok(); } }); diff --git a/hammond-gtk/src/utils.rs b/hammond-gtk/src/utils.rs index 08f90de..b0a7972 100644 --- a/hammond-gtk/src/utils.rs +++ b/hammond-gtk/src/utils.rs @@ -143,7 +143,10 @@ fn refresh_feed(source: Option, sender: Sender) -> Result<(), Erro where S: IntoIterator + Send + 'static, { - sender.send(Action::HeaderBarShowUpdateIndicator)?; + sender + .send(Action::HeaderBarShowUpdateIndicator) + .map_err(|err| error!("Action Sender: {}", err)) + .ok(); rayon::spawn(move || { if let Some(s) = source { @@ -163,10 +166,12 @@ where sender .send(Action::HeaderBarHideUpdateIndicator) - .expect("Action channel blew up."); + .map_err(|err| error!("Action Sender: {}", err)) + .ok(); sender .send(Action::RefreshAllViews) - .expect("Action channel blew up."); + .map_err(|err| error!("Action Sender: {}", err)) + .ok(); }); Ok(()) } @@ -230,7 +235,10 @@ pub fn set_image_from_path( 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() { guard.remove(&pd_.id()); diff --git a/hammond-gtk/src/widgets/show.rs b/hammond-gtk/src/widgets/show.rs index 8191866..eeff103 100644 --- a/hammond-gtk/src/widgets/show.rs +++ b/hammond-gtk/src/widgets/show.rs @@ -12,7 +12,7 @@ use app::Action; use utils::set_image_from_path; use widgets::episode::episodes_listbox; -use std::sync::mpsc::Sender; +use std::sync::mpsc::{SendError, Sender}; use std::sync::Arc; #[derive(Debug, Clone)] @@ -68,9 +68,7 @@ impl ShowWidget { self.unsub .connect_clicked(clone!(pd, sender => move |bttn| { - if let Err(err) = on_unsub_button_clicked(pd.clone(), bttn, sender.clone()) { - error!("Error: {}", err); - } + on_unsub_button_clicked(pd.clone(), bttn, sender.clone()); })); self.setup_listbox(pd.clone(), sender.clone()); @@ -126,23 +124,23 @@ impl ShowWidget { } } -fn on_unsub_button_clicked( - pd: Arc, - unsub_button: >k::Button, - sender: Sender, -) -> Result<(), Error> { +fn on_unsub_button_clicked(pd: Arc, unsub_button: >k::Button, sender: Sender) { // hack to get away without properly checking for none. // if pressed twice would panic. unsub_button.set_sensitive(false); - sender.send(Action::RemoveShow(pd))?; - 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)?; + let wrap = || -> Result<(), SendError<_>> { + sender.send(Action::RemoveShow(pd))?; - 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, episodes: >k::Frame, sender: Sender) { @@ -151,7 +149,10 @@ fn on_played_button_clicked(pd: Arc, episodes: >k::Frame, sender: Sen 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) -> Result<(), Error> {