From a3a0f0f197929f4d8fe4a4695d2af650db655442 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Mon, 22 Jul 2024 21:20:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/about/AboutFragment.kt | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/about/AboutFragment.kt b/app/src/main/java/io/legado/app/ui/about/AboutFragment.kt index 52c9c6137..74769de3d 100644 --- a/app/src/main/java/io/legado/app/ui/about/AboutFragment.kt +++ b/app/src/main/java/io/legado/app/ui/about/AboutFragment.kt @@ -18,6 +18,7 @@ import io.legado.app.help.coroutine.Coroutine import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.ui.widget.dialog.WaitDialog import io.legado.app.utils.FileDoc +import io.legado.app.utils.compress.ZipUtils import io.legado.app.utils.createFileIfNotExist import io.legado.app.utils.createFolderIfNotExist import io.legado.app.utils.delete @@ -31,7 +32,6 @@ import io.legado.app.utils.sendToClip import io.legado.app.utils.showDialogFragment import io.legado.app.utils.toastOnUi import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.launch import splitties.init.appCtx import java.io.File @@ -156,21 +156,20 @@ class AboutFragment : PreferenceFragmentCompat() { } private suspend fun copyLogs(doc: FileDoc) = coroutineScope { - val files = FileDoc.fromFile(File(appCtx.externalCacheDir, "logs")).list() + val files = File(appCtx.externalCacheDir, "logs").listFiles()?.toList() if (files.isNullOrEmpty()) { return@coroutineScope } - doc.find("logs")?.delete() - val logsDoc = doc.createFolderIfNotExist("logs") - files.forEach { file -> - launch { - file.openInputStream().getOrNull()?.use { input -> - logsDoc.createFileIfNotExist(file.name).openOutputStream().getOrNull() - ?.use { - input.copyTo(it) - } + val zipFile = File(appCtx.externalCacheDir, "logs.zip") + ZipUtils.zipFiles(files.filter { it.name.endsWith(".txt") }, zipFile) + + doc.find("logs.zip")?.delete() + + zipFile.inputStream().use { input -> + doc.createFileIfNotExist("logs.zip").openOutputStream().getOrNull() + ?.use { + input.copyTo(it) } - } } }