Add support for zero-width space (#304)

This commit is contained in:
David Perez
2023-11-30 11:07:34 -06:00
committed by Álison Fernandes
parent 85e750cc08
commit da6d40790e
6 changed files with 84 additions and 44 deletions

View File

@@ -1,7 +1,7 @@
package com.x8bit.bitwarden.data.platform.datasource.network.interceptor
import com.x8bit.bitwarden.data.platform.repository.model.Environment
import com.x8bit.bitwarden.data.platform.util.orNullIfBlank
import com.x8bit.bitwarden.ui.platform.base.util.orNullIfBlank
import javax.inject.Inject
import javax.inject.Singleton

View File

@@ -1,12 +0,0 @@
package com.x8bit.bitwarden.data.platform.util
/**
* Returns the original [String] only if:
*
* - it is non-null
* - it is not blank (where blank refers to empty strings of those containing only white space)
*
* Otherwise `null` is returned.
*/
fun String?.orNullIfBlank(): String? =
this?.takeUnless { it.isBlank() }

View File

@@ -7,11 +7,11 @@ import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.data.auth.datasource.disk.model.EnvironmentUrlDataJson
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
import com.x8bit.bitwarden.data.platform.repository.model.Environment
import com.x8bit.bitwarden.data.platform.util.orNullIfBlank
import com.x8bit.bitwarden.ui.platform.base.BaseViewModel
import com.x8bit.bitwarden.ui.platform.base.util.Text
import com.x8bit.bitwarden.ui.platform.base.util.asText
import com.x8bit.bitwarden.ui.platform.base.util.isValidUri
import com.x8bit.bitwarden.ui.platform.base.util.orNullIfBlank
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

View File

@@ -8,6 +8,24 @@ import androidx.core.graphics.toColorInt
import java.net.URI
import java.util.Locale
/**
* This character takes up no space but can be used to ensure a string is not empty. It can also
* be used to insert "safe" line-break positions in a string.
*
* Note: Is a string only contains this charactor, it is _not_ considered blank.
*/
const val ZERO_WIDTH_CHARACTER: String = "\u200B"
/**
* Returns the original [String] only if:
*
* - it is non-null
* - it is not blank (where blank refers to empty strings of those containing only white space)
*
* Otherwise [ZERO_WIDTH_CHARACTER] is returned.
*/
fun String?.orZeroWidthSpace(): String = this.orNullIfBlank() ?: ZERO_WIDTH_CHARACTER
/**
* Whether or not string is a valid email address.
*
@@ -28,6 +46,16 @@ fun String.isValidUri(): Boolean =
false
}
/**
* Returns the original [String] only if:
*
* - it is non-null
* - it is not blank (where blank refers to empty strings of those containing only white space)
*
* Otherwise `null` is returned.
*/
fun String?.orNullIfBlank(): String? = this?.takeUnless { it.isBlank() }
/**
* Returns the given [String] in a lowercase form using the primary [Locale] from the current
* context.