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 b60abdd6c0994b32d729f35a07892e6917b64e5c..70e6357566b8b178799d7bc0514f48663605085e 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 8eb9e52ad4eb1e683188472120a41b529e35fccd..feb7824608cb6c8e7efbf1ea5ebc35b59d47f770 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 d9e7a06c70861b25896ec069014b8995b04390fb..2d7da0cfd0dfc47c71a94f8e46379ba28f65ee36 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 0d1564b6e1f80cd6a13f43e5ff9a1073eb3873fe..4c1c03e1ee4661b757feaf82dc5fb67640d17cc0 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 d8fe8dc58cbd30db809dd315a190c4ef5a3d9c2d..c54caa5a085e0b6fda33caa5bbae4ff80d88b533 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 5e2533502b4666a0600a314841f16a9cf22f5042..606a914d64b54f746ff2c59bd488141870ba3ee2 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>