diff --git a/app/src/main/java/com/philkes/notallyx/presentation/activity/main/fragment/settings/SettingsFragment.kt b/app/src/main/java/com/philkes/notallyx/presentation/activity/main/fragment/settings/SettingsFragment.kt index 422bb1f6..fc3e575c 100644 --- a/app/src/main/java/com/philkes/notallyx/presentation/activity/main/fragment/settings/SettingsFragment.kt +++ b/app/src/main/java/com/philkes/notallyx/presentation/activity/main/fragment/settings/SettingsFragment.kt @@ -135,7 +135,7 @@ class SettingsFragment : Fragment() { registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> if (result.resultCode == RESULT_OK) { result.data?.data?.let { uri -> - if (model.preferences.import(requireContext(), uri)) { + if (model.importPreferences(requireContext(), uri)) { showToast(R.string.import_settings_success) } else { showToast(R.string.import_settings_failure) @@ -446,7 +446,7 @@ class SettingsFragment : Fragment() { } ResetSettings.setOnClickListener { showDialog(R.string.reset_settings_message, R.string.reset_settings) { _, _ -> - model.preferences.reset() + model.resetPreferences() showToast(R.string.reset_settings_success) } } diff --git a/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/BaseNoteModel.kt b/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/BaseNoteModel.kt index cb2cf977..d94fa856 100644 --- a/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/BaseNoteModel.kt +++ b/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/BaseNoteModel.kt @@ -1,6 +1,7 @@ package com.philkes.notallyx.presentation.viewmodel import android.app.Application +import android.content.Context import android.content.Intent import android.net.Uri import android.widget.Toast @@ -187,7 +188,7 @@ class BaseNoteModel(private val app: Application) : AndroidViewModel(app) { withContext(Dispatchers.IO) { val database = NotallyDatabase.getDatabase(app, observePreferences = false).value database.checkpoint() - NotallyDatabase.getCurrentDatabaseFile(app) + NotallyDatabase.getInternalDatabaseFile(app) .copyTo(NotallyDatabase.getExternalDatabaseFile(app), overwrite = true) } savePreference(preferences.dataOnExternalStorage, true) @@ -199,7 +200,7 @@ class BaseNoteModel(private val app: Application) : AndroidViewModel(app) { withContext(Dispatchers.IO) { val database = NotallyDatabase.getDatabase(app, observePreferences = false).value database.checkpoint() - NotallyDatabase.getCurrentDatabaseFile(app) + NotallyDatabase.getExternalDatabaseFile(app) .copyTo(NotallyDatabase.getInternalDatabaseFile(app), overwrite = true) NotallyDatabase.getExternalDatabaseFiles(app).forEach { if (it.exists()) { @@ -464,6 +465,30 @@ class BaseNoteModel(private val app: Application) : AndroidViewModel(app) { viewModelScope.launch(Dispatchers.IO) { function() } } + fun resetPreferences() { + preferences.reset() + refreshDataOnExternalStorage() + } + + fun importPreferences(context: Context, uri: Uri): Boolean { + val success = preferences.import(context, uri) + refreshDataOnExternalStorage() + return success + } + + private fun refreshDataOnExternalStorage() { + val dataOnExternalStorageBefore = preferences.dataOnExternalStorage.value + val dataOnExternalStorageAfter = preferences.dataOnExternalStorage.getFreshValue() + if (dataOnExternalStorageBefore != dataOnExternalStorageAfter) { + if (dataOnExternalStorageAfter) { + enableExternalData() + } else { + disableExternalData() + } + } + preferences.dataOnExternalStorage.refresh() + } + companion object { fun transform(list: List, pinned: Header, others: Header): List { diff --git a/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/preference/NotallyXPreferences.kt b/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/preference/NotallyXPreferences.kt index 02cee866..8ae301b7 100644 --- a/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/preference/NotallyXPreferences.kt +++ b/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/preference/NotallyXPreferences.kt @@ -234,7 +234,6 @@ class NotallyXPreferences private constructor(private val app: Application) { listItemSorting, labelsHiddenInNavigation, autoBackup, - dataOnExternalStorage, dateFormat, maxItems, maxTitle, diff --git a/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/preference/Preference.kt b/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/preference/Preference.kt index 1a17c579..d16996eb 100644 --- a/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/preference/Preference.kt +++ b/app/src/main/java/com/philkes/notallyx/presentation/viewmodel/preference/Preference.kt @@ -88,6 +88,8 @@ abstract class BasePreference( cachedValue = null getData().postValue(value) } + + fun getFreshValue() = getValue(sharedPreferences) } fun BasePreference.observeForeverSkipFirst(observer: Observer) {