Fix file deletion (#6758)

- When deleting local folders, don't delete files
- Don't try to delete files twice
- Fix deleting non-local feeds
This commit is contained in:
ByteHamster 2023-11-12 23:00:06 +01:00 committed by GitHub
parent 7bfb53cc00
commit 46c3d4e8c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 13 deletions

View File

@ -116,7 +116,16 @@ public class DBWriter {
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()) {
@ -131,15 +140,6 @@ public class DBWriter {
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()) {
@ -224,10 +224,12 @@ public class DBWriter {
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());
}
}