Commit Graph
100 Commits
Author SHA1 Message Date
Jordan Petridis 08ebb9e7d6 pipeline: Make run function generic again.
also minor formatting changes.
2018-04-14 08:03:58 +03:00
Jordan Petridis f5f0a5b873 Remove dead code. 2018-04-14 07:52:55 +03:00
Jordan Petridis 1036176e51 pipeline: Make sure that the futures will be run.
Use .then() combinator to override the result and return
Ok(()) even if the task fails. That allows us to use join_all
instead of the custom written collect_futures function.
2018-04-14 07:41:50 +03:00
Jordan Petridis c6a24e839a h-data: Implement a tail-recursion loop to follow redirects.
Follow http 301 permanent redirects by using a future::loop_fn.
It's kinda funcky, match_status still returns status_codes as erros
and a new DataError Variant had to be added to distiguise when we
should Loop::Continue. This could be cleaned up a lot.
2018-04-14 05:30:29 +03:00
Jordan Petridis 87421ce74d Cargo fmt 2018-04-13 04:35:50 +03:00
Jordan Petridis f94ccb9947 InAppNotification: Remove the need to pass a sender. 2018-04-13 03:46:32 +03:00
Jordan Petridis 1f1d4af8ba Nuke the custom configure file.
There is nothing provided that meson can't do on it's own.
2018-04-13 01:54:35 +03:00
Jordan Petridis 633803e0ad h-gtk: Fix views not updating after a download completes.
While ideally we want episode widget to determine their states
themselves and avoid refreshing the whole view, currently there
is no infrastructure for that which resulted in views not being
updated their EpisodeWidgets stuck in the InProggress state.
2018-04-12 06:54:08 +03:00
Jordan Petridis 74fb8dc75c Update deps. 2018-04-12 05:06:33 +03:00
Jordan Petridis 2523a0cf90 Enable backtraces on the flatpak builds. 2018-04-12 02:49:51 +03:00
Jordan Petridis 47a58a9e65 Improve formatting 2018-04-12 02:49:27 +03:00
Jordan Petridis 27c4fd9b30 Remove .expect() call on channel that can be dropped. 2018-04-12 02:42:52 +03:00
Jordan Petridis f3904c599b Remove dead From implementations. 2018-04-12 02:17:23 +03:00
Jordan Petridis b86f288e86 EpidoseWidget: Recalculate widget's state when cancel is clicked.
Previously we would refresh all the views when download/cancel
button was clicked. This was done mainly to avoid zombie widget bugs
that would arise from shared state.

Now we still refresh all the background views but not the visible one.
Instead the widget has the reponsibility of recalculating it's state.
2018-04-12 02:00:23 +03:00
Jordan Petridis 67bdd3664a EpisodeWidget: Remove Widget::set/get name calls.
I don't even remember why this was there.
2018-04-12 00:13:43 +03:00
Jordan Petridis 8d4fdb8ece EpidoseWidget: Only refresh background views when download is clicked. 2018-04-11 23:59:08 +03:00
Jordan Petridis 0720222423 h-gtk/app: use idle_add instead of timeout_add for updating on startup. 2018-04-10 21:07:07 +03:00
Jordan Petridis 572ab86bc4 Document utils::lazy_load. 2018-04-10 16:57:08 +00:00
Jordan Petridis 29cf5940f5 Lazy_load: move to utils module and make it public. 2018-04-10 16:57:08 +00:00
Jordan Petridis 4b4f5c39d4 Lazy_load: improve the naming scheme. 2018-04-10 16:57:08 +00:00
Jordan Petridis 5069430a3a Lazy_load: remove unnecessary clone of an Rc pointer. 2018-04-10 16:57:08 +00:00
Jordan Petridis 28d7373779 Lazy_load: Use IntoIterator for T, instead of Iterator. 2018-04-10 16:57:08 +00:00
Jordan Petridis 9d5fa04d49 Lazy_load: accept an iterator instead a Vec<_> over T. 2018-04-10 16:57:08 +00:00
Jordan Petridis 43bf8b3f15 Lazy_load: Avoid manually indexing.
make the data: Vec<T> mutable, then reverse the vector
so it can be used as a stack, and then use the ::pop()
method to retrieve the item.

This also avoid the constrain for Clone on T.
2018-04-10 16:57:08 +00:00
Jordan Petridis ed80605755 Move the lazy_load logic to a Generic function. 2018-04-10 16:57:08 +00:00
Jordan Petridis cc84a4637d EpisodesListBox: Do not block while fetching episode backlog. 2018-04-10 16:57:08 +00:00
Jordan Petridis 701b759ba2 EpisodesListBox: Add each widget lazyly. 2018-04-10 16:57:08 +00:00
Jordan Petridis 9cb2782ef9 ShowWidget: Initial Lazier evaluation of the widgets. 2018-04-10 16:57:08 +00:00
Jordan Petridis 5cd0a3c451 Fix the things I broke in b74dbb74bb
Someone really needs to restrict my access to anything that involves
transistors when I am sleep deprived.
2018-04-10 07:01:55 +03:00
Jordan Petridis b74dbb74bb h-data: Remove rel attributes from <a> tags when sanitizing html.
They are invalid in `pango` markup so theres no reason they
should are not needed. Also add some paranoid .trim() calls.
It returnes a &str slice so it's cheap.
2018-04-10 06:31:51 +03:00
Jordan Petridis d332636dd4 Fix the fix that should have fixed the tests. 2018-04-06 19:36:52 +03:00
Jordan Petridis 32654f6cb2 Fix the tests. 2018-04-06 19:18:55 +03:00
Jordan Petridis 14a90e7138 Remove Futures_Cpupool.
The performance boost is not good enough to justify the
code complexity it add and the memory overhead of
yeat another threadpool.

We will start refactoring the whole pipeline implemantation
and might transition to either rayon-futures or tokio-runtime.
2018-04-06 18:18:03 +03:00
Jordan Petridis dd2366a15e Change the git url of the html2pango crate. 2018-04-05 20:44:28 +03:00
Jordan Petridis 370ba2d461 dlmanager: minor cleanup. 2018-04-04 21:36:23 +03:00
Jordan Petridis ef655ef5e0 EpisodeWidget: Keep the widget's heigth contant. Fixes #57 2018-04-04 18:44:23 +03:00
Jordan Petridis 5cc550c830 NewEpisode: refactor a closure to that returned Option<T> to use .and_then instead. 2018-04-04 16:32:03 +03:00
Jordan Petridis 52cbe67756 NewEpisode: refactor another if else statement and document it. 2018-04-04 16:31:59 +03:00
Jordan Petridis c910e0af40 NewPodcast: refactor an if else statement and document it. 2018-04-04 16:31:50 +03:00
Jordan Petridis 7a74534285 Merge branch '25-render-show-description' into 'master'
Resolve "Render link/bold/url attributes in ShowWidget description"

Closes #25

See merge request alatiera/hammond!30
2018-04-03 19:51:49 +00:00
Jordan Petridis 916775462d Update changelog. 2018-04-03 19:42:13 +00:00
Jordan Petridis 3d98600126 h-data: Sanitize html during Podcast/Episode parsing. 2018-04-03 19:42:13 +00:00
Jordan Petridis 7ba834ee8d Update deps now that we are at it. 2018-04-03 19:42:12 +00:00
Jordan Petridis 1c527cba03 Remove more commented out dead code. 2018-04-03 19:42:12 +00:00
Jordan Petridis 2d7ba7b246 h-data/source.rs: Reduce boilerplate. 2018-04-03 19:42:11 +00:00
Jordan Petridis 4ed70a8011 Rss::Error is now Send! 2018-04-03 19:42:11 +00:00
Jordan Petridis 7a3a148359 Remove more dead code. 2018-04-03 19:42:11 +00:00
Jordan Petridis e07e35110d Use pretty assertions! 2018-04-03 19:42:10 +00:00
Jordan Petridis a463753c84 NewEpidode: Use parse rss.description instead of itunes.summary.
We can deal with(sort of) html now, so we should start indexing
the proper rss description. Also cleanup commented out code.
2018-04-03 19:42:10 +00:00
Jordan Petridis a946ddfab1 html_to_pango: Switch to use the new library spawn from this.
Thanks to @danigm for spinning that part of fractal to a shared library.
2018-04-03 19:42:09 +00:00
Jordan Petridis af1cb43bd6 NewPodcast: Prefer the rss.description attribute.
Since we can handle rendering html stuff by converting it to pango
we no longer need the text-only itunes summary attribure.
2018-04-03 19:42:09 +00:00
Jordan Petridis 935d61324f ShowWidget: Convert html to pango markup and render it.
Instead of stipping all the html tags and just using the text
in the label we could *try* converting it to pango markup
which is a bit more flexible than plain text.

The code was copied from Fractal.
2018-04-03 19:42:08 +00:00
Jordan Petridis 10e016f2ea update appdata.xml 2018-04-03 21:41:53 +03:00
Jordan Petridis 154655d571 Readme: Fix the dependancies listed to include rustc and cargo. 2018-04-03 20:49:30 +03:00
Jordan Petridis 491cd8f01c cargo fmt 2018-03-30 17:24:38 +03:00
Jordan Petridis 2b711ff04c Update .doap file 2018-03-30 16:47:09 +03:00
Jordan Petridis 07eadd2364 h-gtk/utils: Improve itunes resolver and add extra test cases. 2018-03-30 16:38:59 +03:00
Jordan Petridis 7086afe73d h-gtk/utils: More refactor to improve formatting. 2018-03-30 15:33:19 +03:00
Jordan Petridis f21398357b h-gtk/utils: Refactor some mutex locks, improve formatting. 2018-03-30 14:39:30 +03:00
Jordan Petridis c338802329 Update deps. 2018-03-30 11:49:54 +03:00
Jordan Petridis c3076e748e cargo fmt 2018-03-30 10:22:34 +03:00
Jordan Petridis 1595256c86 Use rayon to manage all the threads. 2018-03-30 09:31:25 +03:00
Jordan Petridis 0623592f75 Merge branch '7-async-image-loading' into 'master'
Resolve "Make image loading not blocking the programs execution."

Closes #7

See merge request alatiera/Hammond!29
2018-03-29 14:57:44 +00:00
Jordan Petridis f2444f151c h-gtk/utils: Re-work format_err! calls and improve formatting 2018-03-29 15:26:44 +03:00
Jordan Petridis 710a3f2552 Use SendCell::try_get instead of SendCell::into_inner 2018-03-29 15:19:13 +03:00
Jordan Petridis 6071c664e7 Update changelog 2018-03-29 13:32:57 +03:00
Jordan Petridis e203815f4f hammond-gtk/utils.rs: Use a hashset to keep track of cover downloads.
Use a HashSet to check if a download of a cover is already active. If
it is, schedule a callback that will try to set the image from the
cached pixbuf later.
2018-03-29 13:07:46 +03:00
Jordan Petridis c3658080d3 Comment out a test. 2018-03-29 11:37:31 +03:00
Jordan Petridis 8703470010 h-gtk/utils: Use a threadpool to avoid spawning a million threads 2018-03-29 10:24:02 +03:00
Jordan Petridis 88cc7e6fec Fix set_image_from_path test 2018-03-29 09:21:49 +03:00
Jordan Petridis badcbc32c6 Implement async loading of the Show covers. 2018-03-28 22:41:45 +03:00
Jordan Petridis daa8f15ce9 hammond-gtk::utils: change the signature of get_pixbug_from_path and rename it
Requires a gtk::Image as argument now, it sets the pixbuf to the
img directly instead of returning it.
New name is set_image_from_path.

This is ground work so we can later keep the image reference, and
use it to set the image with a callback.
2018-03-28 21:47:10 +03:00
Jordan Petridis 89ee174ded Version bump. 2018-03-28 14:48:43 +03:00
Jordan Petridis cc03c2407b Merge branch '44-empty-show-widget' into 'master'
Resolve "Unpleasant ShowWidget behaviour if the show has no Episodes"

Closes #44

See merge request alatiera/Hammond!28
2018-03-28 11:25:35 +00:00
Jordan Petridis 89254025f3 Update changelog 2018-03-28 13:33:29 +03:00
Jordan Petridis f693c986ec Add an empty_show if Show has no episodes. 2018-03-28 13:24:26 +03:00
Jordan Petridis 3c7f3ecb56 NewPodcast: Fix Image parsing if Itunes ext is Some(None).
Instead of checking if the itunes img url was Some we were assuming
that if an itunes extension existed, it would have an image. That's
not always the case as it turns out there can be an Itunes Ext but
img still be None resulting to not falling back to the Rss image tag.
2018-03-28 12:08:41 +03:00
Jordan Petridis ef3809ed25 Update about dialog. 2018-03-27 16:53:12 +03:00
Jordan Petridis f5ddb7107e Update changelog 2018-03-27 16:43:06 +03:00
Jordan Petridis 1d32018c02 Merge branch 'feature/persist-window-geometry' into 'master'
Issue #50: Persist window geometry

See merge request alatiera/Hammond!25
2018-03-27 12:27:33 +00:00
Jordan Petridis d525d1fe59 InAppNofitication: Make revealer field private, change show signature
Accept an overlay widget that the revealer will be attached to into
the show method. Thus revealer field no longer need to be public.
2018-03-27 12:01:53 +03:00
Jordan Petridis bdc6264701 app.rs: Minor formatting improvments. 2018-03-27 11:50:31 +03:00
Jordan Petridis 7e2640e2d0 ShowWidget: When unsub notification expires, remove show from the ignore list.
This should not make any difference regarding the behaviour since
the Show id is eq to the sqlite rowid which means that even
if the same show was removed and readded it would have diff id.
2018-03-27 11:09:53 +03:00
Jordan Petridis 822a72efde gitlabci: Enable the ubuntu/rust stable build, disable tests in flatpak
Due to meson not understanding cargo, it's actually faster to have
a separate build + test job than trying to compile the cargo
tests twice inside the flatpak enviroment
2018-03-27 10:04:02 +03:00
Jordan Petridis 192b13e393 Merge branch 'issue/52' into 'master'
Fix #52: Double border around main window

Closes #52

See merge request alatiera/Hammond!24
2018-03-26 19:21:04 +00:00
Jordan Petridis 3d39638c99 Merge branch '36-add-undo-for-unsubscribing-from-shows' into 'master'
Resolve "Add "undo" for unsubscribing from shows"

Closes #36

See merge request alatiera/Hammond!27
2018-03-26 18:39:19 +00:00
Jordan Petridis 69e87d129a ShowWidget: Hide shows from the Views when unsub is hit. 2018-03-26 14:34:54 +03:00
Jordan Petridis f7a7510322 Implement the shared HashSet with the ignored Shows ids 2018-03-26 13:25:39 +03:00
Jordan Petridis e9f2ba47f2 dbquerries: Add get_episodes and get_podcasts querries that can filters. 2018-03-26 12:46:13 +03:00
Jordan Petridis b2c95e5a73 ShowWidget: display a notification before removing the show. 2018-03-26 10:57:44 +03:00
Jordan Petridis 482ed7c3c6 Update README 2018-03-26 10:11:43 +03:00
Jordan Petridis e497f73316 gitlabci: run glib-compile-resources from the flatpak enviroment 2018-03-21 14:24:56 +02:00
Jordan Petridis 28965dc2b1 gitlabci: Disable normal builds now that tests can run on the flatpak one. 2018-03-19 12:00:53 +02:00
Jordan Petridis 5425ca35b3 Cleanup .gitignore a bit 2018-03-19 11:52:02 +02:00
Jordan Petridis 9f191d0ab8 gitlabci: Run cargo test inside the flatpak. 2018-03-19 11:33:45 +02:00
Jordan Petridis c2a3ce5096 Why the hell you do not cache cargo. 2018-03-19 07:43:04 +02:00
Jordan Petridis 1af06f2e0d Neaw gtk-rs release, yay! 2018-03-19 06:34:28 +02:00
Jordan Petridis 2f2f11b7bc gitlabci: Fix flatpak issue building only master. 2018-03-18 17:03:16 +02:00
Jordan Petridis 260e6015a1 Merge branch 'issue/53' into 'master'
Fix #53 by setting the HTTP user agent string to the latest Firefox ESR.

Closes #53

See merge request alatiera/Hammond!26
2018-03-18 11:34:12 +00:00
Jordan Petridis 2457e95f0e gitlabci: Improve caching 2018-03-18 05:59:35 +02:00