summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt
diff options
context:
space:
mode:
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt')
-rw-r--r--wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt28
1 files changed, 28 insertions, 0 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt b/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt
index 6bf1673..349c7b1 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt
@@ -26,6 +26,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import net.taler.wallet.R
+import net.taler.wallet.backend.WALLET_DB
class SettingsManager(
private val context: Context,
@@ -59,4 +60,31 @@ class SettingsManager(
Toast.makeText(context, R.string.settings_logcat_error, LENGTH_LONG).show()
}
+ fun exportDb(uri: Uri?) {
+ if (uri == null) {
+ onDbExportError()
+ return
+ }
+ scope.launch(Dispatchers.IO) {
+ try {
+ context.contentResolver.openOutputStream(uri, "wt")?.use { outputStream ->
+ context.openFileInput(WALLET_DB).use { inputStream ->
+ inputStream.copyTo(outputStream)
+ }
+ } ?: onDbExportError()
+ } catch (e: Exception) {
+ Log.e(SettingsManager::class.simpleName, "Error exporting db: ", e)
+ onDbExportError()
+ return@launch
+ }
+ withContext(Dispatchers.Main) {
+ Toast.makeText(context, R.string.settings_db_export_success, LENGTH_LONG).show()
+ }
+ }
+ }
+
+ private fun onDbExportError() {
+ Toast.makeText(context, R.string.settings_db_export_error, LENGTH_LONG).show()
+ }
+
}