File tree Expand file tree Collapse file tree 14 files changed +23
-18
lines changed
matrix-sdk-android/src/main/java/org/matrix/android/sdk
vector/src/main/java/im/vector/app Expand file tree Collapse file tree 14 files changed +23
-18
lines changed Original file line number Diff line number Diff line change
1
+ Update regex for email address to be aligned on RFC 5322
Original file line number Diff line number Diff line change 16
16
17
17
package org.matrix.android.sdk.api.extensions
18
18
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
+
19
24
fun CharSequence.ensurePrefix (prefix : CharSequence ): CharSequence {
20
25
return when {
21
26
startsWith(prefix) -> this
22
27
else -> " $prefix$this "
23
28
}
24
29
}
25
30
31
+ /* *
32
+ * Check if a CharSequence is an email.
33
+ */
34
+ fun CharSequence.isEmail () = emailAddress.matcher(this ).matches()
35
+
26
36
/* *
27
37
* Append a new line and then the provided string.
28
38
*/
Original file line number Diff line number Diff line change 16
16
17
17
package org.matrix.android.sdk.internal.auth.login
18
18
19
- import android.util.Patterns
20
19
import org.matrix.android.sdk.api.auth.LoginType
21
20
import org.matrix.android.sdk.api.auth.login.LoginProfileInfo
22
21
import org.matrix.android.sdk.api.auth.login.LoginWizard
23
22
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
23
+ import org.matrix.android.sdk.api.extensions.isEmail
24
24
import org.matrix.android.sdk.api.session.Session
25
25
import org.matrix.android.sdk.api.util.JsonDict
26
26
import org.matrix.android.sdk.internal.auth.AuthAPI
@@ -59,7 +59,7 @@ internal class DefaultLoginWizard(
59
59
initialDeviceName : String ,
60
60
deviceId : String?
61
61
): Session {
62
- val loginParams = if (Patterns . EMAIL_ADDRESS .matcher( login).matches ()) {
62
+ val loginParams = if (login.isEmail ()) {
63
63
PasswordLoginParams .thirdPartyIdentifier(
64
64
medium = ThreePidMedium .EMAIL ,
65
65
address = login,
Original file line number Diff line number Diff line change 16
16
17
17
package im.vector.app.core.extensions
18
18
19
- import android.util.Patterns
20
19
import com.google.i18n.phonenumbers.NumberParseException
21
20
import com.google.i18n.phonenumbers.PhoneNumberUtil
22
21
import org.matrix.android.sdk.api.MatrixPatterns
@@ -26,11 +25,6 @@ fun Boolean.toOnOff() = if (this) "ON" else "OFF"
26
25
27
26
inline fun <T > T.ooi (block : (T ) -> Unit ): T = also (block)
28
27
29
- /* *
30
- * Check if a CharSequence is an email.
31
- */
32
- fun CharSequence.isEmail () = Patterns .EMAIL_ADDRESS .matcher(this ).matches()
33
-
34
28
fun CharSequence.isMatrixId () = MatrixPatterns .isUserId(this .toString())
35
29
36
30
/* *
Original file line number Diff line number Diff line change 16
16
17
17
package im.vector.app.features.command
18
18
19
- import im.vector.app.core.extensions.isEmail
20
19
import im.vector.app.core.extensions.isMsisdn
21
20
import im.vector.app.core.extensions.orEmpty
22
21
import im.vector.app.features.home.room.detail.ChatEffect
23
22
import im.vector.app.features.settings.VectorPreferences
24
23
import org.matrix.android.sdk.api.MatrixPatterns
25
24
import org.matrix.android.sdk.api.MatrixUrls.isMxcUrl
25
+ import org.matrix.android.sdk.api.extensions.isEmail
26
26
import org.matrix.android.sdk.api.session.identity.ThreePid
27
27
import timber.log.Timber
28
28
import javax.inject.Inject
Original file line number Diff line number Diff line change @@ -32,13 +32,13 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil
32
32
import dagger.hilt.android.AndroidEntryPoint
33
33
import im.vector.app.R
34
34
import im.vector.app.core.extensions.hideKeyboard
35
- import im.vector.app.core.extensions.isEmail
36
35
import im.vector.app.core.extensions.setTextOrHide
37
36
import im.vector.app.databinding.FragmentLoginGenericTextInputFormBinding
38
37
import kotlinx.coroutines.flow.launchIn
39
38
import kotlinx.coroutines.flow.onEach
40
39
import kotlinx.parcelize.Parcelize
41
40
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
41
+ import org.matrix.android.sdk.api.extensions.isEmail
42
42
import org.matrix.android.sdk.api.failure.Failure
43
43
import org.matrix.android.sdk.api.failure.is401
44
44
import reactivecircus.flowbinding.android.widget.textChanges
Original file line number Diff line number Diff line change @@ -28,14 +28,14 @@ import dagger.hilt.android.AndroidEntryPoint
28
28
import im.vector.app.R
29
29
import im.vector.app.core.extensions.hideKeyboard
30
30
import im.vector.app.core.extensions.hidePassword
31
- import im.vector.app.core.extensions.isEmail
32
31
import im.vector.app.core.extensions.toReducedUrl
33
32
import im.vector.app.databinding.FragmentLoginResetPasswordBinding
34
33
import im.vector.app.features.analytics.plan.MobileScreen
35
34
import kotlinx.coroutines.flow.combine
36
35
import kotlinx.coroutines.flow.launchIn
37
36
import kotlinx.coroutines.flow.map
38
37
import kotlinx.coroutines.flow.onEach
38
+ import org.matrix.android.sdk.api.extensions.isEmail
39
39
import reactivecircus.flowbinding.android.widget.textChanges
40
40
41
41
/* *
Original file line number Diff line number Diff line change @@ -30,7 +30,6 @@ import im.vector.app.core.extensions.clearErrorOnChange
30
30
import im.vector.app.core.extensions.content
31
31
import im.vector.app.core.extensions.editText
32
32
import im.vector.app.core.extensions.hasContent
33
- import im.vector.app.core.extensions.isEmail
34
33
import im.vector.app.core.extensions.setOnImeDoneListener
35
34
import im.vector.app.core.extensions.toReducedUrl
36
35
import im.vector.app.databinding.FragmentFtueEmailInputBinding
@@ -39,6 +38,7 @@ import im.vector.app.features.onboarding.OnboardingViewState
39
38
import im.vector.app.features.onboarding.RegisterAction
40
39
import kotlinx.parcelize.Parcelize
41
40
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
41
+ import org.matrix.android.sdk.api.extensions.isEmail
42
42
43
43
@Parcelize
44
44
data class FtueAuthEmailEntryFragmentArgument (
Original file line number Diff line number Diff line change @@ -32,7 +32,6 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil
32
32
import dagger.hilt.android.AndroidEntryPoint
33
33
import im.vector.app.R
34
34
import im.vector.app.core.extensions.hideKeyboard
35
- import im.vector.app.core.extensions.isEmail
36
35
import im.vector.app.core.extensions.setTextOrHide
37
36
import im.vector.app.databinding.FragmentLoginGenericTextInputFormBinding
38
37
import im.vector.app.features.login.TextInputFormFragmentMode
@@ -42,6 +41,7 @@ import kotlinx.coroutines.flow.launchIn
42
41
import kotlinx.coroutines.flow.onEach
43
42
import kotlinx.parcelize.Parcelize
44
43
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
44
+ import org.matrix.android.sdk.api.extensions.isEmail
45
45
import org.matrix.android.sdk.api.failure.Failure
46
46
import org.matrix.android.sdk.api.failure.is401
47
47
import reactivecircus.flowbinding.android.widget.textChanges
Original file line number Diff line number Diff line change @@ -25,12 +25,12 @@ import im.vector.app.R
25
25
import im.vector.app.core.extensions.associateContentStateWith
26
26
import im.vector.app.core.extensions.clearErrorOnChange
27
27
import im.vector.app.core.extensions.content
28
- import im.vector.app.core.extensions.isEmail
29
28
import im.vector.app.core.extensions.setOnImeDoneListener
30
29
import im.vector.app.core.extensions.toReducedUrl
31
30
import im.vector.app.databinding.FragmentFtueResetPasswordEmailInputBinding
32
31
import im.vector.app.features.onboarding.OnboardingAction
33
32
import im.vector.app.features.onboarding.OnboardingViewState
33
+ import org.matrix.android.sdk.api.extensions.isEmail
34
34
35
35
@AndroidEntryPoint
36
36
class FtueAuthResetPasswordEmailEntryFragment :
You can’t perform that action at this time.
0 commit comments