diff --git a/packages/appview/src/lib/hydrate.ts b/packages/appview/src/lib/hydrate.ts --- a/packages/appview/src/lib/hydrate.ts +++ b/packages/appview/src/lib/hydrate.ts @@ -1,4 +1,8 @@ -import { XyzStatusphereDefs } from '@statusphere/lexicon' +import { + AppBskyActorDefs, + AppBskyActorProfile, + XyzStatusphereDefs, +} from '@statusphere/lexicon' import { Status } from '#/db' import { AppContext } from '#/index' @@ -19,3 +23,20 @@ .catch(() => 'invalid.handle'), }, } } + +export async function bskyProfileToProfileView( + did: string, + profile: AppBskyActorProfile.Record, + ctx: AppContext, +): Promise { + return { + $type: 'app.bsky.actor.defs#profileView', + did: did, + handle: await ctx.resolver.resolveDidToHandle(did), + avatar: profile.avatar + ? `https://atproto.pictures/img/${did}/${profile.avatar.ref}` + : undefined, + displayName: profile.displayName, + createdAt: profile.createdAt, + } +} diff --git a/packages/appview/src/routes.ts b/packages/appview/src/routes.ts --- a/packages/appview/src/routes.ts +++ b/packages/appview/src/routes.ts @@ -13,7 +13,7 @@ import { getIronSession, SessionOptions } from 'iron-session' import type { AppContext } from '#/index' import { env } from '#/lib/env' -import { statusToStatusView } from '#/lib/hydrate' +import { bskyProfileToProfileView, statusToStatusView } from '#/lib/hydrate' type Session = { did: string } @@ -222,17 +222,6 @@ ) } } - const profileView: AppBskyActorDefs.ProfileView = { - $type: 'app.bsky.actor.defs#profileView', - did: did, - handle: await ctx.resolver.resolveDidToHandle(did), - avatar: profile.avatar - ? `https://atproto.pictures/img/${did}/${profile.avatar.ref}` - : undefined, - displayName: profile.displayName, - createdAt: profile.createdAt, - } - // Fetch user status const status = await ctx.db .selectFrom('status') @@ -243,7 +232,7 @@ .executeTakeFirst() res.json({ did: agent.assertDid, - profile: profileView, + profile: await bskyProfileToProfileView(did, profile, ctx), status: status ? await statusToStatusView(status, ctx) : undefined, }) } catch (err) {