pull/68/head^2
kunfei 5 years ago
parent a433637e3c
commit fd649bc73b
  1. 12
      app/src/main/java/io/legado/app/help/storage/Backup.kt
  2. 18
      app/src/main/java/io/legado/app/ui/main/MainActivity.kt

@ -9,6 +9,8 @@ import io.legado.app.help.ReadBookConfig
import io.legado.app.utils.DocumentUtils import io.legado.app.utils.DocumentUtils
import io.legado.app.utils.FileUtils import io.legado.app.utils.FileUtils
import io.legado.app.utils.GSON import io.legado.app.utils.GSON
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.withContext
import org.jetbrains.anko.defaultSharedPreferences import org.jetbrains.anko.defaultSharedPreferences
import java.io.File import java.io.File
@ -41,7 +43,8 @@ object Backup {
) )
} }
fun backup(context: Context, uri: Uri?) { suspend fun backup(context: Context, uri: Uri?) {
withContext(IO) {
App.db.bookDao().allBooks.let { App.db.bookDao().allBooks.let {
if (it.isNotEmpty()) { if (it.isNotEmpty()) {
val json = GSON.toJson(it) val json = GSON.toJson(it)
@ -57,7 +60,8 @@ object Backup {
App.db.bookSourceDao().all.let { App.db.bookSourceDao().all.let {
if (it.isNotEmpty()) { if (it.isNotEmpty()) {
val json = GSON.toJson(it) val json = GSON.toJson(it)
FileHelp.getFile(backupPath + File.separator + "bookSource.json").writeText(json) FileHelp.getFile(backupPath + File.separator + "bookSource.json")
.writeText(json)
} }
} }
App.db.rssSourceDao().all.let { App.db.rssSourceDao().all.let {
@ -69,7 +73,8 @@ object Backup {
App.db.replaceRuleDao().all.let { App.db.replaceRuleDao().all.let {
if (it.isNotEmpty()) { if (it.isNotEmpty()) {
val json = GSON.toJson(it) val json = GSON.toJson(it)
FileHelp.getFile(backupPath + File.separator + "replaceRule.json").writeText(json) FileHelp.getFile(backupPath + File.separator + "replaceRule.json")
.writeText(json)
} }
} }
GSON.toJson(ReadBookConfig.configList)?.let { GSON.toJson(ReadBookConfig.configList)?.let {
@ -97,6 +102,7 @@ object Backup {
copyBackup() copyBackup()
} }
} }
}
private fun copyBackup(context: Context, uri: Uri) { private fun copyBackup(context: Context, uri: Uri) {
DocumentFile.fromTreeUri(context, uri)?.let { treeDoc -> DocumentFile.fromTreeUri(context, uri)?.let { treeDoc ->

@ -33,9 +33,7 @@ import io.legado.app.ui.main.my.MyFragment
import io.legado.app.ui.main.rss.RssFragment import io.legado.app.ui.main.rss.RssFragment
import io.legado.app.utils.* import io.legado.app.utils.*
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.jetbrains.anko.toast import org.jetbrains.anko.toast
class MainActivity : VMBaseActivity<MainViewModel>(R.layout.activity_main), class MainActivity : VMBaseActivity<MainViewModel>(R.layout.activity_main),
@ -128,9 +126,7 @@ class MainActivity : VMBaseActivity<MainViewModel>(R.layout.activity_main),
override fun finish() { override fun finish() {
if (!BuildConfig.DEBUG) { if (!BuildConfig.DEBUG) {
launch { launch {
withContext(IO) {
backup() backup()
}
super.finish() super.finish()
} }
} else { } else {
@ -165,7 +161,9 @@ class MainActivity : VMBaseActivity<MainViewModel>(R.layout.activity_main),
val uri = Uri.parse(backupPath) val uri = Uri.parse(backupPath)
val doc = DocumentFile.fromTreeUri(this, uri) val doc = DocumentFile.fromTreeUri(this, uri)
if (doc?.canWrite() == true) { if (doc?.canWrite() == true) {
Backup.backup(this, uri) launch {
Backup.backup(this@MainActivity, uri)
}
} else { } else {
selectBackupFolder() selectBackupFolder()
} }
@ -201,7 +199,11 @@ class MainActivity : VMBaseActivity<MainViewModel>(R.layout.activity_main),
PermissionsCompat.Builder(this) PermissionsCompat.Builder(this)
.addPermissions(*Permissions.Group.STORAGE) .addPermissions(*Permissions.Group.STORAGE)
.rationale(R.string.tip_perm_request_storage) .rationale(R.string.tip_perm_request_storage)
.onGranted { Backup.backup(this, null) } .onGranted {
launch {
Backup.backup(this@MainActivity, null)
}
}
.request() .request()
} }
} }
@ -235,7 +237,9 @@ class MainActivity : VMBaseActivity<MainViewModel>(R.layout.activity_main),
Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
) )
putPrefString(PreferKey.backupPath, uri.toString()) putPrefString(PreferKey.backupPath, uri.toString())
Backup.backup(this, uri) launch {
Backup.backup(this@MainActivity, uri)
}
} }
} }
restoreSelectRequestCode -> if (resultCode == Activity.RESULT_OK) { restoreSelectRequestCode -> if (resultCode == Activity.RESULT_OK) {

Loading…
Cancel
Save