mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
feat: Add UV behind database merge #2283
This commit is contained in:
@@ -361,12 +361,12 @@ class EntryActivity : DatabaseLockActivity() {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
mUserVerificationViewModel.userVerificationState.collect { uVState ->
|
||||
when (uVState) {
|
||||
is UserVerificationViewModel.UIState.Loading -> {}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationCanceled -> {
|
||||
is UserVerificationViewModel.UVState.Loading -> {}
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationCanceled -> {
|
||||
coordinatorLayout?.showError(uVState.error)
|
||||
mUserVerificationViewModel.onUserVerificationReceived()
|
||||
}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationSucceeded -> {
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationSucceeded -> {
|
||||
val data = uVState.dataToVerify
|
||||
when (data.actionType) {
|
||||
UserVerificationActionType.SHOW_PROTECTED_FIELD -> {
|
||||
|
||||
@@ -421,12 +421,12 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
mUserVerificationViewModel.userVerificationState.collect { uVState ->
|
||||
when (uVState) {
|
||||
is UserVerificationViewModel.UIState.Loading -> {}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationCanceled -> {
|
||||
is UserVerificationViewModel.UVState.Loading -> {}
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationCanceled -> {
|
||||
coordinatorLayout?.showError(uVState.error)
|
||||
mUserVerificationViewModel.onUserVerificationReceived()
|
||||
}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationSucceeded -> {
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationSucceeded -> {
|
||||
when (uVState.dataToVerify.actionType) {
|
||||
UserVerificationActionType.SHOW_PROTECTED_FIELD -> {
|
||||
uVState.dataToVerify.protectedFieldView?.unprotect()
|
||||
|
||||
@@ -367,14 +367,22 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
SettingsActivity.launch(this@GroupActivity, true)
|
||||
}
|
||||
R.id.menu_merge_from -> {
|
||||
mExternalFileHelper?.openDocument()
|
||||
checkUserVerification(
|
||||
userVerificationViewModel = mUserVerificationViewModel,
|
||||
dataToVerify = UserVerificationData(
|
||||
actionType = UserVerificationActionType.MERGE_FROM_DATABASE,
|
||||
database = mDatabase
|
||||
)
|
||||
)
|
||||
}
|
||||
R.id.menu_save_copy_to -> {
|
||||
mExternalFileHelper?.createDocument(
|
||||
getString(R.string.database_file_name_default) +
|
||||
"_" +
|
||||
LocalDateTime.now().toString() +
|
||||
mDatabase?.defaultFileExtension)
|
||||
checkUserVerification(
|
||||
userVerificationViewModel = mUserVerificationViewModel,
|
||||
dataToVerify = UserVerificationData(
|
||||
actionType = UserVerificationActionType.SAVE_DATABASE_COPY_TO,
|
||||
database = mDatabase
|
||||
)
|
||||
)
|
||||
}
|
||||
R.id.menu_lock_all -> {
|
||||
lockAndExit()
|
||||
@@ -581,19 +589,28 @@ class GroupActivity : DatabaseLockActivity(),
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
mUserVerificationViewModel.userVerificationState.collect { uVState ->
|
||||
when (uVState) {
|
||||
is UserVerificationViewModel.UIState.Loading -> {}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationCanceled -> {
|
||||
is UserVerificationViewModel.UVState.Loading -> {}
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationCanceled -> {
|
||||
coordinatorLayout?.showError(uVState.error)
|
||||
mUserVerificationViewModel.onUserVerificationReceived()
|
||||
}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationSucceeded -> {
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationSucceeded -> {
|
||||
val data = uVState.dataToVerify
|
||||
when (data.actionType) {
|
||||
UserVerificationActionType.EDIT_ENTRY -> {
|
||||
editEntry(uVState.dataToVerify.database, uVState.dataToVerify.entryId)
|
||||
}
|
||||
UserVerificationActionType.MERGE_FROM_DATABASE -> {}
|
||||
UserVerificationActionType.SAVE_TO_DATABASE -> {}
|
||||
UserVerificationActionType.MERGE_FROM_DATABASE -> {
|
||||
mExternalFileHelper?.openDocument()
|
||||
}
|
||||
UserVerificationActionType.SAVE_DATABASE_COPY_TO -> {
|
||||
mExternalFileHelper?.createDocument(
|
||||
getString(R.string.database_file_name_default) +
|
||||
"_" +
|
||||
LocalDateTime.now().toString() +
|
||||
uVState.dataToVerify.database?.defaultFileExtension
|
||||
)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
mUserVerificationViewModel.onUserVerificationReceived()
|
||||
|
||||
@@ -21,5 +21,5 @@ enum class UserVerificationActionType {
|
||||
EDIT_ENTRY,
|
||||
EDIT_DATABASE_SETTING,
|
||||
MERGE_FROM_DATABASE,
|
||||
SAVE_TO_DATABASE
|
||||
SAVE_DATABASE_COPY_TO
|
||||
}
|
||||
@@ -178,8 +178,8 @@ class PasskeyLauncherActivity : DatabaseLockActivity() {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
userVerificationViewModel.userVerificationState.collect { uiState ->
|
||||
when (uiState) {
|
||||
is UserVerificationViewModel.UIState.Loading -> {}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationSucceeded -> {
|
||||
is UserVerificationViewModel.UVState.Loading -> {}
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationSucceeded -> {
|
||||
val data = uiState.dataToVerify
|
||||
when (data.actionType) {
|
||||
UserVerificationActionType.LAUNCH_PASSKEY_CEREMONY -> {
|
||||
@@ -194,7 +194,7 @@ class PasskeyLauncherActivity : DatabaseLockActivity() {
|
||||
}
|
||||
userVerificationViewModel.onUserVerificationReceived()
|
||||
}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationCanceled -> {
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationCanceled -> {
|
||||
toastError(uiState.error)
|
||||
passkeyLauncherViewModel.cancelResult()
|
||||
userVerificationViewModel.onUserVerificationReceived()
|
||||
|
||||
@@ -183,12 +183,12 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment(), DatabaseRetriev
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
mUserVerificationViewModel.userVerificationState.collect { state ->
|
||||
when (state) {
|
||||
is UserVerificationViewModel.UIState.Loading -> {}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationCanceled -> {
|
||||
is UserVerificationViewModel.UVState.Loading -> {}
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationCanceled -> {
|
||||
mSettingsViewModel.showError(state.error)
|
||||
mUserVerificationViewModel.onUserVerificationReceived()
|
||||
}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationSucceeded -> {
|
||||
is UserVerificationViewModel.UVState.OnUserVerificationSucceeded -> {
|
||||
val data = state.dataToVerify
|
||||
when (data.actionType) {
|
||||
UserVerificationActionType.EDIT_DATABASE_SETTING -> {
|
||||
|
||||
@@ -12,8 +12,8 @@ import kotlinx.coroutines.flow.StateFlow
|
||||
*/
|
||||
class UserVerificationViewModel: ViewModel() {
|
||||
|
||||
private val mUiState = MutableStateFlow<UIState>(UIState.Loading)
|
||||
val userVerificationState: StateFlow<UIState> = mUiState
|
||||
private val mUVState = MutableStateFlow<UVState>(UVState.Loading)
|
||||
val userVerificationState: StateFlow<UVState> = mUVState
|
||||
|
||||
var dataToVerify: UserVerificationData? = null
|
||||
|
||||
@@ -29,7 +29,7 @@ class UserVerificationViewModel: ViewModel() {
|
||||
}
|
||||
|
||||
fun onUserVerificationSucceeded(dataToVerify: UserVerificationData) {
|
||||
mUiState.value = UIState.OnUserVerificationSucceeded(dataToVerify)
|
||||
mUVState.value = UVState.OnUserVerificationSucceeded(dataToVerify)
|
||||
}
|
||||
|
||||
fun onUserVerificationFailed(
|
||||
@@ -37,22 +37,22 @@ class UserVerificationViewModel: ViewModel() {
|
||||
error: Throwable? = null
|
||||
) {
|
||||
this.dataToVerify = dataToVerify
|
||||
mUiState.value = UIState.OnUserVerificationCanceled(dataToVerify, error)
|
||||
mUVState.value = UVState.OnUserVerificationCanceled(dataToVerify, error)
|
||||
}
|
||||
|
||||
fun onUserVerificationReceived() {
|
||||
mUiState.value = UIState.Loading
|
||||
mUVState.value = UVState.Loading
|
||||
}
|
||||
|
||||
sealed class UIState {
|
||||
object Loading: UIState()
|
||||
sealed class UVState {
|
||||
object Loading: UVState()
|
||||
data class OnUserVerificationSucceeded(
|
||||
val dataToVerify: UserVerificationData
|
||||
): UIState()
|
||||
): UVState()
|
||||
data class OnUserVerificationCanceled(
|
||||
val dataToVerify: UserVerificationData?,
|
||||
val error: Throwable?
|
||||
): UIState()
|
||||
): UVState()
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user