Skip to content

Commit

Permalink
Fix file deletion (AntennaPod#6758)
Browse files Browse the repository at this point in the history
- When deleting local folders, don't delete files
- Don't try to delete files twice
- Fix deleting non-local feeds
  • Loading branch information
ByteHamster committed Nov 12, 2023
1 parent 7bfb53c commit 46c3d4e
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,16 @@ private static boolean deleteFeedMediaSynchronous(@NonNull Context context, @Non
Log.i(TAG, String.format(Locale.US, "Requested to delete FeedMedia [id=%d, title=%s, downloaded=%s",
media.getId(), media.getEpisodeTitle(), media.isDownloaded()));
boolean localDelete = false;
if (media.isDownloaded() || media.getFile_url() != null) {
if (media.getFile_url() != null && media.getFile_url().startsWith("content://")) {
// Local feed
DocumentFile documentFile = DocumentFile.fromSingleUri(context, Uri.parse(media.getFile_url()));
if (documentFile == null || !documentFile.exists() || !documentFile.delete()) {
EventBus.getDefault().post(new MessageEvent(context.getString(R.string.delete_local_failed)));
return false;
}
media.setFile_url(null);
localDelete = true;
} else if (media.getFile_url() != null) {
// delete downloaded media file
File mediaFile = new File(media.getFile_url());
if (mediaFile.exists() && !mediaFile.delete()) {
Expand All @@ -131,15 +140,6 @@ private static boolean deleteFeedMediaSynchronous(@NonNull Context context, @Non
adapter.open();
adapter.setMedia(media);
adapter.close();
} else if (media.getFile_url().startsWith("content://")) {
// Local feed
DocumentFile documentFile = DocumentFile.fromSingleUri(
context, Uri.parse(media.getFile_url()));
if (documentFile == null || !documentFile.exists() || !documentFile.delete()) {
EventBus.getDefault().post(new MessageEvent(context.getString(R.string.delete_local_failed)));
return false;
}
localDelete = true;
}

if (media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId()) {
Expand Down Expand Up @@ -224,10 +224,12 @@ private static void deleteFeedItemsSynchronous(@NonNull Context context, @NonNul
PlaybackPreferences.writeNoMediaPlaying();
IntentUtils.sendLocalBroadcast(context, PlaybackServiceInterface.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
}
if (item.getMedia().isDownloaded()) {
deleteFeedMediaSynchronous(context, item.getMedia());
if (!item.getFeed().isLocalFeed()) {
DownloadServiceInterface.get().cancel(context, item.getMedia());
if (item.getMedia().isDownloaded()) {
deleteFeedMediaSynchronous(context, item.getMedia());
}
}
DownloadServiceInterface.get().cancel(context, item.getMedia());
}
}

Expand Down

0 comments on commit 46c3d4e

Please sign in to comment.