From 9fa1540e85bfeea0f4ec1bd37bd67f460d351b0e Mon Sep 17 00:00:00 2001
From: firelight <147925818+fire-light42@users.noreply.github.com>
Date: Fri, 16 Oct 2026 21:59:03 +0200
Subject: [PATCH] fix
---
.../utils/downloader/DownloadManager.kt | 13 +++++++++----
.../utils/downloader/DownloadObjects.kt | 4 +++-
app/src/main/res/values/strings.xml | 3 +++
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/downloader/DownloadManager.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/downloader/DownloadManager.kt
index adefedd20..5923a4a7d 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/downloader/DownloadManager.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/downloader/DownloadManager.kt
@@ -531,7 +531,7 @@ object VideoDownloadManager {
/** This class handles the notifications, as well as the relevant key */
data class DownloadMetaData(
private val id: Int?,
- private val linkHash : Int,
+ private val linkHash: Int,
var bytesDownloaded: Long = 0,
var bytesWritten: Long = 0,
@@ -543,7 +543,7 @@ object VideoDownloadManager {
private val createNotificationCallback: (CreateNotificationMetadata) -> Unit,
private var internalType: DownloadType = DownloadType.IsPending,
- val isHLS : Boolean,
+ val isHLS: Boolean,
// how many segments that we have downloaded
var hlsProgress: Int = 0,
// how many segments that exist
@@ -1045,7 +1045,7 @@ object VideoDownloadManager {
)
)
- // too short file, treat it as a invalid link
+ // too short file, treat it as an invalid link
if (items.totalLength != null && items.totalLength < minimumSize) {
fileStream.closeQuietly()
metadata.onDelete()
@@ -1241,13 +1241,15 @@ object VideoDownloadManager {
metadata.type = DownloadType.IsDone
return@withContext DOWNLOAD_SUCCESS
} catch (e: IOException) {
- // some sort of IO error, this should not happened
+ // some sort of IO error, this usually happens when storage access is revoked
// we just rethrow it
+ showToast(R.string.error_file_io_toast)
logError(e)
throw e
} catch (t: Throwable) {
// some sort of network error, will error
logError(t)
+ showToast(R.string.error_file_unknown_toast)
// note that when failing we don't want to delete the file,
// only user interaction has that power
metadata.type = DownloadType.IsFailed
@@ -1818,6 +1820,9 @@ object VideoDownloadManager {
isCompleted = true
break
} else if (!connectionResult.tryNext || index >= item.links.lastIndex) {
+ if (connectionResult == DOWNLOAD_INVALID_INPUT) {
+ showToast(R.string.error_file_invalid_toast)
+ }
isFailed = true
break
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/downloader/DownloadObjects.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/downloader/DownloadObjects.kt
index 946e7ecf9..b1436d171 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/downloader/DownloadObjects.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/downloader/DownloadObjects.kt
@@ -215,7 +215,9 @@ object DownloadObjects {
}
fun delete(): Boolean {
- return file.delete() == true
+ return runCatching {
+ file.delete()
+ }.getOrNull() == true
}
val resume: Boolean get() = fileLength > 0L
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f050ad993..ca7cfff0f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -83,6 +83,9 @@
Network stream
Open local video
Error Loading Links
+ Error occurred when writing to the file. Try setting a new download directory.
+ Error occurred when downloading the file. Try again.
+ Download source is invalid. Try another source.
Links Reloaded
Internal Storage
Dub