From bc6eeec66301e7c85c94b59d14ccbed4ed7e9ca9 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Mon, 16 Apr 2018 04:03:44 +0300 Subject: [PATCH] Replace if Let Err(_) with .map_err().ok() patterns. I dislike the indentation and the noise if let adds. --- hammond-data/src/utils.rs | 19 ++++++------- hammond-gtk/src/app.rs | 44 +++++++++++++++--------------- hammond-gtk/src/headerbar.rs | 18 ++++++------ hammond-gtk/src/manager.rs | 7 ++--- hammond-gtk/src/stacks/content.rs | 32 +++++++++++----------- hammond-gtk/src/utils.rs | 13 ++++----- hammond-gtk/src/views/episodes.rs | 6 ++-- hammond-gtk/src/views/shows.rs | 16 ++++------- hammond-gtk/src/widgets/episode.rs | 32 ++++++++++------------ hammond-gtk/src/widgets/show.rs | 14 +++++----- 10 files changed, 96 insertions(+), 105 deletions(-) diff --git a/hammond-data/src/utils.rs b/hammond-data/src/utils.rs index 4cc3bd4..aa5289c 100644 --- a/hammond-data/src/utils.rs +++ b/hammond-data/src/utils.rs @@ -28,10 +28,10 @@ fn download_checker() -> Result<(), DataError> { }) .for_each(|ep| { ep.set_local_uri(None); - if let Err(err) = ep.save() { - error!("Error while trying to update episode: {:#?}", ep); - error!("{}", err); - }; + ep.save() + .map_err(|err| error!("{}", err)) + .map_err(|_| error!("Error while trying to update episode: {:#?}", ep)) + .ok(); }); Ok(()) @@ -48,12 +48,11 @@ fn played_cleaner(cleanup_date: DateTime) -> Result<(), DataError> { .for_each(|ep| { let limit = ep.played().unwrap(); if now_utc > limit { - if let Err(err) = delete_local_content(ep) { - error!("Error while trying to delete file: {:?}", ep.local_uri()); - error!("{}", err); - } else { - info!("Episode {:?} was deleted succesfully.", ep.local_uri()); - }; + delete_local_content(ep) + .map(|_| info!("Episode {:?} was deleted succesfully.", ep.local_uri())) + .map_err(|err| error!("Error: {}", err)) + .map_err(|_| error!("Failed to delete file: {:?}", ep.local_uri())) + .ok(); } }); Ok(()) diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index 2402ea2..ec818ee 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -186,10 +186,12 @@ impl App { Ok(Action::RefreshEpisodesView) => content.update_episode_view(), Ok(Action::RefreshEpisodesViewBGR) => content.update_episode_view_if_baground(), Ok(Action::ReplaceWidget(pd)) => { - if let Err(err) = content.get_shows().replace_widget(pd) { - error!("Something went wrong while trying to update the ShowWidget."); - error!("Error: {}", err); - } + content + .get_shows() + .replace_widget(pd.clone()) + .map_err(|err| error!("Failed to update ShowWidget: {}", err)) + .map_err(|_| error!("Failed ot update ShowWidget {}", pd.title())) + .ok(); } Ok(Action::ShowWidgetAnimated) => content.get_shows().switch_widget_animated(), Ok(Action::ShowShowsAnimated) => content.get_shows().switch_podcasts_animated(), @@ -200,9 +202,9 @@ impl App { Ok(Action::MarkAllPlayerNotification(pd)) => { let id = pd.id(); let callback = clone!(sender => move || { - if let Err(err) = mark_all_watched(&pd, sender.clone()) { - error!("Something went horribly wrong with the notif callback: {}", err); - } + mark_all_watched(&pd, sender.clone()) + .map_err(|err| error!("Notif Callback Error: {}", err)) + .ok(); glib::Continue(false) }); @@ -219,23 +221,23 @@ impl App { Ok(Action::RemoveShow(pd)) => { let text = format!("Unsubscribed from {}", pd.title()); - if let Err(err) = utils::ignore_show(pd.id()) { - error!("Could not insert {} to the ignore list.", pd.title()); - error!("Error: {}", err); - } + utils::ignore_show(pd.id()) + .map_err(|err| error!("Error: {}", err)) + .map_err(|_| error!("Could not insert {} to the ignore list.", pd.title())) + .ok(); let callback = clone!(pd => move || { - if let Err(err) = utils::uningore_show(pd.id()) { - error!("Could not remove {} from the ignore list.", pd.title()); - error!("Error: {}", err); - } + utils::uningore_show(pd.id()) + .map_err(|err| error!("Error: {}", err)) + .map_err(|_| error!("Could not remove {} from the ignore list.", pd.title())) + .ok(); // Spawn a thread so it won't block the ui. rayon::spawn(clone!(pd => move || { - if let Err(err) = delete_show(&pd) { - error!("Something went wrong trying to remove {}", pd.title()); - error!("Error: {}", err); - } + delete_show(&pd) + .map_err(|err| error!("Error: {}", err)) + .map_err(|_| error!("Failed to delete {}", pd.title())) + .ok(); })); glib::Continue(false) }); @@ -249,9 +251,7 @@ impl App { }; let undo_callback = move || { - if let Err(err) = undo_wrap() { - error!("{}", err) - } + undo_wrap().map_err(|err| error!("{}", err)).ok(); }; let notif = InAppNotification::new(text, callback, undo_callback); diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index fcf7095..13aa5c6 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -76,15 +76,15 @@ impl Header { self.switch.set_stack(&content.get_stack()); new_url.connect_changed(clone!(add_button => move |url| { - if let Err(err) = on_url_change(url, &result_label, &add_button) { - error!("Error: {}", err); - } + on_url_change(url, &result_label, &add_button) + .map_err(|err| error!("Error: {}", err)) + .ok(); })); add_button.connect_clicked(clone!(add_popover, new_url, sender => move |_| { - if let Err(err) = on_add_bttn_clicked(&new_url, sender.clone()) { - error!("Error: {}", err); - } + on_add_bttn_clicked(&new_url, sender.clone()) + .map_err(|err| error!("Error: {}", err)) + .ok(); add_popover.hide(); })); @@ -115,9 +115,9 @@ impl Header { add_toggle.show(); back.hide(); show_title.hide(); - if let Err(err) = sender.send(Action::ShowShowsAnimated) { - error!("Action channel blew up: {}", err); - } + sender.send(Action::ShowShowsAnimated) + .map_err(|err| error!("Action Sender: {}", err)) + .ok(); }), ); } diff --git a/hammond-gtk/src/manager.rs b/hammond-gtk/src/manager.rs index a05f79a..a4120e6 100644 --- a/hammond-gtk/src/manager.rs +++ b/hammond-gtk/src/manager.rs @@ -92,10 +92,9 @@ pub fn add(id: i32, directory: String, sender: Sender) -> Result<(), Err let id = episode.rowid(); let pid = episode.podcast_id(); - if let Err(err) = get_episode(&mut episode.into(), directory.as_str(), Some(prog)) { - error!("Error while trying to download an episode"); - error!("Error: {}", err); - } + get_episode(&mut episode.into(), directory.as_str(), Some(prog)) + .map_err(|err| error!("Download Failed: {}", err)) + .ok(); if let Ok(mut m) = ACTIVE_DOWNLOADS.write() { let foo = m.remove(&id); diff --git a/hammond-gtk/src/stacks/content.rs b/hammond-gtk/src/stacks/content.rs index ede4230..86188a9 100644 --- a/hammond-gtk/src/stacks/content.rs +++ b/hammond-gtk/src/stacks/content.rs @@ -43,10 +43,10 @@ impl Content { // TODO: Maybe propagate the error? pub fn update_episode_view(&self) { - if let Err(err) = self.episodes.update() { - error!("Something went wrong while trying to update the episode view."); - error!("Error: {}", err); - } + self.episodes + .update() + .map_err(|err| error!("Failed to update EpisodeView: {}", err)) + .ok(); } pub fn update_episode_view_if_baground(&self) { @@ -56,24 +56,24 @@ impl Content { } pub fn update_shows_view(&self) { - if let Err(err) = self.shows.update_podcasts() { - error!("Something went wrong while trying to update the ShowsView."); - error!("Error: {}", err); - } + self.shows + .update_podcasts() + .map_err(|err| error!("Failed to update ShowsView: {}", err)) + .ok(); } pub fn update_widget(&self) { - if let Err(err) = self.shows.update_widget() { - error!("Something went wrong while trying to update the Show Widget."); - error!("Error: {}", err); - } + self.shows + .update_widget() + .map_err(|err| error!("Failed to update ShowsWidget: {}", err)) + .ok(); } pub fn update_widget_if_same(&self, pid: i32) { - if let Err(err) = self.shows.update_widget_if_same(pid) { - error!("Something went wrong while trying to update the Show Widget."); - error!("Error: {}", err); - } + self.shows + .update_widget_if_same(pid) + .map_err(|err| error!("Failed to update ShowsWidget: {}", err)) + .ok(); } pub fn update_widget_if_visible(&self) { diff --git a/hammond-gtk/src/utils.rs b/hammond-gtk/src/utils.rs index b0a7972..fadad58 100644 --- a/hammond-gtk/src/utils.rs +++ b/hammond-gtk/src/utils.rs @@ -106,19 +106,18 @@ pub fn get_ignored_shows() -> Result, Error> { } pub fn cleanup(cleanup_date: DateTime) { - if let Err(err) = checkup(cleanup_date) { - error!("Check up failed: {}", err); - } + checkup(cleanup_date) + .map_err(|err| error!("Check up failed: {}", err)) + .ok(); } pub fn refresh(source: Option, sender: Sender) where S: IntoIterator + Send + 'static, { - if let Err(err) = refresh_feed(source, sender) { - error!("An error occured while trying to update the feeds."); - error!("Error: {}", err); - } + refresh_feed(source, sender) + .map_err(|err| error!("Failed to update feeds: {}", err)) + .ok(); } pub fn get_refresh_interval(settings: &Settings) -> Duration { diff --git a/hammond-gtk/src/views/episodes.rs b/hammond-gtk/src/views/episodes.rs index 8dac2f2..bcdcd46 100644 --- a/hammond-gtk/src/views/episodes.rs +++ b/hammond-gtk/src/views/episodes.rs @@ -220,9 +220,9 @@ impl EpisodesViewWidget { } fn init(&self, podcast_id: i32) { - if let Err(err) = self.set_cover(podcast_id) { - error!("Failed to set a cover: {}", err) - } + self.set_cover(podcast_id) + .map_err(|err| error!("Failed to set a cover: {}", err)) + .ok(); self.container.pack_start(&self.episode, true, true, 6); } diff --git a/hammond-gtk/src/views/shows.rs b/hammond-gtk/src/views/shows.rs index 54c1a70..d17e21c 100644 --- a/hammond-gtk/src/views/shows.rs +++ b/hammond-gtk/src/views/shows.rs @@ -42,12 +42,9 @@ impl ShowsPopulated { pub fn init(&self, sender: Sender) -> Result<(), Error> { self.flowbox.connect_child_activated(move |_, child| { - if let Err(err) = on_child_activate(child, sender.clone()) { - error!( - "Something went wrong during flowbox child activation: {}.", - err - ) - }; + on_child_activate(child, sender.clone()) + .map_err(|err| error!("Error along flowbox child activation: {}", err)) + .ok(); }); // Populate the flowbox with the Podcasts. self.populate_flowbox() @@ -126,10 +123,9 @@ impl ShowsChild { self.container.set_tooltip_text(pd.title()); WidgetExt::set_name(&self.child, &pd.id().to_string()); - let pd = Arc::new(pd.into()); - if let Err(err) = self.set_cover(pd) { - error!("Failed to set a cover: {}", err) - } + self.set_cover(Arc::new(pd.into())) + .map_err(|err| error!("Failed to set a cover: {}", err)) + .ok(); } fn set_cover(&self, pd: Arc) -> Result<(), Error> { diff --git a/hammond-gtk/src/widgets/episode.rs b/hammond-gtk/src/widgets/episode.rs index 507ca6e..4f35c43 100644 --- a/hammond-gtk/src/widgets/episode.rs +++ b/hammond-gtk/src/widgets/episode.rs @@ -97,10 +97,10 @@ impl EpisodeWidget { self.set_duration(episode.duration()); // Determine what the state of the media widgets should be. - if let Err(err) = determine_media_state(self.media.clone(), &episode) { - error!("Something went wrong determining the Media State."); - error!("Error: {}", err); - } + determine_media_state(self.media.clone(), &episode) + .map_err(|err| error!("Error: {}", err)) + .map_err(|_| error!("Could not determine Media State")) + .ok(); let episode = Arc::new(Mutex::new(episode)); self.connect_buttons(episode, sender); @@ -111,9 +111,9 @@ impl EpisodeWidget { if let Ok(media) = self.media.lock() { media.play_connect_clicked(clone!(episode, sender => move |_| { if let Ok(mut ep) = episode.lock() { - if let Err(err) = on_play_bttn_clicked(&mut ep, title.clone(), sender.clone()){ - error!("Error: {}", err); - }; + on_play_bttn_clicked(&mut ep, title.clone(), sender.clone()) + .map_err(|err| error!("Error: {}", err)) + .ok(); } })); @@ -122,16 +122,14 @@ impl EpisodeWidget { // Make the button insensitive so it won't be pressed twice dl.set_sensitive(false); if let Ok(ep) = episode.lock() { - if let Err(err) = on_download_clicked(&ep, sender.clone()) { - error!("Download failed to start."); - error!("Error: {}", err); - } else { - info!("Donwload started succesfully."); - if let Err(err) = determine_media_state(media_machine.clone(), &ep) { - error!("Something went wrong determining the Media State."); - error!("Error: {}", err); - } - } + on_download_clicked(&ep, sender.clone()) + .and_then(|_| { + info!("Donwload started succesfully."); + determine_media_state(media_machine.clone(), &ep) + }) + .map_err(|err| error!("Error: {}", err)) + .map_err(|_| error!("Could not determine Media State")) + .ok(); } // Restore sensitivity after operations above complete diff --git a/hammond-gtk/src/widgets/show.rs b/hammond-gtk/src/widgets/show.rs index eeff103..0d44e21 100644 --- a/hammond-gtk/src/widgets/show.rs +++ b/hammond-gtk/src/widgets/show.rs @@ -74,18 +74,18 @@ impl ShowWidget { self.setup_listbox(pd.clone(), sender.clone()); self.set_description(pd.description()); - if let Err(err) = self.set_cover(pd.clone()) { - error!("Failed to set a cover: {}", err) - } + self.set_cover(pd.clone()) + .map_err(|err| error!("Failed to set a cover: {}", err)) + .ok(); let link = pd.link().to_owned(); self.link.set_tooltip_text(Some(link.as_str())); self.link.connect_clicked(move |_| { info!("Opening link: {}", &link); - if let Err(err) = open::that(&link) { - error!("Failed to open link: {}", &link); - error!("Error: {}", err); - } + open::that(&link) + .map_err(|err| error!("Error: {}", err)) + .map_err(|_| error!("Failed open link: {}", &link)) + .ok(); }); let show_menu: gtk::Popover = builder.get_object("show_menu").unwrap();