Remove no longer available updates when refreshing the list

This commit is contained in:
Gabriele M
2017-07-07 22:05:23 +02:00
parent d327d61cc6
commit c90700d3d2
3 changed files with 24 additions and 0 deletions

View File

@@ -161,10 +161,14 @@ public class UpdatesActivity extends AppCompatActivity {
Log.d(TAG, "Adding remote updates"); Log.d(TAG, "Adding remote updates");
UpdaterControllerInt controller = mUpdaterService.getUpdaterController(); UpdaterControllerInt controller = mUpdaterService.getUpdaterController();
boolean newUpdates = false; boolean newUpdates = false;
List<String> updatesOnline = new ArrayList<>();
for (UpdateDownload update : Utils.parseJson(jsonFile, true)) { for (UpdateDownload update : Utils.parseJson(jsonFile, true)) {
newUpdates |= controller.addUpdate(update); newUpdates |= controller.addUpdate(update);
updatesOnline.add(update.getDownloadId());
} }
controller.setUpdatesAvailableOnline(updatesOnline, true);
if (manualRefresh) { if (manualRefresh) {
showSnackBar( showSnackBar(
newUpdates ? R.string.snack_updates_found : R.string.snack_no_updates_found, newUpdates ? R.string.snack_updates_found : R.string.snack_no_updates_found,

View File

@@ -291,6 +291,24 @@ public class UpdaterController implements UpdaterControllerInt {
return true; return true;
} }
@Override
public void setUpdatesAvailableOnline(List<String> downloadIds, boolean purgeList) {
List<String> toRemove = new ArrayList<>();
for (DownloadEntry entry : mDownloads.values()) {
boolean online = downloadIds.contains(entry.mUpdate.getDownloadId());
entry.mUpdate.setAvailableOnline(online);
if (!online && purgeList &&
entry.mUpdate.getPersistentStatus() == UpdateStatus.Persistent.UNKNOWN) {
toRemove.add(entry.mUpdate.getDownloadId());
}
}
for (String downloadId : toRemove) {
Log.d(TAG, downloadId + " no longer available online, removing");
mDownloads.remove(downloadId);
notifyUpdateDelete(downloadId);
}
}
@Override @Override
public boolean addUpdate(UpdateDownload update) { public boolean addUpdate(UpdateDownload update) {
return addUpdate(update, true); return addUpdate(update, true);

View File

@@ -30,6 +30,8 @@ public interface UpdaterControllerInt {
UpdateDownload getUpdate(String downloadId); UpdateDownload getUpdate(String downloadId);
void setUpdatesAvailableOnline(List<String> downloadIds, boolean purgeList);
boolean startDownload(String downloadId); boolean startDownload(String downloadId);
boolean pauseDownload(String downloadId); boolean pauseDownload(String downloadId);