瀏覽代碼

Update UniFile

Which has more correct nullability for some methods and case insensitivity for listFiles where possible.
arkon 1 年之前
父節點
當前提交
a74a689c90

+ 3 - 2
app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt

@@ -99,8 +99,9 @@ object SettingsDataScreen : SearchableSettings {
 
                 context.contentResolver.takePersistableUriPermission(uri, flags)
 
-                val file = UniFile.fromUri(context, uri)
-                storageDirPref.set(file.uri.toString())
+                UniFile.fromUri(context, uri)?.let {
+                    storageDirPref.set(it.uri.toString())
+                }
                 Injekt.get<DownloadCache>().invalidateCache()
             }
         }

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateJob.kt

@@ -58,7 +58,7 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete
             if (isAutoBackup) {
                 backupPreferences.lastAutoBackupTimestamp().set(Date().time)
             } else {
-                notifier.showBackupComplete(UniFile.fromUri(context, location.toUri()))
+                notifier.showBackupComplete(UniFile.fromUri(context, location.toUri())!!)
             }
             Result.success()
         } catch (e: Exception) {

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreator.kt

@@ -95,14 +95,14 @@ class BackupCreator(
                     val dir = UniFile.fromUri(context, uri)
 
                     // Delete older backups
-                    dir.listFiles { _, filename -> Backup.filenameRegex.matches(filename) }
+                    dir?.listFiles { _, filename -> Backup.filenameRegex.matches(filename) }
                         .orEmpty()
                         .sortedByDescending { it.name }
                         .drop(MAX_AUTO_BACKUPS - 1)
                         .forEach { it.delete() }
 
                     // Create new file to place backup
-                    dir.createFile(Backup.getFilename())
+                    dir?.createFile(Backup.getFilename())
                 } else {
                     UniFile.fromUri(context, uri)
                 }

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt

@@ -37,8 +37,8 @@ class DownloadProvider(
     internal fun getMangaDir(mangaTitle: String, source: Source): UniFile {
         try {
             return downloadsDir!!
-                .createDirectory(getSourceDirName(source))
-                .createDirectory(getMangaDirName(mangaTitle))
+                .createDirectory(getSourceDirName(source))!!
+                .createDirectory(getMangaDirName(mangaTitle))!!
         } catch (e: Throwable) {
             logcat(LogPriority.ERROR, e) { "Invalid download directory" }
             throw Exception(context.stringResource(MR.strings.invalid_location, downloadsDir ?: ""))

+ 5 - 5
app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt

@@ -335,7 +335,7 @@ class Downloader(
         }
 
         val chapterDirname = provider.getChapterDirName(download.chapter.name, download.chapter.scanlator)
-        val tmpDir = mangaDir.createDirectory(chapterDirname + TMP_DIR_SUFFIX)
+        val tmpDir = mangaDir.createDirectory(chapterDirname + TMP_DIR_SUFFIX)!!
 
         try {
             // If the page list already exists, start from the file
@@ -480,7 +480,7 @@ class Downloader(
         page.progress = 0
         return flow {
             val response = source.getImage(page)
-            val file = tmpDir.createFile("$filename.tmp")
+            val file = tmpDir.createFile("$filename.tmp")!!
             try {
                 response.body.source().saveTo(file.openOutputStream())
                 val extension = getImageExtension(response, file)
@@ -512,7 +512,7 @@ class Downloader(
      * @param filename the filename of the image.
      */
     private fun copyImageFromCache(cacheFile: File, tmpDir: UniFile, filename: String): UniFile {
-        val tmpFile = tmpDir.createFile("$filename.tmp")
+        val tmpFile = tmpDir.createFile("$filename.tmp")!!
         cacheFile.inputStream().use { input ->
             tmpFile.openOutputStream().use { output ->
                 input.copyTo(output)
@@ -603,7 +603,7 @@ class Downloader(
         dirname: String,
         tmpDir: UniFile,
     ) {
-        val zip = mangaDir.createFile("$dirname.cbz$TMP_DIR_SUFFIX")
+        val zip = mangaDir.createFile("$dirname.cbz$TMP_DIR_SUFFIX")!!
         ZipOutputStream(BufferedOutputStream(zip.openOutputStream())).use { zipOut ->
             zipOut.setMethod(ZipEntry.STORED)
 
@@ -643,7 +643,7 @@ class Downloader(
         val comicInfo = getComicInfo(manga, chapter, chapterUrl, categories)
         // Remove the old file
         dir.findFile(COMIC_INFO_FILE)?.delete()
-        dir.createFile(COMIC_INFO_FILE).openOutputStream().use {
+        dir.createFile(COMIC_INFO_FILE)!!.openOutputStream().use {
             val comicInfoString = xml.encodeToString(ComicInfo.serializer(), comicInfo)
             it.write(comicInfoString.toByteArray())
         }

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt

@@ -165,7 +165,7 @@ fun Context.createReaderThemeContext(): Context {
  * @return document size of [uri] or null if size can't be obtained
  */
 fun Context.getUriSize(uri: Uri): Long? {
-    return UniFile.fromUri(this, uri).length().takeIf { it >= 0 }
+    return UniFile.fromUri(this, uri)?.length()?.takeIf { it >= 0 }
 }
 
 /**

+ 1 - 1
core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt

@@ -245,7 +245,7 @@ object ImageUtil {
                 // Remove pre-existing split if exists (this split shouldn't exist under normal circumstances)
                 tmpDir.findFile(splitImageName)?.delete()
 
-                val splitFile = tmpDir.createFile(splitImageName)
+                val splitFile = tmpDir.createFile(splitImageName)!!
 
                 val region = Rect(0, splitData.topOffset, splitData.splitWidth, splitData.bottomOffset)
 

+ 1 - 1
gradle/libs.versions.toml

@@ -30,7 +30,7 @@ quickjs-android = "app.cash.quickjs:quickjs-android:0.9.2"
 jsoup = "org.jsoup:jsoup:1.16.2"
 
 disklrucache = "com.jakewharton:disklrucache:2.0.2"
-unifile = "com.github.tachiyomiorg:unifile:17bec43"
+unifile = "com.github.tachiyomiorg:unifile:7c257e1c64"
 junrar = "com.github.junrar:junrar:7.5.5"
 
 sqlite-framework = { module = "androidx.sqlite:sqlite-framework", version.ref = "sqlite" }

+ 1 - 1
source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt

@@ -34,7 +34,7 @@ actual class LocalCoverManager(
             return null
         }
 
-        val targetFile = find(manga.url) ?: directory.createFile(DEFAULT_COVER_NAME)
+        val targetFile = find(manga.url) ?: directory.createFile(DEFAULT_COVER_NAME)!!
 
         inputStream.use { input ->
             targetFile.openOutputStream().use { output ->