diff --git a/src/org/lineageos/updater/UpdatesActivity.java b/src/org/lineageos/updater/UpdatesActivity.java index 1325d698..f6858f28 100644 --- a/src/org/lineageos/updater/UpdatesActivity.java +++ b/src/org/lineageos/updater/UpdatesActivity.java @@ -161,10 +161,14 @@ public class UpdatesActivity extends AppCompatActivity { Log.d(TAG, "Adding remote updates"); UpdaterControllerInt controller = mUpdaterService.getUpdaterController(); boolean newUpdates = false; + List updatesOnline = new ArrayList<>(); for (UpdateDownload update : Utils.parseJson(jsonFile, true)) { newUpdates |= controller.addUpdate(update); + updatesOnline.add(update.getDownloadId()); } + controller.setUpdatesAvailableOnline(updatesOnline, true); + if (manualRefresh) { showSnackBar( newUpdates ? R.string.snack_updates_found : R.string.snack_no_updates_found, diff --git a/src/org/lineageos/updater/controller/UpdaterController.java b/src/org/lineageos/updater/controller/UpdaterController.java index 6f209093..c2ab08d2 100644 --- a/src/org/lineageos/updater/controller/UpdaterController.java +++ b/src/org/lineageos/updater/controller/UpdaterController.java @@ -291,6 +291,24 @@ public class UpdaterController implements UpdaterControllerInt { return true; } + @Override + public void setUpdatesAvailableOnline(List downloadIds, boolean purgeList) { + List 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 public boolean addUpdate(UpdateDownload update) { return addUpdate(update, true); diff --git a/src/org/lineageos/updater/controller/UpdaterControllerInt.java b/src/org/lineageos/updater/controller/UpdaterControllerInt.java index 014d8af7..add5dd4d 100644 --- a/src/org/lineageos/updater/controller/UpdaterControllerInt.java +++ b/src/org/lineageos/updater/controller/UpdaterControllerInt.java @@ -30,6 +30,8 @@ public interface UpdaterControllerInt { UpdateDownload getUpdate(String downloadId); + void setUpdatesAvailableOnline(List downloadIds, boolean purgeList); + boolean startDownload(String downloadId); boolean pauseDownload(String downloadId);