Remove no longer available updates when refreshing the list
This commit is contained in:
@@ -161,10 +161,14 @@ public class UpdatesActivity extends AppCompatActivity {
|
||||
Log.d(TAG, "Adding remote updates");
|
||||
UpdaterControllerInt controller = mUpdaterService.getUpdaterController();
|
||||
boolean newUpdates = false;
|
||||
List<String> 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,
|
||||
|
@@ -291,6 +291,24 @@ public class UpdaterController implements UpdaterControllerInt {
|
||||
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
|
||||
public boolean addUpdate(UpdateDownload update) {
|
||||
return addUpdate(update, true);
|
||||
|
@@ -30,6 +30,8 @@ public interface UpdaterControllerInt {
|
||||
|
||||
UpdateDownload getUpdate(String downloadId);
|
||||
|
||||
void setUpdatesAvailableOnline(List<String> downloadIds, boolean purgeList);
|
||||
|
||||
boolean startDownload(String downloadId);
|
||||
|
||||
boolean pauseDownload(String downloadId);
|
||||
|
Reference in New Issue
Block a user