diff --git a/src/screens/Login/LoginForm.tsx b/src/screens/Login/LoginForm.tsx
index 96132ab20..7df3d433d 100644
--- a/src/screens/Login/LoginForm.tsx
+++ b/src/screens/Login/LoginForm.tsx
@@ -14,9 +14,9 @@ import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useRequestNotificationsPermission} from '#/lib/notifications/notifications'
-import {isNetworkError} from '#/lib/strings/errors'
-import {cleanError} from '#/lib/strings/errors'
+import {cleanError, isNetworkError} from '#/lib/strings/errors'
import {createFullHandle} from '#/lib/strings/handles'
+import {isValidDomain} from '#/lib/strings/url-helpers'
import {logger} from '#/logger'
import {useSetHasCheckedForStarterPack} from '#/state/preferences/used-starter-packs'
import {useSessionApi} from '#/state/session'
@@ -86,7 +86,7 @@ export const LoginForm = ({
}, [])
const onPressNext = async () => {
- if (isProcessing) return
+ if (isProcessing || isResolvingService || serviceUrl === undefined) return
Keyboard.dismiss()
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut)
setError('')
@@ -193,7 +193,7 @@ export const LoginForm = ({
Hosting provider
{isResolvingService && (
@@ -230,7 +230,7 @@ export const LoginForm = ({
if (!id) return
if (
id.startsWith('did:') ||
- (id.includes('.') && !id.includes('@'))
+ (!id.includes('@') && isValidDomain(id))
) {
debouncedResolveService(id)
}
@@ -373,7 +373,8 @@ export const LoginForm = ({
variant="solid"
color="primary"
size="large"
- onPress={onPressNext}>
+ onPress={onPressNext}
+ disabled={isResolvingService || serviceUrl === undefined}>
Next
diff --git a/src/screens/Login/index.tsx b/src/screens/Login/index.tsx
index 1d1f5cf1f..53b11def5 100644
--- a/src/screens/Login/index.tsx
+++ b/src/screens/Login/index.tsx
@@ -147,7 +147,7 @@ export const Login = ({onPressBack}: {onPressBack: () => void}) => {
)
const debouncedResolveService = useMemo(
- () => debounce(resolveIdentity, 800),
+ () => debounce(resolveIdentity, 400),
[resolveIdentity],
)