### Description
Reduce number of database queries. Instead of loading queue and
favorites lists in separate queries, let sqlite do the join
### Checklist
<!--
To help us keep the issue tracker clean and work as efficient as
possible,
please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
spotbugsPlayDebug spotbugsDebug :app:lintPlayDebug`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
Connect to each newly added URL with a HEAD request.
If there is a redirect to an existing URL, ignore the added feed.
This does not handle `itunes:new-feed-url` or other redirects.
This will likely still cause problems with synchronization
because the server still knows the old url.
However, it makes the situation better than it was before by avoiding the duplicates.
For a proper fix, we need a new protocol that can deal with redirects more elegantly
Apparently requesting to run the manager cancels the already running one on some devices.
This leads to an endless loop trying to refresh over and over again.
- Enables users to manually trigger sync
- Makes sure that we actually refresh when a new feed arrives:
Previously, we might request the feed to be refreshed but then don't
actually wait for it to be completed because the refresh service
wouldn't start up quickly enough.
This makes sure that we do not try to sync again before the refresh
actually went through, even if the sync service is called multiple times.
- Run Checkstyle with gradle to make it easier for users
- No longer needs different configuration for new code
- Exclude current violations
- Fix some violations that somehow couldn't be specified in the exclusion file
- Print SpotBugs/Lint/Checkstly violations in GitHub format
- Then the CI run gets annotated on the web UI
Half of the toplist no longer returns a valid podcast feed.
Some of the suggested tags are just random characters and none of them
is actually helpful.
This does not remove search or synchronization.
Just gpodder discovery.