diff --git a/packages/backend/src/models/User.ts b/packages/backend/src/models/User.ts index c282fa327f..b2b13e1724 100644 --- a/packages/backend/src/models/User.ts +++ b/packages/backend/src/models/User.ts @@ -430,6 +430,22 @@ export type MiPartialRemoteUser = Partial & { uri: string; }; +export function isRemoteUser(user: MiUser): user is MiRemoteUser; +export function isRemoteUser(user: U): user is PartialRemoteUser; +export function isRemoteUser(user: { host: string | null }): user is { host: string } { + return user.host != null; +} + +export function isLocalUser(user: MiUser): user is MiLocalUser; +export function isLocalUser(user: U): user is PartialLocalUser; +export function isLocalUser(user: { host: string | null }): user is { host: null } { + return user.host == null; +} + +type PartialUser = Partial & { host: string | null, uri?: string | null }; +type PartialLocalUser = U & { host: null, uri?: null }; +type PartialRemoteUser = U & { host: string, uri?: string }; + export const localUsernameSchema = { type: 'string', pattern: /^\w{1,20}$/.toString().slice(1, -1) } as const; export const passwordSchema = { type: 'string', minLength: 1 } as const; export const nameSchema = { type: 'string', minLength: 1, maxLength: 50 } as const;