Skip to content

Commit 98e09ee

Browse files
authored
Merge pull request #8671 from yostyle/yostyle/update_email_regex
Update regex for email address to be aligned on RFC 5322
2 parents 979324d + 3d7489c commit 98e09ee

File tree

14 files changed

+23
-18
lines changed

14 files changed

+23
-18
lines changed

changelog.d/8671.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Update regex for email address to be aligned on RFC 5322

matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/extensions/Strings.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,23 @@
1616

1717
package org.matrix.android.sdk.api.extensions
1818

19+
import java.util.regex.Pattern
20+
21+
const val emailPattern = "^[a-zA-Z0-9_!#\$%&'*+/=?`{|}~^-]+(?:\\.[a-zA-Z0-9_!#\$%&'*+/=?`{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\$"
22+
val emailAddress: Pattern = Pattern.compile(emailPattern)
23+
1924
fun CharSequence.ensurePrefix(prefix: CharSequence): CharSequence {
2025
return when {
2126
startsWith(prefix) -> this
2227
else -> "$prefix$this"
2328
}
2429
}
2530

31+
/**
32+
* Check if a CharSequence is an email.
33+
*/
34+
fun CharSequence.isEmail() = emailAddress.matcher(this).matches()
35+
2636
/**
2737
* Append a new line and then the provided string.
2838
*/

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/login/DefaultLoginWizard.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
package org.matrix.android.sdk.internal.auth.login
1818

19-
import android.util.Patterns
2019
import org.matrix.android.sdk.api.auth.LoginType
2120
import org.matrix.android.sdk.api.auth.login.LoginProfileInfo
2221
import org.matrix.android.sdk.api.auth.login.LoginWizard
2322
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
23+
import org.matrix.android.sdk.api.extensions.isEmail
2424
import org.matrix.android.sdk.api.session.Session
2525
import org.matrix.android.sdk.api.util.JsonDict
2626
import org.matrix.android.sdk.internal.auth.AuthAPI
@@ -59,7 +59,7 @@ internal class DefaultLoginWizard(
5959
initialDeviceName: String,
6060
deviceId: String?
6161
): Session {
62-
val loginParams = if (Patterns.EMAIL_ADDRESS.matcher(login).matches()) {
62+
val loginParams = if (login.isEmail()) {
6363
PasswordLoginParams.thirdPartyIdentifier(
6464
medium = ThreePidMedium.EMAIL,
6565
address = login,

vector/src/main/java/im/vector/app/core/extensions/BasicExtensions.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package im.vector.app.core.extensions
1818

19-
import android.util.Patterns
2019
import com.google.i18n.phonenumbers.NumberParseException
2120
import com.google.i18n.phonenumbers.PhoneNumberUtil
2221
import org.matrix.android.sdk.api.MatrixPatterns
@@ -26,11 +25,6 @@ fun Boolean.toOnOff() = if (this) "ON" else "OFF"
2625

2726
inline fun <T> T.ooi(block: (T) -> Unit): T = also(block)
2827

29-
/**
30-
* Check if a CharSequence is an email.
31-
*/
32-
fun CharSequence.isEmail() = Patterns.EMAIL_ADDRESS.matcher(this).matches()
33-
3428
fun CharSequence.isMatrixId() = MatrixPatterns.isUserId(this.toString())
3529

3630
/**

vector/src/main/java/im/vector/app/features/command/CommandParser.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616

1717
package im.vector.app.features.command
1818

19-
import im.vector.app.core.extensions.isEmail
2019
import im.vector.app.core.extensions.isMsisdn
2120
import im.vector.app.core.extensions.orEmpty
2221
import im.vector.app.features.home.room.detail.ChatEffect
2322
import im.vector.app.features.settings.VectorPreferences
2423
import org.matrix.android.sdk.api.MatrixPatterns
2524
import org.matrix.android.sdk.api.MatrixUrls.isMxcUrl
25+
import org.matrix.android.sdk.api.extensions.isEmail
2626
import org.matrix.android.sdk.api.session.identity.ThreePid
2727
import timber.log.Timber
2828
import javax.inject.Inject

vector/src/main/java/im/vector/app/features/login/LoginGenericTextInputFormFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil
3232
import dagger.hilt.android.AndroidEntryPoint
3333
import im.vector.app.R
3434
import im.vector.app.core.extensions.hideKeyboard
35-
import im.vector.app.core.extensions.isEmail
3635
import im.vector.app.core.extensions.setTextOrHide
3736
import im.vector.app.databinding.FragmentLoginGenericTextInputFormBinding
3837
import kotlinx.coroutines.flow.launchIn
3938
import kotlinx.coroutines.flow.onEach
4039
import kotlinx.parcelize.Parcelize
4140
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
41+
import org.matrix.android.sdk.api.extensions.isEmail
4242
import org.matrix.android.sdk.api.failure.Failure
4343
import org.matrix.android.sdk.api.failure.is401
4444
import reactivecircus.flowbinding.android.widget.textChanges

vector/src/main/java/im/vector/app/features/login/LoginResetPasswordFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ import dagger.hilt.android.AndroidEntryPoint
2828
import im.vector.app.R
2929
import im.vector.app.core.extensions.hideKeyboard
3030
import im.vector.app.core.extensions.hidePassword
31-
import im.vector.app.core.extensions.isEmail
3231
import im.vector.app.core.extensions.toReducedUrl
3332
import im.vector.app.databinding.FragmentLoginResetPasswordBinding
3433
import im.vector.app.features.analytics.plan.MobileScreen
3534
import kotlinx.coroutines.flow.combine
3635
import kotlinx.coroutines.flow.launchIn
3736
import kotlinx.coroutines.flow.map
3837
import kotlinx.coroutines.flow.onEach
38+
import org.matrix.android.sdk.api.extensions.isEmail
3939
import reactivecircus.flowbinding.android.widget.textChanges
4040

4141
/**

vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthEmailEntryFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import im.vector.app.core.extensions.clearErrorOnChange
3030
import im.vector.app.core.extensions.content
3131
import im.vector.app.core.extensions.editText
3232
import im.vector.app.core.extensions.hasContent
33-
import im.vector.app.core.extensions.isEmail
3433
import im.vector.app.core.extensions.setOnImeDoneListener
3534
import im.vector.app.core.extensions.toReducedUrl
3635
import im.vector.app.databinding.FragmentFtueEmailInputBinding
@@ -39,6 +38,7 @@ import im.vector.app.features.onboarding.OnboardingViewState
3938
import im.vector.app.features.onboarding.RegisterAction
4039
import kotlinx.parcelize.Parcelize
4140
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
41+
import org.matrix.android.sdk.api.extensions.isEmail
4242

4343
@Parcelize
4444
data class FtueAuthEmailEntryFragmentArgument(

vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthGenericTextInputFormFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil
3232
import dagger.hilt.android.AndroidEntryPoint
3333
import im.vector.app.R
3434
import im.vector.app.core.extensions.hideKeyboard
35-
import im.vector.app.core.extensions.isEmail
3635
import im.vector.app.core.extensions.setTextOrHide
3736
import im.vector.app.databinding.FragmentLoginGenericTextInputFormBinding
3837
import im.vector.app.features.login.TextInputFormFragmentMode
@@ -42,6 +41,7 @@ import kotlinx.coroutines.flow.launchIn
4241
import kotlinx.coroutines.flow.onEach
4342
import kotlinx.parcelize.Parcelize
4443
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
44+
import org.matrix.android.sdk.api.extensions.isEmail
4545
import org.matrix.android.sdk.api.failure.Failure
4646
import org.matrix.android.sdk.api.failure.is401
4747
import reactivecircus.flowbinding.android.widget.textChanges

vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordEmailEntryFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ import im.vector.app.R
2525
import im.vector.app.core.extensions.associateContentStateWith
2626
import im.vector.app.core.extensions.clearErrorOnChange
2727
import im.vector.app.core.extensions.content
28-
import im.vector.app.core.extensions.isEmail
2928
import im.vector.app.core.extensions.setOnImeDoneListener
3029
import im.vector.app.core.extensions.toReducedUrl
3130
import im.vector.app.databinding.FragmentFtueResetPasswordEmailInputBinding
3231
import im.vector.app.features.onboarding.OnboardingAction
3332
import im.vector.app.features.onboarding.OnboardingViewState
33+
import org.matrix.android.sdk.api.extensions.isEmail
3434

3535
@AndroidEntryPoint
3636
class FtueAuthResetPasswordEmailEntryFragment :

0 commit comments

Comments
 (0)