Merge pull request #3461 from ByteHamster/do-not-notify-cancelled-downloads

Do not notify cancelled downloads
This commit is contained in:
H. Lehmann 2019-09-29 11:10:59 +02:00 committed by GitHub
commit fb377258f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 31 additions and 8 deletions

View File

@ -13,6 +13,7 @@ import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import android.util.Log;
@ -190,10 +191,8 @@ public class DownloadService extends Service {
handleFailedDownload(status, downloader.getDownloadRequest());
if (type == FeedMedia.FEEDFILETYPE_FEEDMEDIA) {
long id = status.getFeedfileId();
FeedMedia media = DBReader.getFeedMedia(id);
FeedItem item;
if (media == null || (item = media.getItem()) == null) {
FeedItem item = getFeedItemFromId(status.getFeedfileId());
if (item == null) {
return;
}
boolean httpNotFound = status.getReason() == DownloadError.ERROR_HTTP_DATA_ERROR
@ -213,9 +212,8 @@ public class DownloadService extends Service {
// if FeedMedia download has been canceled, fake FeedItem update
// so that lists reload that it
if (status.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) {
FeedMedia media = DBReader.getFeedMedia(status.getFeedfileId());
FeedItem item;
if (media == null || (item = media.getItem()) == null) {
FeedItem item = getFeedItemFromId(status.getFeedfileId());
if (item == null) {
return;
}
EventBus.getDefault().post(FeedItemEvent.updated(item));
@ -386,6 +384,12 @@ public class DownloadService extends Service {
Downloader d = getDownloader(url);
if (d != null) {
d.cancel();
DownloadRequester.getInstance().removeDownload(d.getDownloadRequest());
FeedItem item = getFeedItemFromId(d.getDownloadRequest().getFeedfileId());
if (item != null) {
EventBus.getDefault().post(FeedItemEvent.updated(item));
}
} else {
Log.e(TAG, "Could not cancel download with url " + url);
}
@ -578,6 +582,16 @@ public class DownloadService extends Service {
syncExecutor.execute(new FailedDownloadHandler(status, request));
}
@Nullable
private FeedItem getFeedItemFromId(long id) {
FeedMedia media = DBReader.getFeedMedia(id);
if (media != null) {
return media.getItem();
} else {
return null;
}
}
/**
* Takes a single Feed, parses the corresponding file and refreshes
* information in the manager
@ -1058,7 +1072,13 @@ public class DownloadService extends Service {
private final Runnable postDownloaderTask = new Runnable() {
@Override
public void run() {
List<Downloader> list = Collections.unmodifiableList(downloads);
List<Downloader> runningDownloads = new ArrayList<>();
for (Downloader downloader : downloads) {
if (!downloader.cancelled) {
runningDownloads.add(downloader);
}
}
List<Downloader> list = Collections.unmodifiableList(runningDownloads);
EventBus.getDefault().postSticky(DownloadEvent.refresh(list));
postHandler.postDelayed(postDownloaderTask, 1500);
}
@ -1076,6 +1096,9 @@ public class DownloadService extends Service {
private static String compileNotificationString(List<Downloader> downloads) {
List<String> lines = new ArrayList<>(downloads.size());
for (Downloader downloader : downloads) {
if (downloader.cancelled) {
continue;
}
StringBuilder line = new StringBuilder("");
DownloadRequest request = downloader.getDownloadRequest();
switch (request.getFeedfileType()) {