Integrate Core Password management and recovery email management.

This commit is contained in:
dkadrikj 2021-09-10 16:43:40 +02:00 committed by Zorica Stojchevska
parent bf3154b963
commit e32ce5d351
4 changed files with 43 additions and 13 deletions

View File

@ -33,6 +33,7 @@ import android.view.View
import androidx.activity.viewModels
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@ -83,11 +84,16 @@ import ch.protonmail.android.utils.UiUtil
import ch.protonmail.android.utils.extensions.app
import ch.protonmail.android.utils.extensions.showToast
import ch.protonmail.android.utils.startMailboxActivity
import ch.protonmail.android.utils.ui.dialogs.DialogUtils.Companion.showInfoDialog
import ch.protonmail.android.viewmodel.ConnectivityBaseViewModel
import com.google.gson.Gson
import kotlinx.android.synthetic.main.activity_settings.*
import kotlinx.android.synthetic.main.settings_item_layout.view.*
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import me.proton.core.accountmanager.domain.AccountManager
import me.proton.core.usersettings.presentation.UserSettingsOrchestrator
import me.proton.core.usersettings.presentation.onPasswordManagementResult
import me.proton.core.usersettings.presentation.onUpdateRecoveryEmailResult
import timber.log.Timber
import java.util.Locale
import java.util.concurrent.atomic.AtomicBoolean
@ -113,6 +119,11 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
@Inject
lateinit var attachmentMetadataDao: AttachmentMetadataDao
@Inject
lateinit var userSettingsOrchestrator: UserSettingsOrchestrator
@Inject
lateinit var accountManager: AccountManager
// region views
private val toolbar by lazy { findViewById<Toolbar>(R.id.toolbar) }
// endregion
@ -164,6 +175,7 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
userSettingsOrchestrator.register(this)
legacyUser = userManager.requireCurrentLegacyUser()
user = legacyUser.toNewUser()
val userId = user.id
@ -295,15 +307,33 @@ abstract class BaseSettingsActivity : BaseConnectivityActivity() {
AppUtil.decorInAppIntent(Intent(this, AccountTypeActivity::class.java))
startActivity(accountTypeIntent)
}
PASSWORD_MANAGEMENT,
PASSWORD_MANAGEMENT -> {
lifecycleScope.launch {
accountManager.getPrimaryUserId().first()?.let {
with(userSettingsOrchestrator) {
onPasswordManagementResult {
if (it?.result == true) {
showToast(getString(R.string.password_changed))
}
}
startPasswordManagementWorkflow(userId = it)
}
}
}
}
RECOVERY_EMAIL -> {
showInfoDialog(
this,
"",
getString(R.string.info_for_missing_functionality)
) { unit: Unit -> unit }
// TODO("startChangePasswordWorkflow")
// TODO("startrecoverysetupworkflow")
lifecycleScope.launch {
accountManager.getPrimaryUserId().first()?.let {
with(userSettingsOrchestrator) {
onUpdateRecoveryEmailResult {
if (it?.result == true) {
showToast(getString(R.string.recovery_email_changed))
}
}
startUpdateRecoveryEmailWorkflow(userId = it)
}
}
}
}
DEFAULT_EMAIL -> {
showSortAliasDialog()

View File

@ -49,9 +49,6 @@ import me.proton.core.user.domain.repository.DomainRepository
import me.proton.core.user.domain.repository.PassphraseRepository
import me.proton.core.user.domain.repository.UserAddressRepository
import me.proton.core.user.domain.repository.UserRepository
import me.proton.core.usersettings.data.db.UserSettingsDatabase
import me.proton.core.usersettings.data.repository.UserSettingsRepositoryImpl
import me.proton.core.usersettings.domain.repository.UserSettingsRepository
import javax.inject.Singleton
@Module

View File

@ -829,7 +829,9 @@
<string name="payment_method">Payment Method</string>
<string name="password_manager">Password management</string>
<string name="password_changed">Password changed.</string>
<string name="recovery_email">Recovery email</string>
<string name="recovery_email_changed">Recovery email changed.</string>
<string name="info_for_missing_functionality">Please log in through <a href="https://www.protonmail.com/">protonmail.com</a> and access your settings to edit this information.</string>
<string name="storage">Mailbox size</string>
<string name="storage_used">%1$s / %2$s</string>
@ -1080,4 +1082,5 @@
<string name="decryption_of_message_failed">Decryption error: decryption of this message\'s encrypted content failed.</string>
<string name="labels_selected_limit_reached">Limit reached</string>
</resources>

View File

@ -138,7 +138,7 @@ const val `sentry version` = "1.7.30" // Released: Jan
const val `sentry-plugin version` = "1.7.36" // Released: Oct 16, 2020
const val `sonarQube version` = "2.7.1" // Released: May 14, 2019
const val `stetho version` = "1.5.1" // Released: Mar 18, 2019
const val `timber version` = "4.7.1" // Released:
const val `timber version` = "4.7.1" // Released:
const val `trustKit version` = "1.1.2" // Released: Jun 09, 2019
const val `remark version` = "1.1.0" // Released: Dec 08, 2016
const val `store version` = "4.0.2-KT15" // Released: May 17, 2021