From f5a93ffe7f0cf10c8071863ddf384fcc19ea6464 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Mon, 11 Mar 2024 16:19:56 +0200 Subject: [PATCH] Integrate add email to settings --- .../circles/feature/settings/SettingsDataSource.kt | 4 ++++ .../futo/circles/feature/settings/SettingsFragment.kt | 10 +++++++++- .../futo/circles/feature/settings/SettingsViewModel.kt | 8 ++++++++ app/src/main/res/layout/fragment_settings.xml | 4 ++-- auth/src/main/res/values/strings.xml | 2 +- core/src/main/res/values/strings.xml | 1 + 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt index b60abdd6c..70e635756 100644 --- a/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt +++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsDataSource.kt @@ -20,6 +20,10 @@ class SettingsDataSource @Inject constructor( session.accountService().deactivateAccount(false, authConfirmationProvider) } + suspend fun addEmailUIA() = createResult { + session.accountService().changeEmailStages(authConfirmationProvider) + } + suspend fun changePasswordUIA() = changePasswordDataSource.changePasswordUIA(authConfirmationProvider) diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt index 8eb9e52ad..feb782460 100644 --- a/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsFragment.kt @@ -71,8 +71,11 @@ class SettingsFragment : Fragment(R.layout.fragment_settings), ReAuthCancellatio } } tvSwitchUser.setOnClickListener { withConfirmation(SwitchUser()) { (activity as? MainActivity)?.stopSyncAndRestart() } } - tvChangePassword.setOnClickListener { viewModel.handleChangePasswordFlow() } + tvAddEmail.setOnClickListener { + loadingDialog.handleLoading(LoadingData()) + viewModel.handleChangeEmailFlow() + } tvDeactivate.setOnClickListener { withConfirmation(DeactivateAccount()) { loadingDialog.handleLoading(LoadingData()) @@ -105,6 +108,11 @@ class SettingsFragment : Fragment(R.layout.fragment_settings), ReAuthCancellatio viewModel.navigateToMatrixChangePasswordEvent.observeData(this) { navigator.navigateToMatrixChangePassword() } + viewModel.addEmailLiveData.observeResponse(this, + success = { showSuccess(getString(org.futo.circles.core.R.string.email_added)) }, + error = { showError(getString(org.futo.circles.auth.R.string.invalid_auth)) }, + onRequestInvoked = { loadingDialog.dismiss() } + ) viewModel.changePasswordResponseLiveData.observeResponse(this, success = { showSuccess(getString(org.futo.circles.core.R.string.password_changed)) }, error = { message -> showError(message) }, diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt index d9e7a06c7..2d7da0cfd 100644 --- a/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt +++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt @@ -23,6 +23,7 @@ class SettingsViewModel @Inject constructor( val startReAuthEventLiveData = settingsDataSource.startReAuthEventLiveData val logOutLiveData = SingleEventLiveData<Response<Unit?>>() val deactivateLiveData = SingleEventLiveData<Response<Unit?>>() + val addEmailLiveData = SingleEventLiveData<Response<Unit?>>() val navigateToMatrixChangePasswordEvent = SingleEventLiveData<Unit>() val changePasswordResponseLiveData = SingleEventLiveData<Response<Unit?>>() val mediaUsageInfoLiveData = SingleEventLiveData<Response<MediaUsageInfo?>>() @@ -54,6 +55,13 @@ class SettingsViewModel @Inject constructor( } } + fun handleChangeEmailFlow() { + launchBg { + val result = settingsDataSource.addEmailUIA() + addEmailLiveData.postValue(result) + } + } + private suspend fun createNewBackupInNeeded() { val createBackupResult = settingsDataSource.createNewBackupIfNeeded() changePasswordResponseLiveData.postValue(createBackupResult) diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 0d1564b6e..4c1c03e1e 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -123,11 +123,11 @@ app:optionName="@string/change_password" /> <org.futo.circles.core.view.SettingsMenuItemView - android:id="@+id/tvChangeEmail" + android:id="@+id/tvAddEmail" android:layout_width="match_parent" android:layout_height="wrap_content" app:optionIcon="@drawable/ic_email" - app:optionName="@string/change_email_address" /> + app:optionName="@string/add_email_address" /> <org.futo.circles.core.view.SettingsMenuItemView android:id="@+id/tvClearCache" diff --git a/auth/src/main/res/values/strings.xml b/auth/src/main/res/values/strings.xml index d8fe8dc58..c54caa5a0 100644 --- a/auth/src/main/res/values/strings.xml +++ b/auth/src/main/res/values/strings.xml @@ -91,7 +91,7 @@ <string name="switch_user_message">Are you sure you want to switch user?</string> <string name="switch_str">Switch</string> <string name="change_password">Change password</string> - <string name="change_email_address">Change email address</string> + <string name="add_email_address">Add email address</string> <string name="new_password">New password</string> <string name="old_password">Old Password</string> <string name="repeat_new_password">Repeat new password</string> diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 5e2533502..606a914d6 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -54,6 +54,7 @@ <string name="save">Save</string> <string name="select_items_from_list_below">Select items from list below</string> <string name="password_changed">Password changed</string> + <string name="email_added">Email added</string> <string name="remove">Remove</string> <string name="choose_gallery">Choose gallery</string> <string name="pick_media">Pick media</string> -- GitLab