Horis 2 лет назад
Родитель
Сommit
90b274bbf7
1 измененных файлов с 11 добавлено и 12 удалено
  1. 11 12
      app/src/main/java/io/legado/app/ui/about/AboutFragment.kt

+ 11 - 12
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.TextDialog
 import io.legado.app.ui.widget.dialog.WaitDialog
 import io.legado.app.ui.widget.dialog.WaitDialog
 import io.legado.app.utils.FileDoc
 import io.legado.app.utils.FileDoc
+import io.legado.app.utils.compress.ZipUtils
 import io.legado.app.utils.createFileIfNotExist
 import io.legado.app.utils.createFileIfNotExist
 import io.legado.app.utils.createFolderIfNotExist
 import io.legado.app.utils.createFolderIfNotExist
 import io.legado.app.utils.delete
 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.showDialogFragment
 import io.legado.app.utils.toastOnUi
 import io.legado.app.utils.toastOnUi
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.launch
 import splitties.init.appCtx
 import splitties.init.appCtx
 import java.io.File
 import java.io.File
 
 
@@ -156,21 +156,20 @@ class AboutFragment : PreferenceFragmentCompat() {
     }
     }
 
 
     private suspend fun copyLogs(doc: FileDoc) = coroutineScope {
     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()) {
         if (files.isNullOrEmpty()) {
             return@coroutineScope
             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)
                 }
                 }
-            }
         }
         }
     }
     }