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 || {
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();

View File

@ -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

View File

@ -108,10 +108,12 @@ pub fn add(id: i32, directory: String, sender: Sender<Action>) -> 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();
}
});

View File

@ -143,7 +143,10 @@ fn refresh_feed<S>(source: Option<S>, sender: Sender<Action>) -> Result<(), Erro
where
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 || {
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());

View File

@ -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<Podcast>,
unsub_button: &gtk::Button,
sender: Sender<Action>,
) -> Result<(), Error> {
fn on_unsub_button_clicked(pd: Arc<Podcast>, unsub_button: &gtk::Button, sender: Sender<Action>) {
// 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<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!");
}
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> {