Description
Currently, feed checking works like this:
- [main_app] Requests feed check passing along the list of previously downloaded episodes
- [helper] Downloads and parses feed
- [helper] Determines which episodes are new
- [helper] Downloads new torrent files if needed, returns all results
- [main_app] Opens magnet links/launches download script
- [main_app] Saves downloaded episodes to recents
I think this would be better and make #174 much easier to implement:
- [main_app] Requests feed parse
- [helper] Downloads and parses feed
- [main_app] Saves all parsed episodes to recents
- [main_app] Determines which episodes are new
- [main_app] For each new episode, requests download of torrent files if needed, or opens magnet links/launches download script
- [helper] Downloads new torrent files if requested
This would simplify the logic significantly.
Once the above is done, we could add a new field to each recent episode, a status
field that can be downloading
, downloaded
or failed
. Recents would be added as downloading
once parsed, then downloaded
or failed
after they are processed. This will be surfaced in the Recents UI so failed downloads are easy to spot and retry.
We could also add a new notification for failed downloads, and a setting to show all notifications or only failures. Opening either notification would show the recents window, making it quite easy to retry failures.
Maybe wait until swift 5.5 to attempt this – async/await would help a lot.