only check reserved handles for bsky.social, fix test

This commit is contained in:
Samuel Newman
2025-07-03 14:53:56 +03:00
parent 64aa88e8d9
commit a55992c776
4 changed files with 18 additions and 9 deletions
+5 -5
View File
@@ -1,4 +1,4 @@
import {IsValidHandle, validateServiceHandle} from '#/lib/strings/handles'
import {type IsValidHandle, validateServiceHandle} from '#/lib/strings/handles'
describe('handle validation', () => {
const valid = [
@@ -18,17 +18,17 @@ describe('handle validation', () => {
})
const invalid = [
['al', 'bsky.social', 'frontLength'],
['al', 'bsky.social', 'frontLengthLongEnough'],
['-alice', 'bsky.social', 'hyphenStartOrEnd'],
['alice-', 'bsky.social', 'hyphenStartOrEnd'],
['%%%', 'bsky.social', 'handleChars'],
['1234567890123456789', 'bsky.social', 'frontLength'],
['1234567890123456789', 'bsky.social', 'frontLengthNotTooLong'],
[
'1234567890123456789',
'my-custom-pds-with-long-name.social',
'frontLength',
'frontLengthNotTooLong',
],
['al', 'my-custom-pds-with-long-name.social', 'frontLength'],
['al', 'my-custom-pds-with-long-name.social', 'frontLengthLongEnough'],
['a'.repeat(300), 'toolong.com', 'totalLength'],
] satisfies [string, string, keyof IsValidHandle][]
it.each(invalid)(
+2 -1
View File
@@ -5,6 +5,7 @@ export const LOCAL_DEV_SERVICE =
Platform.OS === 'android' ? 'http://10.0.2.2:2583' : 'http://localhost:2583'
export const STAGING_SERVICE = 'https://staging.bsky.dev'
export const BSKY_SERVICE = 'https://bsky.social'
export const BSKY_SERVICE_HANDLE_ENDSWITH = '.bsky.social'
export const PUBLIC_BSKY_SERVICE = 'https://public.api.bsky.app'
export const DEFAULT_SERVICE = BSKY_SERVICE
const HELP_DESK_LANG = 'en-us'
@@ -31,7 +32,7 @@ export const DISCOVER_DEBUG_DIDS: Record<string, true> = {
'did:plc:3jpt2mvvsumj2r7eqk4gzzjz': true, // esb.lol
'did:plc:vjug55kidv6sye7ykr5faxxn': true, // emilyliu.me
'did:plc:tgqseeot47ymot4zro244fj3': true, // iwsmith.bsky.social
'did:plc:2dzyut5lxna5ljiaasgeuffz': true, // mrnuma.bsky.social
'did:plc:2dzyut5lxna5ljiaasgeuffz': true, // darrin.bsky.team
}
const BASE_FEEDBACK_FORM_URL = `${HELP_DESK_URL}/requests/new`
+6 -2
View File
@@ -9,6 +9,7 @@ import Animated, {
import {msg, Plural, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {BSKY_SERVICE_HANDLE_ENDSWITH} from '#/lib/constants'
import {
createFullHandle,
isHandleReserved,
@@ -60,7 +61,10 @@ export function StepHandle() {
return
}
if (isHandleReserved(handle)) {
if (
state.userDomain === BSKY_SERVICE_HANDLE_ENDSWITH &&
isHandleReserved(handle)
) {
dispatch({
type: 'setError',
value: _(msg`That username is not available`),
@@ -147,7 +151,7 @@ export function StepHandle() {
// replace em dash with double hyphen to fix iOS behaviour
setDraftValue(val.replaceAll('—', '--'))
}}
label="alice.bsky.social"
label={`alice${state.userDomain}`}
defaultValue={draftValue}
autoCapitalize="none"
autoCorrect={false}
+5 -1
View File
@@ -1,5 +1,6 @@
import {useQuery} from '@tanstack/react-query'
import {BSKY_SERVICE_HANDLE_ENDSWITH} from '#/lib/constants'
import {createFullHandle, isHandleReserved} from '#/lib/strings/handles'
import {logger} from '#/logger'
import {useAgent} from '#/state/session'
@@ -26,7 +27,10 @@ export function useHandleAvailabilityQuery(
queryKey: RQKEY_handleAvailability(debouncedHandle),
queryFn: async () => {
const frontSegment = debouncedHandle.split('.')[0]
if (isHandleReserved(frontSegment)) {
if (
domain === BSKY_SERVICE_HANDLE_ENDSWITH &&
isHandleReserved(frontSegment)
) {
logger.metric(
'signup:handleReserved',
{typeahead: true},