From 2e9ff2dad1953b0f9975dd39e1ee62be304bb30c Mon Sep 17 00:00:00 2001 From: Lukas Lechner <lukas.lechner@sap.com> Date: Fri, 26 Feb 2021 15:06:19 +0100 Subject: [PATCH] Contact diary person and place with more than 250 letters can be saved (EXPOSUREAPP-5400) #2476 * Restrict name, phone number and email text field to 250 characters in contact diary * Trim name, phone and mail when mapping to entity in contact diary * Remove unnecessary styles items * Don't trim whitespaces * Remove trim() for all values of persons and locations Co-authored-by: BMItter <46747780+BMItter@users.noreply.github.com> Co-authored-by: Ralf Gehrer <ralfgehrer@users.noreply.github.com> --- .../storage/entity/ContactDiaryLocationEntity.kt | 10 +++++++--- .../storage/entity/ContactDiaryPersonEntity.kt | 10 +++++++--- .../ui/location/ContactDiaryAddLocationFragment.kt | 8 ++++---- .../ui/location/ContactDiaryAddLocationViewModel.kt | 2 +- .../ui/person/ContactDiaryAddPersonFragment.kt | 8 ++++---- .../ui/person/ContactDiaryAddPersonViewModel.kt | 2 +- .../res/layout/contact_diary_add_location_fragment.xml | 3 +++ .../res/layout/contact_diary_add_person_fragment.xml | 3 +++ Corona-Warn-App/src/main/res/values/styles.xml | 2 -- .../ui/durationpicker/DurationExtensionKtTest.kt | 2 +- 10 files changed, 31 insertions(+), 19 deletions(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt index c7e21989f..31529a238 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt @@ -5,6 +5,7 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey import de.rki.coronawarnapp.contactdiary.model.ContactDiaryLocation +import de.rki.coronawarnapp.util.trimToLength import kotlinx.parcelize.Parcelize @Parcelize @@ -19,10 +20,13 @@ data class ContactDiaryLocationEntity( get() = locationId } +private const val MAX_CHARACTERS = 250 +private fun String.trimMaxCharacters(): String = this.trimToLength(MAX_CHARACTERS) + fun ContactDiaryLocation.toContactDiaryLocationEntity(): ContactDiaryLocationEntity = ContactDiaryLocationEntity( locationId = this.locationId, - locationName = this.locationName, - phoneNumber = this.phoneNumber, - emailAddress = this.emailAddress + locationName = this.locationName.trimMaxCharacters(), + phoneNumber = this.phoneNumber?.trimMaxCharacters(), + emailAddress = this.emailAddress?.trimMaxCharacters() ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt index f9a10824c..df4c00802 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt @@ -5,6 +5,7 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey import de.rki.coronawarnapp.contactdiary.model.ContactDiaryPerson +import de.rki.coronawarnapp.util.trimToLength import kotlinx.parcelize.Parcelize @Parcelize @@ -19,10 +20,13 @@ data class ContactDiaryPersonEntity( get() = personId } +private const val MAX_CHARACTERS = 250 +private fun String.trimMaxCharacters(): String = this.trimToLength(MAX_CHARACTERS) + fun ContactDiaryPerson.toContactDiaryPersonEntity(): ContactDiaryPersonEntity = ContactDiaryPersonEntity( personId = this.personId, - fullName = this.fullName, - phoneNumber = this.phoneNumber, - emailAddress = this.emailAddress + fullName = this.fullName.trimMaxCharacters(), + phoneNumber = this.phoneNumber?.trimMaxCharacters(), + emailAddress = this.emailAddress?.trimMaxCharacters() ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/location/ContactDiaryAddLocationFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/location/ContactDiaryAddLocationFragment.kt index b7540115e..8e35cbf81 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/location/ContactDiaryAddLocationFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/location/ContactDiaryAddLocationFragment.kt @@ -52,8 +52,8 @@ class ContactDiaryAddLocationFragment : Fragment(R.layout.contact_diary_add_loca it.hideKeyboard() viewModel.updateLocation( location, - phoneNumber = binding.locationPhoneInput.text.toString().trim(), - emailAddress = binding.locationEmailInput.text.toString().trim() + phoneNumber = binding.locationPhoneInput.text.toString(), + emailAddress = binding.locationEmailInput.text.toString() ) } } @@ -64,8 +64,8 @@ class ContactDiaryAddLocationFragment : Fragment(R.layout.contact_diary_add_loca locationSaveButton.setOnClickListener { it.hideKeyboard() viewModel.addLocation( - phoneNumber = binding.locationPhoneInput.text.toString().trim(), - emailAddress = binding.locationEmailInput.text.toString().trim() + phoneNumber = binding.locationPhoneInput.text.toString(), + emailAddress = binding.locationEmailInput.text.toString() ) } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/location/ContactDiaryAddLocationViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/location/ContactDiaryAddLocationViewModel.kt index 3f0b7c7ab..ca6484156 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/location/ContactDiaryAddLocationViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/location/ContactDiaryAddLocationViewModel.kt @@ -39,7 +39,7 @@ class ContactDiaryAddLocationViewModel @AssistedInject constructor( .asLiveData() fun locationChanged(value: String) { - locationName.value = value.trim() + locationName.value = value } fun addLocation(phoneNumber: String, emailAddress: String) = launch(coroutineExceptionHandler) { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/person/ContactDiaryAddPersonFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/person/ContactDiaryAddPersonFragment.kt index ae8716f9f..e54cede4d 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/person/ContactDiaryAddPersonFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/person/ContactDiaryAddPersonFragment.kt @@ -54,8 +54,8 @@ class ContactDiaryAddPersonFragment : it.hideKeyboard() viewModel.updatePerson( person, - phoneNumber = binding.personPhoneNumberInput.text.toString().trim(), - emailAddress = binding.personEmailInput.text.toString().trim() + phoneNumber = binding.personPhoneNumberInput.text.toString(), + emailAddress = binding.personEmailInput.text.toString() ) } } @@ -65,8 +65,8 @@ class ContactDiaryAddPersonFragment : binding.personSaveButton.setOnClickListener { it.hideKeyboard() viewModel.addPerson( - phoneNumber = binding.personPhoneNumberInput.text.toString().trim(), - emailAddress = binding.personEmailInput.text.toString().trim() + phoneNumber = binding.personPhoneNumberInput.text.toString(), + emailAddress = binding.personEmailInput.text.toString() ) } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/person/ContactDiaryAddPersonViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/person/ContactDiaryAddPersonViewModel.kt index f00889cfb..34eb68336 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/person/ContactDiaryAddPersonViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/person/ContactDiaryAddPersonViewModel.kt @@ -38,7 +38,7 @@ class ContactDiaryAddPersonViewModel @AssistedInject constructor( .asLiveData() fun nameChanged(value: String) { - name.value = value.trim() + name.value = value } fun addPerson(phoneNumber: String, emailAddress: String) = launch(coroutineExceptionHandler) { diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_add_location_fragment.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_add_location_fragment.xml index 1e1ec8dbe..b2b7e568a 100644 --- a/Corona-Warn-App/src/main/res/layout/contact_diary_add_location_fragment.xml +++ b/Corona-Warn-App/src/main/res/layout/contact_diary_add_location_fragment.xml @@ -63,6 +63,7 @@ android:id="@+id/location_name_input_edit" android:layout_width="match_parent" android:layout_height="wrap_content" + android:maxLength="250" android:imeOptions="actionNext" android:inputType="textCapWords" /> @@ -85,6 +86,7 @@ android:id="@+id/location_phone_input" android:layout_width="match_parent" android:layout_height="wrap_content" + android:maxLength="250" android:imeOptions="actionNext" android:inputType="phone" /> @@ -107,6 +109,7 @@ android:id="@+id/location_email_input" android:layout_width="match_parent" android:layout_height="wrap_content" + android:maxLength="250" android:imeOptions="actionDone" android:inputType="textEmailAddress" /> diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_add_person_fragment.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_add_person_fragment.xml index 2163a98fb..b77f76052 100644 --- a/Corona-Warn-App/src/main/res/layout/contact_diary_add_person_fragment.xml +++ b/Corona-Warn-App/src/main/res/layout/contact_diary_add_person_fragment.xml @@ -62,6 +62,7 @@ android:id="@+id/person_name_input" android:layout_width="match_parent" android:layout_height="wrap_content" + android:maxLength="250" android:imeOptions="actionNext" android:inputType="textCapWords" /> @@ -84,6 +85,7 @@ android:id="@+id/person_phone_number_input" android:layout_width="match_parent" android:layout_height="wrap_content" + android:maxLength="250" android:imeOptions="actionNext" android:inputType="phone" /> @@ -107,6 +109,7 @@ android:id="@+id/person_email_input" android:layout_width="match_parent" android:layout_height="wrap_content" + android:maxLength="250" android:imeOptions="actionDone" android:inputType="textEmailAddress" /> diff --git a/Corona-Warn-App/src/main/res/values/styles.xml b/Corona-Warn-App/src/main/res/values/styles.xml index 246bcd8c0..d1fc93e47 100644 --- a/Corona-Warn-App/src/main/res/values/styles.xml +++ b/Corona-Warn-App/src/main/res/values/styles.xml @@ -477,8 +477,6 @@ <item name="boxCornerRadiusTopStart">@dimen/spacing_mega_tiny</item> <item name="boxStrokeWidth">0dp</item> <item name="boxStrokeWidthFocused">0dp</item> - <item name="counterTextAppearance">@color/colorTransparent</item> - <item name="android:maxLength">5</item> </style> <style name="DefaultNumberPickerTheme" parent="AppTheme"> diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/ui/durationpicker/DurationExtensionKtTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/ui/durationpicker/DurationExtensionKtTest.kt index 4bfa961ca..84d647ea2 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/ui/durationpicker/DurationExtensionKtTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/ui/durationpicker/DurationExtensionKtTest.kt @@ -54,4 +54,4 @@ internal class DurationExtensionKtTest { val suffix: String?, val expectedReadableDuration: String ) -} \ No newline at end of file +} -- GitLab