import { Server } from '@atproto/xrpc-server' import { AppContext } from '../../../../context' import { app } from '../../../../lexicons/index.js' import { computeProxyTo } from '../../../../pipethrough' import { MungeFn, pipethroughReadAfterWrite, } from '../../../../read-after-write' export default function (server: Server, ctx: AppContext) { if (!ctx.bskyAppView) return server.add(app.bsky.feed.getActorLikes, { auth: ctx.authVerifier.authorization({ authorize: (permissions, { req }) => { const lxm = app.bsky.feed.getActorLikes.$lxm const aud = computeProxyTo(ctx, req, lxm) permissions.assertRpc({ aud, lxm }) }, }), handler: async (reqCtx) => { return pipethroughReadAfterWrite( ctx, reqCtx, app.bsky.feed.getActorLikes, getAuthorMunge, ) }, }) } const getAuthorMunge: MungeFn = async ( localViewer, original, local, requester, ) => { const localProf = local.profile let feed = original.feed // first update any out of date profile pictures in feed if (localProf) { feed = feed.map((item) => { if (item.post.author.did === requester) { return { ...item, post: { ...item.post, author: localViewer.updateProfileViewBasic( item.post.author, localProf.record, ), }, } } else { return item } }) } return { ...original, feed, } }