Refactor db export with resourceDSL
This commit is contained in:
1 parent
90ed83efd5
commit
3a004c41f8
2 files changed
+14
-19
No files matched your search
@@ -38,7 +38,6 @@ import com.hippo.ehviewer.download.DownloadManager
|
||||
import com.hippo.ehviewer.util.sendTo
|
||||
|
||||
object EhDB {
|
||||
private const val CUR_DB_VER = 4
|
||||
private val db = ehDatabase
|
||||
|
||||
// Fix state
|
||||
@@ -366,12 +365,15 @@ object EhDB {
|
||||
for (item in list) to.insert(item)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun exportDB(context: Context, uri: Uri): Boolean {
|
||||
suspend fun exportDB(context: Context, uri: Uri) {
|
||||
val ehExportName = "eh.export.db"
|
||||
runCatching {
|
||||
resource {
|
||||
context.deleteDatabase(ehExportName)
|
||||
val newDb = databaseBuilder(context, EhDatabase::class.java, ehExportName).build()
|
||||
databaseBuilder(context, EhDatabase::class.java, ehExportName).build()
|
||||
} release {
|
||||
it.close()
|
||||
context.deleteDatabase(ehExportName)
|
||||
} use { newDb ->
|
||||
copyDao(db.downloadsDao(), newDb.downloadsDao())
|
||||
copyDao(db.downloadLabelDao(), newDb.downloadLabelDao())
|
||||
copyDao(db.downloadDirnameDao(), newDb.downloadDirnameDao())
|
||||
@@ -386,11 +388,7 @@ object EhDB {
|
||||
fromFd sendTo toFd
|
||||
}
|
||||
}
|
||||
return true
|
||||
}.onFailure {
|
||||
it.printStackTrace()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
suspend fun importDB(context: Context, uri: Uri) {
|
||||
|
||||
@@ -30,7 +30,6 @@ import androidx.preference.Preference
|
||||
import com.hippo.ehviewer.AppConfig
|
||||
import com.hippo.ehviewer.BuildConfig
|
||||
import com.hippo.ehviewer.EhDB
|
||||
import com.hippo.ehviewer.GetText
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.client.EhEngine
|
||||
import com.hippo.ehviewer.client.data.FavListUrlBuilder
|
||||
@@ -75,20 +74,18 @@ class AdvancedFragment : BasePreferenceFragment() {
|
||||
.setView(R.layout.preference_dialog_task)
|
||||
.show()
|
||||
lifecycleScope.launchIO {
|
||||
val success = EhDB.exportDB(requireActivity(), uri)
|
||||
val e = runSuspendCatching {
|
||||
EhDB.exportDB(requireActivity(), uri)
|
||||
}.exceptionOrNull()?.run {
|
||||
printStackTrace()
|
||||
getString(R.string.settings_advanced_export_data_failed)
|
||||
}
|
||||
withUIContext {
|
||||
if (alertDialog.isShowing) {
|
||||
alertDialog.dismiss()
|
||||
}
|
||||
showTip(
|
||||
if (success) {
|
||||
GetText.getString(
|
||||
R.string.settings_advanced_export_data_to,
|
||||
uri.toString(),
|
||||
)
|
||||
} else {
|
||||
GetText.getString(R.string.settings_advanced_export_data_failed)
|
||||
},
|
||||
e ?: getString(R.string.settings_advanced_export_data_to, uri.toString()),
|
||||
BaseScene.LENGTH_SHORT,
|
||||
)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user