Only delete from queue if deletion of media succeeds
This commit is contained in:
parent
cf477de365
commit
35f6050194
@ -74,11 +74,27 @@ public class DBWriter {
|
||||
private DBWriter() {
|
||||
}
|
||||
|
||||
private static Future<?> doDeleteFeedMediaOfItem(final Context context,
|
||||
/**
|
||||
* Deletes a downloaded FeedMedia file from the storage device.
|
||||
*
|
||||
* @param context A context that is used for opening a database connection.
|
||||
* @param mediaId ID of the FeedMedia object whose downloaded file should be deleted.
|
||||
*/
|
||||
public static Future<?> deleteFeedMediaOfItem(final Context context,
|
||||
final long mediaId) {
|
||||
return dbExec.submit(() -> {
|
||||
final FeedMedia media = DBReader.getFeedMedia(mediaId);
|
||||
if (media != null) {
|
||||
boolean result = deleteFeedMediaSynchronous(context, media);
|
||||
|
||||
if (result && UserPreferences.shouldDeleteRemoveFromQueue()) {
|
||||
DBWriter.removeQueueItemSynchronous(context, media.getItem(), false);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static boolean deleteFeedMediaSynchronous(Context context, FeedMedia media) {
|
||||
Log.i(TAG, String.format("Requested to delete FeedMedia [id=%d, title=%s, downloaded=%s",
|
||||
media.getId(), media.getEpisodeTitle(), String.valueOf(media.isDownloaded())));
|
||||
if (media.isDownloaded()) {
|
||||
@ -87,7 +103,7 @@ public class DBWriter {
|
||||
if (mediaFile.exists() && !mediaFile.delete()) {
|
||||
MessageEvent evt = new MessageEvent(context.getString(R.string.delete_failed));
|
||||
EventBus.getDefault().post(evt);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
media.setDownloaded(false);
|
||||
media.setFile_url(null);
|
||||
@ -126,23 +142,8 @@ public class DBWriter {
|
||||
}
|
||||
EventBus.getDefault().post(FeedItemEvent.deletedMedia(Collections.singletonList(media.getItem())));
|
||||
EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a downloaded FeedMedia file from the storage device.
|
||||
*
|
||||
* @param context A context that is used for opening a database connection.
|
||||
* @param mediaId ID of the FeedMedia object whose downloaded file should be deleted.
|
||||
*/
|
||||
public static Future<?> deleteFeedMediaOfItem(final Context context,
|
||||
final long mediaId) {
|
||||
Future res = doDeleteFeedMediaOfItem(context, mediaId);
|
||||
if (UserPreferences.shouldDeleteRemoveFromQueue()) {
|
||||
DBWriter.removeQueueItem(context, DBReader.getFeedMedia(mediaId).getItem(), false);
|
||||
}
|
||||
return res;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -428,7 +429,11 @@ public class DBWriter {
|
||||
*/
|
||||
public static Future<?> removeQueueItem(final Context context,
|
||||
final FeedItem item, final boolean performAutoDownload) {
|
||||
return dbExec.submit(() -> {
|
||||
return dbExec.submit(() -> removeQueueItemSynchronous(context, item, performAutoDownload));
|
||||
}
|
||||
|
||||
private static void removeQueueItemSynchronous(final Context context,
|
||||
final FeedItem item, final boolean performAutoDownload) {
|
||||
final PodDBAdapter adapter = PodDBAdapter.getInstance();
|
||||
adapter.open();
|
||||
final List<FeedItem> queue = DBReader.getQueue(adapter);
|
||||
@ -451,8 +456,6 @@ public class DBWriter {
|
||||
if (performAutoDownload) {
|
||||
DBTasks.autodownloadUndownloadedItems(context);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public static Future<?> addFavoriteItem(final FeedItem item) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user