129 Commits

Author SHA1 Message Date
5de8d4b73f Merge branch 'master' into develop 2026-03-22 19:43:30 +01:00
292320ffee Make sure to close all streams and cursors, enable spotbugs (#8357)
### Description

Make sure to close all streams and cursors, enable spotbugs

### 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
2026-03-22 19:39:14 +01:00
a6899a43b2 Reduce number of database queries (#8358)
### 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
2026-03-22 10:57:38 +01:00
57e8ce6fbb Remove fyydlin and connect directly (#8327)
### Description

Remove fyydlin and connect directly. JitPack is not reliable. Because
the fyydlin library is so simple, we don't really need it and can just
connect directly to fyyd. This makes it possible to remove one library
hosted on JitPack. Also taking the chance to make `PodcastSearchResult`
independent from actual providers, so it becomes more of an
interface/model class.

### 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
2026-03-08 17:13:03 +01:00
5ee4012160 Re-implement delete after playback (#8299)
### Description

Re-implement delete after playback in the new playback service. To avoid
a race condition (that we already had in the old playback service), we
have to replace `setMedia` in `deleteFeedMediaSynchronous` with a new
`setMediaDownloadInformation`. Otherwise, we might reset the position
but then it gets overwritten again by deletion setting all attributes.

Closes #8285

### 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
2026-02-21 17:46:08 +01:00
1562188546 Remove Android 5 support (#8276)
### Description

Remove Android 5 support. For supporting Chromecast playback via media3,
we need to upgrade the media3 library. This library no longer supports
Android 5, so we need to bump our minimum version as well. Only 0.13% of
our Google Play users are still on this ancient Android version released
in 2014. Dropping support seems okay now, especially considering that no
one should expose such an old device to the internet anymore. The app
will continue to work on Android 5 but will not receive updates anymore.

### 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
- [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
2026-02-14 22:06:08 +01:00
fb6979a8a3 Upgrade conscrypt to support 16kb page alignment (#8152) 2025-12-11 22:55:35 +01:00
5e6355d514 Include subfolder in GpodnetService URIs (#8110) 2025-11-25 20:55:04 +01:00
ba03d16e1c Merge branch 'master' into develop 2025-11-17 20:40:10 +01:00
250539e904 Backport Sectigo E46 certificate for old Android versions (#8099) 2025-11-17 20:39:36 +01:00
27d9d0ca9b Merge branch 'master' into develop 2025-10-31 21:18:08 +01:00
77c813f62c Faster unit tests (#8043) 2025-10-14 07:43:10 +02:00
23d862185d Add more explicit feature to archive feeds (#8022) 2025-10-11 13:48:08 +02:00
6510bea11d Do not debounce when refreshing different feeds (#8037) 2025-10-10 20:13:53 +02:00
198c151a22 Migrate update interval from hours to minutes (#8005)
This is a bit of a hack so that we have "1" available for "global" (instead of 1 hour) because we cannot change sql default values.
2025-09-22 22:45:16 +02:00
31026dc0f8 Ignore errors when installing Google SSL provider (#8002) 2025-09-21 17:06:17 +02:00
0772b4998d Fix and tune feed item duplicate guesser (#7979) 2025-09-12 21:00:56 +02:00
e8a18d4887 Only load the download log entries we actually need (#7974) 2025-09-07 21:39:26 +02:00
ad94f2f647 Tags above subscriptions screen (#7954) 2025-08-31 11:35:04 +02:00
acc2638f3b Hide pull to refresh on cancel (#7946) 2025-08-30 19:36:13 +02:00
5eccb2e64e Add message: Please wait some time before refreshing again (#7950) 2025-08-27 18:17:25 +02:00
3a94f1f430 Fix some deprecations and warnings (#7947) 2025-08-24 21:47:12 +02:00
9e53b1ecec Run update worker hourly (#7943)
Only refresh the feeds that have not been refreshed since their last interval.
This solves the problem where force-stopping the app during a long feed refresh
would start the refresh all over instead of just taking the feeds that were not
refreshed already.
2025-08-23 20:52:11 +02:00
e539479f2c Upgrade dependencies (#7936) 2025-08-18 20:24:58 +02:00
ed3efd0459 Remove file extensions from local files (#7927) 2025-08-09 20:17:36 +02:00
c3a1f3a98e Fix user-agent not always being sent (#7829)
Co-authored-by: Tony Tam <engineer.tonytam@gmail.com>
2025-06-01 22:36:44 +02:00
a244fe0897 Fix legacy sync queue state if a feed is both added and removed (#7768) 2025-05-31 08:35:41 +02:00
c2f7dabc8b Add incompletely played episodes to playback history (#7815) 2025-05-27 22:52:43 +02:00
42d62ab57a Don't crash when using invalid characters in host name (#7791) 2025-04-30 22:58:52 +02:00
560321cfd6 Vtt support for transcripts (#7537) 2025-04-30 22:18:07 +02:00
480835f733 Faster search by removing fyyd from default providers (#7758) 2025-04-13 21:02:46 +02:00
f68387199c Switch dependency version on JitPack (#7746)
Who knows what happened exactly, but JitPack changed something
to the way they deliver dependencies. The version with the
v prefix got rebuilt (files inside jar have a new time stamp,
jar has a new hash, but contents are the same).
Now it no longer has any dependencies attached to it.
Switching to the version without v, which still works.
2025-04-07 22:47:44 +02:00
a01573523c Count running downloads towards number of downloaded episodes (#7730) 2025-04-02 23:15:22 +02:00
819fd63332 Remove and fix suppressions for some active files (#7692) 2025-03-11 20:51:03 +01:00
cafe97e570 Fix flaky test sorting by release date (#7691) 2025-03-09 11:05:35 +01:00
0ab7f9e9ea Partially work around duplicated feeds when using sync (#7671)
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
2025-02-22 08:10:27 +01:00
3ed5b0bfa4 Add option to automatically download queue (#7627)
We already added the queue to the auto-download candidates.
Now that auto-download was rewritten to not be a "master switch",
the code is called even if auto-download is turned off for all subscriptions.
This lead to queued episodes being downloaded for users who had auto-download disabled.

Convert the feature to an explicit setting to avoid behavior changes for users.
Also, this implements a setting to auto-download the queue,
which users have requested because they did not know that AntennaPod already does this.
Finally, it should solve user confusion where they automatically add episodes to the queue
but set the auto-download filter to ignore specific episodes.
2025-02-02 19:28:23 +01:00
baedabbc4b Target Android 15 (#7626) 2025-01-25 08:16:48 +01:00
e4ac872b74 Convert autodownloads from master switch to per-podcast setting (#7458) 2025-01-18 12:31:44 +01:00
c0077192d7 Split notification channel of downloading and refreshing (#7610) 2025-01-17 20:45:40 +01:00
83199a6057 Wait in SyncService before enqueueing subscriptions refresh (#7544)
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.
2024-12-10 21:02:15 +01:00
ea32469a61 Fix sync getting stuck in endless loop (#7533) 2024-11-28 20:09:06 +01:00
43e19327b8 Tweak translations (#7503) 2024-11-15 19:48:15 +01:00
26c0deaa09 Fix tests sometimes crashing because sync is not initialized (#7490) 2024-11-10 11:45:38 +01:00
f30cdf0e80 Sync after refreshing (#7475)
- 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.
2024-11-01 10:29:11 +01:00
4a92a5e019 Make sync service interface more standard (#7479) 2024-10-30 21:30:29 +01:00
a0b751e64d Remove imports only used in JavaDoc (#7468) 2024-10-27 21:11:24 +01:00
c36cdafad6 Fix crash when opening deeplink that does not have a url (#7466) 2024-10-21 22:21:17 +02:00
4990d95f33 Work around Android 5 returning 'null' duration for opus files (#7440) 2024-10-03 21:14:44 +02:00
751c358337 Do not print toplist authors twice (#7429) 2024-09-28 15:16:24 +02:00