Recovery password linebreak / double space removal - QA feedback (#918)

* Filtered any control characters or double-spaces from copied recovery password mnemonic

* Fix typo in comment

* Single char comment alignment adjustment

* Comment phrasing adjustment

* Fixed double space removal (single char adjustment)

* Simplified mnemonic filtering regex

* Fixed regex

---------

Co-authored-by: alansley <aclansley@gmail.com>
pull/1710/head
AL-Session 2 months ago committed by GitHub
parent 6ded7e1c9f
commit dc432ccaa5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -27,15 +27,6 @@ class RecoveryPasswordViewModel @Inject constructor(
): AndroidViewModel(application) {
val prefs = AppTextSecurePreferences(application)
// Regex to remove any spurious characters from our recovery password mnemonic.
// The regex matches are:
// - "\r" - carriage return,
// - "\n" - newline,
// - "\u2028" - unicode line separator,
// - "\u2029" - unicode paragraph separator,
// - "|\s{2,}" - two or more consecutive spaces.
val linebreakRemovalRegex = Regex("""[\r\n\u2028\u2029]+|\s{2,}""")
val seed = MutableStateFlow<String?>(null)
val mnemonic = seed.filterNotNull()
.map {
@ -50,8 +41,13 @@ class RecoveryPasswordViewModel @Inject constructor(
fun copyMnemonic() {
prefs.setHasViewedSeed(true)
// Ensure that our mnemonic words are separated by single spaces only without any control characters
val normalisedMnemonic = mnemonic.value.replace(linebreakRemovalRegex, " ")
// Ensure that our mnemonic words are separated by single spaces only without any excessive
// whitespace or control characters via:
// - Replacing all control chars (\p{Cc}) or Unicode separators (\p{Z}) with a single space, then
// - Trimming all leading & trailing spaces.
val normalisedMnemonic = mnemonic.value
.replace(Regex("[\\p{Cc}\\p{Z}]+"), " ")
.trim()
ClipData.newPlainText("Seed", normalisedMnemonic)
.let(application.clipboard::setPrimaryClip)

Loading…
Cancel
Save