diff --git a/app/src/main/java/org/mozilla/fenix/settings/address/AddressEditorFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/address/AddressEditorFragment.kt index 5f716afd9095..964324f62c36 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/address/AddressEditorFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/address/AddressEditorFragment.kt @@ -8,6 +8,7 @@ import android.os.Bundle import android.view.View import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController +import androidx.navigation.fragment.navArgs import mozilla.components.support.ktx.android.view.hideKeyboard import org.mozilla.fenix.R import org.mozilla.fenix.SecureFragment @@ -26,6 +27,13 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) { private lateinit var addressEditorView: AddressEditorView private lateinit var interactor: AddressEditorInteractor + private val args by navArgs() + + /** + * Returns true if an existing address is being edited, and false otherwise. + */ + private val isEditing: Boolean + get() = args.address != null override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -42,13 +50,17 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) { val binding = FragmentAddressEditorBinding.bind(view) - addressEditorView = AddressEditorView(binding, interactor) + addressEditorView = AddressEditorView(binding, interactor, args.address) addressEditorView.bind() } override fun onResume() { super.onResume() - showToolbar(getString(R.string.addresses_add_address)) + if (isEditing) { + showToolbar(getString(R.string.addresses_edit_address)) + } else { + showToolbar(getString(R.string.addresses_add_address)) + } } override fun onStop() { diff --git a/app/src/main/java/org/mozilla/fenix/settings/address/controller/AddressManagementController.kt b/app/src/main/java/org/mozilla/fenix/settings/address/controller/AddressManagementController.kt index b7ef02c40d20..cbf87b532faa 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/address/controller/AddressManagementController.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/address/controller/AddressManagementController.kt @@ -37,17 +37,19 @@ class DefaultAddressManagementController( ) : AddressManagementController { override fun handleAddressClicked(address: Address) { - navigateToAddressEditor() + navigateToAddressEditor(address) } override fun handleAddAddressButtonClicked() { navigateToAddressEditor() } - private fun navigateToAddressEditor() { + private fun navigateToAddressEditor(address: Address? = null) { navController.navigate( AddressManagementFragmentDirections - .actionAddressManagementFragmentToAddressEditorFragment() + .actionAddressManagementFragmentToAddressEditorFragment( + address = address + ) ) } } diff --git a/app/src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt b/app/src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt index 5e822a659810..60e20fdfc6a4 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt @@ -4,6 +4,7 @@ package org.mozilla.fenix.settings.address.view +import mozilla.components.concept.storage.Address import mozilla.components.concept.storage.UpdatableAddressFields import mozilla.components.support.ktx.android.view.hideKeyboard import mozilla.components.support.ktx.android.view.showKeyboard @@ -16,7 +17,8 @@ import org.mozilla.fenix.settings.address.interactor.AddressEditorInteractor */ class AddressEditorView( private val binding: FragmentAddressEditorBinding, - private val interactor: AddressEditorInteractor + private val interactor: AddressEditorInteractor, + private val address: Address? = null ) { /** @@ -36,6 +38,13 @@ class AddressEditorView( binding.saveButton.setOnClickListener { saveAddress() } + + address?.let { + binding.emailInput.setText(it.email) + binding.phoneInput.setText(it.tel) + + binding.fullNameInput.setText(it.givenName) + } } internal fun saveAddress() { diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 4f19bd677dd9..549fded6b232 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -1262,7 +1262,13 @@ + android:label="@string/addresses_add_address" > + + Unlock to use stored credit card information Add address + + Edit address Manage addresses