pull/49/head
kunfei 5 years ago
parent ece41a27e5
commit 6c2ab77cbe
  1. 7
      app/src/main/java/io/legado/app/data/AppDatabase.kt
  2. 37
      app/src/main/java/io/legado/app/ui/main/MainActivity.kt

@ -4,8 +4,10 @@ import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.sqlite.db.SupportSQLiteDatabase
import io.legado.app.data.dao.*
import io.legado.app.data.entities.*
import io.legado.app.utils.putPrefBoolean
@Database(
@ -22,6 +24,11 @@ abstract class AppDatabase : RoomDatabase() {
fun createDatabase(context: Context): AppDatabase {
return Room.databaseBuilder(context, AppDatabase::class.java, DATABASE_NAME)
.fallbackToDestructiveMigration()
.addCallback(object : Callback() {
override fun onDestructiveMigration(db: SupportSQLiteDatabase) {
context.putPrefBoolean("dbChange", true)
}
})
.build()
}
}

@ -17,6 +17,7 @@ import io.legado.app.help.ActivityHelp
import io.legado.app.help.permission.Permissions
import io.legado.app.help.permission.PermissionsCompat
import io.legado.app.help.storage.Backup
import io.legado.app.help.storage.Restore
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.noButton
import io.legado.app.lib.dialogs.yesButton
@ -47,7 +48,7 @@ class MainActivity : VMBaseActivity<MainViewModel>(R.layout.activity_main),
view_pager_main.adapter = TabFragmentPageAdapter(supportFragmentManager)
view_pager_main.addOnPageChangeListener(this)
bottom_navigation_view.setOnNavigationItemSelectedListener(this)
importYueDu()
restore()
upVersion()
}
@ -61,21 +62,25 @@ class MainActivity : VMBaseActivity<MainViewModel>(R.layout.activity_main),
return false
}
private fun importYueDu() {
launch {
if (withContext(IO) { App.db.bookDao().allBookCount == 0 }) {
alert(title = "导入") {
message = "是否导入旧版本数据"
yesButton {
PermissionsCompat.Builder(this@MainActivity)
.addPermissions(*Permissions.Group.STORAGE)
.rationale(R.string.tip_perm_request_storage)
.onGranted { viewModel.importYueDuData() }
.request()
}
noButton {
}
}.show().applyTint()
private fun restore() {
if (getPrefBoolean("dbChange")) {
Restore.restore()
} else if (getPrefInt("versionCode") == 0) {
launch {
if (withContext(IO) { App.db.bookDao().allBookCount == 0 }) {
alert(title = "导入") {
message = "是否导入旧版本数据"
yesButton {
PermissionsCompat.Builder(this@MainActivity)
.addPermissions(*Permissions.Group.STORAGE)
.rationale(R.string.tip_perm_request_storage)
.onGranted { viewModel.importYueDuData() }
.request()
}
noButton {
}
}.show().applyTint()
}
}
}
}

Loading…
Cancel
Save