diff --git a/CHANGELOG.md b/CHANGELOG.md index 214b190729..1e9652cbf8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,7 +25,8 @@ - **FEATURE(Linux):** Dark Mode Erkennung funktioniert nun auch mit GNOME. Danke an @swsnr! - **FEATURE(Linux):** Die Fensterdekorationen der Windows/macOS-Versionen werden nun auch unter Linux verwendet. - **FEATURE:** Das Nachladen von fehlenden Filmgrößen kann in den *Einstellungen/Aufzeichnen und Abspielen/Download* abgeschaltet werden. - +- **FEATURE:** Fehlerhafte Downloads werden nun automatisch aus der Gesehen Datenbank entfernt. +- # **14.0.0** - Es wird nun Java 20 verwendet. - User Interface wurde primär für neue macOS-Versionen überarbeitet. diff --git a/src/main/java/mediathek/controller/starter/DirectHttpDownload.java b/src/main/java/mediathek/controller/starter/DirectHttpDownload.java index efcc1f0365..edf492fa69 100644 --- a/src/main/java/mediathek/controller/starter/DirectHttpDownload.java +++ b/src/main/java/mediathek/controller/starter/DirectHttpDownload.java @@ -5,6 +5,7 @@ import mediathek.config.Konstanten; import mediathek.controller.MVBandwidthCountingInputStream; import mediathek.controller.ThrottlingInputStream; +import mediathek.controller.history.SeenHistoryController; import mediathek.daten.DatenDownload; import mediathek.gui.dialog.DialogContinueDownload; import mediathek.gui.dialog.MeldungDownloadfehler; @@ -340,6 +341,9 @@ public synchronized void run() { logger.error("run()", ex); start.status = Start.STATUS_ERR; state = HttpDownloadState.ERROR; + + removeSeenHistoryEntry(); + SwingUtilities.invokeLater(() -> new MeldungDownloadfehler(MediathekGui.ui(), ex.getLocalizedMessage(), datenDownload).setVisible(true)); } finally { if (body != null) @@ -357,6 +361,15 @@ public synchronized void run() { messageBus.unsubscribe(this); } + private void removeSeenHistoryEntry() { + if (datenDownload.film != null) { + logger.trace("Removing failed download entry from history"); + try (var historyController = new SeenHistoryController()) { + historyController.markUnseen(datenDownload.film); + } + } + } + private void waitForPendingDownloads() { try { if (infoFuture != null)