diff --git a/app/src/main/java/io/legado/app/data/AppDatabase.kt b/app/src/main/java/io/legado/app/data/AppDatabase.kt index 0bf73c868..16faf6cad 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -37,6 +37,7 @@ abstract class AppDatabase : RoomDatabase() { GlobalScope.launch { Restore.restoreDatabase(Backup.backupPath) } } }) + .allowMainThreadQueries() .build() } diff --git a/app/src/main/java/io/legado/app/help/storage/ImportOldData.kt b/app/src/main/java/io/legado/app/help/storage/ImportOldData.kt index 9882e4d4f..da769dbe2 100644 --- a/app/src/main/java/io/legado/app/help/storage/ImportOldData.kt +++ b/app/src/main/java/io/legado/app/help/storage/ImportOldData.kt @@ -6,113 +6,78 @@ import androidx.documentfile.provider.DocumentFile import io.legado.app.App import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.ReplaceRule -import io.legado.app.help.coroutine.Coroutine import io.legado.app.utils.DocumentUtils import io.legado.app.utils.FileUtils -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import org.jetbrains.anko.toast import java.io.File object ImportOldData { fun import(context: Context, file: File) { - GlobalScope.launch(Dispatchers.IO) { - try {// 导入书架 - val shelfFile = - FileUtils.createFileIfNotExist(file, "myBookShelf.json") - val json = shelfFile.readText() - val importCount = importOldBookshelf(json) - withContext(Dispatchers.Main) { - context.toast("成功导入书籍${importCount}") - } - } catch (e: Exception) { - withContext(Dispatchers.Main) { - context.toast("导入书籍失败\n${e.localizedMessage}") - } - } + try {// 导入书架 + val shelfFile = + FileUtils.createFileIfNotExist(file, "myBookShelf.json") + val json = shelfFile.readText() + val importCount = importOldBookshelf(json) + context.toast("成功导入书籍${importCount}") + } catch (e: Exception) { + context.toast("导入书籍失败\n${e.localizedMessage}") + } - try {// Book source - val sourceFile = - FileUtils.getFile(file, "myBookSource.json") - val json = sourceFile.readText() - val importCount = importOldSource(json) - withContext(Dispatchers.Main) { - context.toast("成功导入书源${importCount}") - } - } catch (e: Exception) { - withContext(Dispatchers.Main) { - context.toast("导入源失败\n${e.localizedMessage}") - } - } + try {// Book source + val sourceFile = + FileUtils.getFile(file, "myBookSource.json") + val json = sourceFile.readText() + val importCount = importOldSource(json) + context.toast("成功导入书源${importCount}") + } catch (e: Exception) { + context.toast("导入源失败\n${e.localizedMessage}") + } - try {// Replace rules - val ruleFile = FileUtils.getFile(file, "myBookReplaceRule.json") - if (ruleFile.exists()) { - val json = ruleFile.readText() - val importCount = importOldReplaceRule(json) - withContext(Dispatchers.Main) { - context.toast("成功导入替换规则${importCount}") - } - } else { - withContext(Dispatchers.Main) { - context.toast("未找到替换规则") - } - } - } catch (e: Exception) { - withContext(Dispatchers.Main) { - context.toast("导入替换规则失败\n${e.localizedMessage}") - } + try {// Replace rules + val ruleFile = FileUtils.getFile(file, "myBookReplaceRule.json") + if (ruleFile.exists()) { + val json = ruleFile.readText() + val importCount = importOldReplaceRule(json) + context.toast("成功导入替换规则${importCount}") + } else { + context.toast("未找到替换规则") } + } catch (e: Exception) { + context.toast("导入替换规则失败\n${e.localizedMessage}") } } fun importUri(uri: Uri) { - Coroutine.async { - DocumentFile.fromTreeUri(App.INSTANCE, uri)?.listFiles()?.forEach { - when (it.name) { - "myBookShelf.json" -> - try { - DocumentUtils.readText(App.INSTANCE, it.uri)?.let { json -> - val importCount = importOldBookshelf(json) - withContext(Dispatchers.Main) { - App.INSTANCE.toast("成功导入书籍${importCount}") - } - } - } catch (e: java.lang.Exception) { - withContext(Dispatchers.Main) { - App.INSTANCE.toast("导入书籍失败\n${e.localizedMessage}") - } + DocumentFile.fromTreeUri(App.INSTANCE, uri)?.listFiles()?.forEach { + when (it.name) { + "myBookShelf.json" -> + try { + DocumentUtils.readText(App.INSTANCE, it.uri)?.let { json -> + val importCount = importOldBookshelf(json) + App.INSTANCE.toast("成功导入书籍${importCount}") } - "myBookSource.json" -> - try { - DocumentUtils.readText(App.INSTANCE, it.uri)?.let { json -> - val importCount = importOldSource(json) - withContext(Dispatchers.Main) { - App.INSTANCE.toast("成功导入书源${importCount}") - } - } - } catch (e: Exception) { - withContext(Dispatchers.Main) { - App.INSTANCE.toast("导入源失败\n${e.localizedMessage}") - } + } catch (e: java.lang.Exception) { + App.INSTANCE.toast("导入书籍失败\n${e.localizedMessage}") + } + "myBookSource.json" -> + try { + DocumentUtils.readText(App.INSTANCE, it.uri)?.let { json -> + val importCount = importOldSource(json) + App.INSTANCE.toast("成功导入书源${importCount}") } - "myBookReplaceRule.json" -> - try { - DocumentUtils.readText(App.INSTANCE, it.uri)?.let { json -> - val importCount = importOldReplaceRule(json) - withContext(Dispatchers.Main) { - App.INSTANCE.toast("成功导入替换规则${importCount}") - } - } - } catch (e: Exception) { - withContext(Dispatchers.Main) { - App.INSTANCE.toast("导入替换规则失败\n${e.localizedMessage}") - } + } catch (e: Exception) { + App.INSTANCE.toast("导入源失败\n${e.localizedMessage}") + } + "myBookReplaceRule.json" -> + try { + DocumentUtils.readText(App.INSTANCE, it.uri)?.let { json -> + val importCount = importOldReplaceRule(json) + App.INSTANCE.toast("成功导入替换规则${importCount}") } - } + } catch (e: Exception) { + App.INSTANCE.toast("导入替换规则失败\n${e.localizedMessage}") + } } } }