From c2f6f54f505e3dddf7a9e0d891a3efcaee140668 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Tue, 30 Sep 2025 22:03:53 -0400 Subject: [PATCH] make MiUser.isRemoteUser / MiUser.isLocalUser generic --- packages/backend/src/models/User.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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;