feat: 优化代码

pull/133/head
kunfei 5 years ago
parent 722497f599
commit d9b46e3e48
  1. 2
      app/src/main/java/io/legado/app/data/AppDatabase.kt
  2. 16
      app/src/main/java/io/legado/app/help/BookHelp.kt
  3. 43
      app/src/main/java/io/legado/app/help/storage/Restore.kt
  4. 3
      app/src/main/java/io/legado/app/help/storage/WebDavHelp.kt
  5. 3
      app/src/main/java/io/legado/app/ui/config/BackupRestoreUi.kt

@ -32,7 +32,7 @@ abstract class AppDatabase : RoomDatabase() {
.fallbackToDestructiveMigration()
.addCallback(object : Callback() {
override fun onDestructiveMigration(db: SupportSQLiteDatabase) {
GlobalScope.launch { Restore.restore(Backup.backupPath) }
GlobalScope.launch { Restore.restoreDatabase(Backup.backupPath) }
}
})
.build()

@ -272,13 +272,15 @@ object BookHelp {
var c = content
if (enableReplace) {
upReplaceRules(name, origin)
for (item in replaceRules) {
item.pattern.let {
if (it.isNotEmpty()) {
c = if (item.isRegex) {
c.replace(it.toRegex(), item.replacement)
} else {
c.replace(it, item.replacement)
kotlin.runCatching {
for (item in replaceRules) {
item.pattern.let {
if (it.isNotEmpty()) {
c = if (item.isRegex) {
c.replace(it.toRegex(), item.replacement)
} else {
c.replace(it, item.replacement)
}
}
}
}

@ -62,10 +62,11 @@ object Restore {
}
}
}
restore(Backup.backupPath)
restoreDatabase()
restoreConfig()
}
suspend fun restore(path: String) {
suspend fun restoreDatabase(path: String = Backup.backupPath) {
withContext(IO) {
fileToListT<Book>(path, "bookshelf.json")?.let {
App.db.bookDao().insert(*it.toTypedArray())
@ -85,11 +86,16 @@ object Restore {
fileToListT<ReplaceRule>(path, "replaceRule.json")?.let {
App.db.replaceRuleDao().insert(*it.toTypedArray())
}
}
}
suspend fun restoreConfig(path: String = Backup.backupPath) {
withContext(IO) {
try {
val file =
FileUtils.createFileIfNotExist(path + File.separator + ReadBookConfig.readConfigFileName)
val configFile =
File(App.INSTANCE.filesDir.absolutePath + File.separator + ReadBookConfig.readConfigFileName)
FileUtils.getFile(App.INSTANCE.filesDir, ReadBookConfig.readConfigFileName)
if (file.exists()) {
file.copyTo(configFile, true)
ReadBookConfig.upConfig()
@ -109,24 +115,23 @@ object Restore {
}
edit.putInt(PreferKey.versionCode, App.INSTANCE.versionCode)
edit.apply()
ReadBookConfig.apply {
styleSelect = App.INSTANCE.getPrefInt(PreferKey.readStyleSelect)
shareLayout = App.INSTANCE.getPrefBoolean(PreferKey.shareLayout)
pageAnim = App.INSTANCE.getPrefInt(PreferKey.pageAnim)
hideStatusBar = App.INSTANCE.getPrefBoolean(PreferKey.hideStatusBar)
hideNavigationBar = App.INSTANCE.getPrefBoolean(PreferKey.hideNavigationBar)
bodyIndentCount = App.INSTANCE.getPrefInt(PreferKey.bodyIndent, 2)
}
ChapterProvider.upStyle()
ReadBook.loadContent()
withContext(Main) {
App.INSTANCE.applyDayNight()
}
if (!BuildConfig.DEBUG)
LauncherIconHelp.changeIcon(App.INSTANCE.getPrefString(PreferKey.launcherIcon))
}
ReadBookConfig.apply {
styleSelect = App.INSTANCE.getPrefInt(PreferKey.readStyleSelect)
shareLayout = App.INSTANCE.getPrefBoolean(PreferKey.shareLayout)
pageAnim = App.INSTANCE.getPrefInt(PreferKey.pageAnim)
hideStatusBar = App.INSTANCE.getPrefBoolean(PreferKey.hideStatusBar)
hideNavigationBar = App.INSTANCE.getPrefBoolean(PreferKey.hideNavigationBar)
bodyIndentCount = App.INSTANCE.getPrefInt(PreferKey.bodyIndent, 2)
}
ChapterProvider.upStyle()
ReadBook.loadContent()
}
withContext(Main) {
App.INSTANCE.applyDayNight()
if (!BuildConfig.DEBUG)
LauncherIconHelp.changeIcon(App.INSTANCE.getPrefString(PreferKey.launcherIcon))
}
}
private inline fun <reified T> fileToListT(path: String, fileName: String): List<T>? {

@ -95,7 +95,8 @@ object WebDavHelp {
webDav.downloadTo(zipFilePath, true)
@Suppress("BlockingMethodInNonBlockingContext")
ZipUtils.unzipFile(zipFilePath, Backup.backupPath)
Restore.restore(Backup.backupPath)
Restore.restoreDatabase()
Restore.restoreConfig()
}
}
}.onSuccess {

@ -114,7 +114,8 @@ object BackupRestoreUi {
.onGranted {
Coroutine.async {
AppConfig.backupPath = path
Restore.restore(path)
Restore.restoreDatabase(path)
Restore.restoreConfig(path)
}.onSuccess {
fragment.toast(R.string.restore_success)
}

Loading…
Cancel
Save