From d25b9a8d73fbf0dfbab9c9eda1c546cf10654f2c Mon Sep 17 00:00:00 2001 From: Nicholas Wallace Date: Fri, 11 Apr 2025 14:32:49 -0700 Subject: [PATCH] Always download to internal app storage --- .../app/managers/DownloadItemManager.kt | 30 +++++++++---------- .../app/plugins/AbsDownloader.kt | 13 ++++---- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/managers/DownloadItemManager.kt b/android/app/src/main/java/com/audiobookshelf/app/managers/DownloadItemManager.kt index d62578ff..16c52e93 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/managers/DownloadItemManager.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/managers/DownloadItemManager.kt @@ -99,17 +99,19 @@ class DownloadItemManager( /** Processes the download item parts. */ private fun processDownloadItemParts(nextDownloadItemParts: List) { nextDownloadItemParts.forEach { - if (it.isInternalStorage) { - startInternalDownload(it) - } else { - startExternalDownload(it) - } + // if (it.isInternalStorage) { + startInternalDownload(it) + // } else { + // startExternalDownload(it) + // } } } /** Starts an internal download. */ private fun startInternalDownload(downloadItemPart: DownloadItemPart) { - val file = File(downloadItemPart.finalDestinationPath) + // Create internal download location at temp directory location + Log.d(tag, "Creating internal download location at ${downloadItemPart.destinationUri.path}") + val file = File(downloadItemPart.destinationUri.path ?: "") file.parentFile?.mkdirs() val internalProgressCallback = @@ -129,11 +131,7 @@ class DownloadItemManager( tag, "Start internal download to destination path ${downloadItemPart.finalDestinationPath} from ${downloadItemPart.serverUrl}" ) - InternalDownloadManager( - mainActivity, - downloadItemPart.finalDestinationUri, - internalProgressCallback - ) + InternalDownloadManager(mainActivity, downloadItemPart.destinationUri, internalProgressCallback) .download(downloadItemPart.serverUrl) downloadItemPart.downloadId = 1 currentDownloadItemParts.add(downloadItemPart) @@ -159,11 +157,11 @@ class DownloadItemManager( while (currentDownloadItemParts.isNotEmpty()) { val itemParts = currentDownloadItemParts.filter { !it.isMoving } for (downloadItemPart in itemParts) { - if (downloadItemPart.isInternalStorage) { - handleInternalDownloadPart(downloadItemPart) - } else { - handleExternalDownloadPart(downloadItemPart) - } + // if (downloadItemPart.isInternalStorage) { + handleInternalDownloadPart(downloadItemPart) + // } else { + // handleExternalDownloadPart(downloadItemPart) + // } } delay(500) diff --git a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDownloader.kt b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDownloader.kt index 9fd04fd5..05d92ec6 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDownloader.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDownloader.kt @@ -2,7 +2,6 @@ package com.audiobookshelf.app.plugins import android.app.DownloadManager import android.content.Context -import android.os.Environment import android.util.Log import com.audiobookshelf.app.MainActivity import com.audiobookshelf.app.data.* @@ -108,6 +107,8 @@ class AbsDownloader : Plugin() { DeviceManager.dbManager.saveLocalFolder(localFolder) } + val isInternal = localFolderId.startsWith("internal-") + if (localFolder != null) { if (episodeId.isNotEmpty() && libraryItem.mediaType != "podcast") { Log.e(tag, "Library item is not a podcast but episode was requested") @@ -119,11 +120,11 @@ class AbsDownloader : Plugin() { if (episode == null) { call.resolve(JSObject("{\"error\":\"Invalid podcast episode not found\"}")) } else { - startLibraryItemDownload(libraryItem, localFolder, episode) + startLibraryItemDownload(libraryItem, isInternal, localFolder, episode) call.resolve() } } else { - startLibraryItemDownload(libraryItem, localFolder, null) + startLibraryItemDownload(libraryItem, isInternal, localFolder, null) call.resolve() } } else { @@ -153,14 +154,12 @@ class AbsDownloader : Plugin() { private fun startLibraryItemDownload( libraryItem: LibraryItem, + isInternal: Boolean, localFolder: LocalFolder, episode: PodcastEpisode? ) { - val isInternal = localFolder.id.startsWith("internal-") - val tempFolderPath = - if (isInternal) "${mainActivity.filesDir}/downloads/${libraryItem.id}" - else mainActivity.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) + val tempFolderPath = "${mainActivity.filesDir}/downloads/${libraryItem.id}" Log.d(tag, "downloadCacheDirectory=$tempFolderPath")