diff options
author | Samuel Newman <mozzius@protonmail.com> | 2025-01-10 17:57:10 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-10 17:57:10 +0000 |
commit | a7da6462865558c7d3766628f4cd8eabd93b68f9 (patch) | |
tree | 0883ea6d544bcf0a196b0d17e613210490edce53 /src/lib/strings | |
parent | d79c66af8ac20771c6de08bfc3b9fa953669764a (diff) | |
download | voidsky-a7da6462865558c7d3766628f4cd8eabd93b68f9.tar.zst |
[ELI5] Validate too long handles in signup (#7422)
* validate too long handles in signup * make change handle screen generic
Diffstat (limited to 'src/lib/strings')
-rw-r--r-- | src/lib/strings/handles.ts | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/strings/handles.ts b/src/lib/strings/handles.ts index 90786ac3f..bf329a869 100644 --- a/src/lib/strings/handles.ts +++ b/src/lib/strings/handles.ts @@ -19,6 +19,10 @@ export function createFullHandle(name: string, domain: string): string { return `${name}.${domain}` } +export function maxServiceHandleLength(domain: string): number { + return 30 - `.${(domain || '').replace(/^[.]+/, '')}`.length +} + export function isInvalidHandle(handle: string): boolean { return handle === 'handle.invalid' } @@ -38,7 +42,11 @@ export interface IsValidHandle { } // More checks from https://github.com/bluesky-social/atproto/blob/main/packages/pds/src/handle/index.ts#L72 -export function validateHandle(str: string, userDomain: string): IsValidHandle { +export function validateHandle( + str: string, + userDomain: string, + isServiceHandle?: boolean, +): IsValidHandle { const fullHandle = createFullHandle(str, userDomain) const results = { @@ -46,7 +54,7 @@ export function validateHandle(str: string, userDomain: string): IsValidHandle { !str || (VALIDATE_REGEX.test(fullHandle) && !str.includes('.')), hyphenStartOrEnd: !str.startsWith('-') && !str.endsWith('-'), frontLength: str.length >= 3, - totalLength: fullHandle.length <= 253, + totalLength: fullHandle.length <= (isServiceHandle ? 30 : 253), } return { |