diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index ec818ee..198c718 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -10,7 +10,7 @@ use failure::Error; use rayon; use hammond_data::utils::delete_show; -use hammond_data::{Podcast, Source}; +use hammond_data::Podcast; use appnotif::*; use headerbar::Header; @@ -25,7 +25,6 @@ use std::time::Duration; #[derive(Clone, Debug)] pub enum Action { - UpdateSources(Option), RefreshAllViews, RefreshEpisodesView, RefreshEpisodesViewBGR, @@ -170,14 +169,6 @@ impl App { let receiver = self.receiver; gtk::idle_add(move || { match receiver.recv_timeout(Duration::from_millis(10)) { - Ok(Action::UpdateSources(source)) => { - if let Some(s) = source { - utils::refresh(Some(vec![s]), sender.clone()); - } else { - let s: Option> = None; - utils::refresh(s, sender.clone()); - } - } Ok(Action::RefreshAllViews) => content.update(), Ok(Action::RefreshShowsView) => content.update_shows_view(), Ok(Action::RefreshWidget) => content.update_widget(), diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index 13aa5c6..617bcac 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -1,3 +1,4 @@ +use glib; use gtk; use gtk::prelude::*; @@ -12,7 +13,7 @@ use std::sync::mpsc::Sender; use app::Action; use stacks::Content; -use utils::itunes_to_rss; +use utils::{itunes_to_rss, refresh}; #[derive(Debug, Clone)] pub struct Header { @@ -92,10 +93,11 @@ impl Header { self.update_button .connect_clicked(clone!(sender => move |_| { - sender - .send(Action::UpdateSources(None)) - .map_err(|err| error!("Action Sender: {}", err)) - .ok(); + glib::idle_add(clone!(sender => move || { + let s: Option> = None; + refresh(s, sender.clone()); + glib::Continue(false) + })); })); self.about_button @@ -171,9 +173,10 @@ fn on_add_bttn_clicked(entry: >k::Entry, sender: Sender) -> Result<(), let source = Source::from_url(&url).context("Failed to convert url to a Source entry.")?; entry.set_text(""); - sender - .send(Action::UpdateSources(Some(source))) - .context("App channel blew up.")?; + glib::idle_add(move || { + refresh(Some(vec![source.clone()]), sender.clone()); + glib::Continue(false) + }); Ok(()) }