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");
|
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,
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user