h-gtk: Nuke Action::UpdateSource.

Use inline glib::idle_add since it can be called on the spot.
This commit is contained in:
Jordan Petridis 2018-04-16 04:34:17 +03:00
parent bc6eeec663
commit a9abd75b51
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
2 changed files with 12 additions and 18 deletions

View File

@ -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<Source>),
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<Vec<_>> = None;
utils::refresh(s, sender.clone());
}
}
Ok(Action::RefreshAllViews) => content.update(),
Ok(Action::RefreshShowsView) => content.update_shows_view(),
Ok(Action::RefreshWidget) => content.update_widget(),

View File

@ -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<Vec<_>> = None;
refresh(s, sender.clone());
glib::Continue(false)
}));
}));
self.about_button
@ -171,9 +173,10 @@ fn on_add_bttn_clicked(entry: &gtk::Entry, sender: Sender<Action>) -> 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(())
}