From adeef4f62939b7a1f2cd4fd571c353e9da50506a Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Sat, 6 Sep 2025 18:56:52 +0200 Subject: [PATCH] Transform the account field in sessions When serving sessions instead of passing the ServerUser directly, convert it to the ApiAccount format. --- server/utils/session.ts | 3 ++- server/utils/user.ts | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/server/utils/session.ts b/server/utils/session.ts index f6d9d77..dfba536 100644 --- a/server/utils/session.ts +++ b/server/utils/session.ts @@ -15,6 +15,7 @@ import { } from "~/server/database"; import { broadcastEvent } from "../streams"; import type { ApiAuthenticationProvider, ApiSession } from "~/shared/types/api"; +import { serverUserToApiAccount } from "./user"; async function removeSessionSubscription(sessionId: number) { const subscriptions = await readSubscriptions(); @@ -182,7 +183,7 @@ export async function serverSessionToApi(event: H3Event, session: ServerSession) return { id: session.id, - account, + account: serverUserToApiAccount(account), authenticationProvider: session.authenticationProvider, authenticationName: session.authenticationName, push, diff --git a/server/utils/user.ts b/server/utils/user.ts index 4cae9b2..2ae7be9 100644 --- a/server/utils/user.ts +++ b/server/utils/user.ts @@ -3,7 +3,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later */ import type { ServerUser } from "~/server/database" -import type { ApiTombstone, ApiUser, ApiUserDetails } from "~/shared/types/api"; +import type { ApiAccount, ApiTombstone, ApiUser, ApiUserDetails } from "~/shared/types/api"; export function serverUserToApi(user: ServerUser): ApiUser | ApiTombstone { if (user.deleted) { @@ -38,3 +38,19 @@ export function serverUserToApiDetails(user: ServerUser): ApiUserDetails | ApiTo locale: user.locale, } } + +export function serverUserToApiAccount(user?: ServerUser): ApiAccount | undefined { + if (!user || user.deleted) { + return undefined; + } + return { + id: user.id, + updatedAt: user.updatedAt, + type: user.type, + name: user.name, + interestedEventIds: user.interestedEventIds, + interestedEventSlotIds: user.interestedEventSlotIds, + timezone: user.timezone, + locale: user.locale, + } +}