From a218665f8abb6e6a8b69360c8034b8afd0ee9bd4 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Tue, 5 Jan 2016 01:40:15 +0100 Subject: [PATCH 1/3] When deleting a feed, also remove corresponding download log entries --- .../de/danoeh/antennapod/core/storage/PodDBAdapter.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java index 87485a237..c9dcae85d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java @@ -886,6 +886,10 @@ public class PodDBAdapter { } public void removeFeedMedia(FeedMedia media) { + // delete download log entries for feed media + db.delete(TABLE_NAME_DOWNLOAD_LOG, KEY_FEEDFILE + "=? AND " + KEY_FEEDFILETYPE +"=?", + new String[] { String.valueOf(media.getId()), String.valueOf(FeedMedia.FEEDFILETYPE_FEEDMEDIA) }); + db.delete(TABLE_NAME_FEED_MEDIA, KEY_ID + "=?", new String[]{String.valueOf(media.getId())}); } @@ -930,6 +934,9 @@ public class PodDBAdapter { removeFeedItem(item); } } + // delete download log entries for feed + db.delete(TABLE_NAME_DOWNLOAD_LOG, KEY_FEEDFILE + "=? AND " + KEY_FEEDFILETYPE +"=?", + new String[] { String.valueOf(feed.getId()), String.valueOf(Feed.FEEDFILETYPE_FEED) }); db.delete(TABLE_NAME_FEEDS, KEY_ID + "=?", new String[]{String.valueOf(feed.getId())}); From 07d378cffded21626289e96a2730cc65dd67d1e2 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Tue, 5 Jan 2016 01:40:35 +0100 Subject: [PATCH 2/3] Tell DownloadLogFragment to refresh --- .../java/de/danoeh/antennapod/core/storage/DBWriter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index 24519f10d..f74064cfc 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -223,6 +223,11 @@ public class DBWriter { } EventDistributor.getInstance().sendFeedUpdateBroadcast(); + // we assume we also removed download log entries for the feed or its media files. + // especially important if download or refresh failed, as the user should not be able + // to retry these + EventDistributor.getInstance().sendDownloadLogUpdateBroadcast(); + BackupManager backupManager = new BackupManager(context); backupManager.dataChanged(); } From 2d2cf2f933207b0230dce14d9fdd95ed4ae6fba2 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Tue, 5 Jan 2016 01:40:52 +0100 Subject: [PATCH 3/3] Prevent NPE if media was not found --- .../antennapod/adapter/DownloadLogAdapter.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java index 9d7a509cf..582538fb8 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java @@ -134,12 +134,16 @@ public class DownloadLogAdapter extends BaseAdapter { } } else if(holder.typeId == FeedMedia.FEEDFILETYPE_FEEDMEDIA) { FeedMedia media = DBReader.getFeedMedia(holder.id); - try { - DBTasks.downloadFeedItems(context, media.getItem()); - Toast.makeText(context, R.string.status_downloading_label, Toast.LENGTH_SHORT).show(); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage()); + if (media != null) { + try { + DBTasks.downloadFeedItems(context, media.getItem()); + Toast.makeText(context, R.string.status_downloading_label, Toast.LENGTH_SHORT).show(); + } catch (DownloadRequestException e) { + e.printStackTrace(); + DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage()); + } + } else { + Log.wtf(TAG, "Could not find media for id: " + holder.id); } } else { Log.wtf(TAG, "Unexpected type id: " + holder.typeId);