Skip to content

Commit

Permalink
For mozilla-mobile#24855: Allow updating info for an existing address.
Browse files Browse the repository at this point in the history
  • Loading branch information
mcarare committed May 2, 2022
1 parent 2cf9f3f commit a2dc67e
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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<AddressEditorFragmentArgs>()

/**
* 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)
Expand All @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@

package org.mozilla.fenix.settings.address.view

import android.content.Context
import android.content.DialogInterface
import androidx.appcompat.app.AlertDialog
import androidx.core.view.isVisible
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
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.FragmentAddressEditorBinding
import org.mozilla.fenix.ext.placeCursorAtEnd
import org.mozilla.fenix.settings.address.interactor.AddressEditorInteractor
Expand All @@ -16,7 +22,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
) {

/**
Expand All @@ -36,6 +43,14 @@ class AddressEditorView(
binding.saveButton.setOnClickListener {
saveAddress()
}

address?.let { address ->
binding.saveButton.text = "Update"

binding.emailInput.setText(address.email)
binding.phoneInput.setText(address.tel)
binding.fullNameInput.setText(address.givenName)
}
}

internal fun saveAddress() {
Expand All @@ -58,4 +73,17 @@ class AddressEditorView(
)
)
}

private fun showConfirmDeleteAddressDialog(context: Context, address: Address) {
AlertDialog.Builder(context).apply {
setMessage("Confirm delete")
setNegativeButton(R.string.delete_browsing_data_prompt_cancel) { dialog: DialogInterface, _ ->
dialog.cancel()
}
setPositiveButton(R.string.qr_scanner_dialog_invalid_ok) { _, _ ->
interactor.onDeleteAddress(address)
}
create()
}.show()
}
}
8 changes: 7 additions & 1 deletion app/src/main/res/navigation/nav_graph.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1262,7 +1262,13 @@
<fragment
android:id="@+id/addressEditorFragment"
android:name="org.mozilla.fenix.settings.address.AddressEditorFragment"
android:label="@string/addresses_add_address" />
android:label="@string/addresses_add_address" >
<argument
android:name="address"
android:defaultValue="@null"
app:argType="mozilla.components.concept.storage.Address"
app:nullable="true" />
</fragment>
<fragment
android:id="@+id/addressManagementFragment"
android:name="org.mozilla.fenix.settings.address.AddressManagementFragment"
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1566,6 +1566,8 @@
<string name="credit_cards_biometric_prompt_unlock_message">Unlock to use stored credit card information</string>
<!-- Title of the "Add address" screen -->
<string name="addresses_add_address">Add address</string>
<!-- Title of the "Edit address" screen -->
<string name="addresses_edit_address">Edit address</string>
<!-- Title of the "Manage addresses" screen -->
<string name="addresses_manage_addresses">Manage addresses</string>
<!-- The header for the full name of an address -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ class DefaultAddressManagementControllerTest {
verify {
navController.navigate(
AddressManagementFragmentDirections
.actionAddressManagementFragmentToAddressEditorFragment()
.actionAddressManagementFragmentToAddressEditorFragment(
address = address
)
)
}
}
Expand Down

0 comments on commit a2dc67e

Please sign in to comment.