UNPKG

@atproto/ozone

Version:

Backend service for moderating the Bluesky network.

42 lines (38 loc) 1.24 kB
import { AppContext } from '../../context' import { Server } from '../../lexicon' import { addAccountInfoToRepoViewDetail, getPdsAccountInfos } from '../util' export default function (server: Server, ctx: AppContext) { server.tools.ozone.moderation.getRepos({ auth: ctx.authVerifier.modOrAdminToken, handler: async ({ params, auth, req }) => { const { dids } = params const db = ctx.db const labelers = ctx.reqLabelers(req) const [partialRepos, accountInfo] = await Promise.all([ ctx.modService(db).views.repoDetails(dids, labelers), getPdsAccountInfos(ctx, dids), ]) const repos = dids.map((did) => { const partialRepo = partialRepos.get(did) if (!partialRepo) { return { did, $type: 'tools.ozone.moderation.defs#repoViewNotFound', } } return { ...addAccountInfoToRepoViewDetail( partialRepo, accountInfo.get(did) || null, auth.credentials.isModerator, ), $type: 'tools.ozone.moderation.defs#repoViewDetail', } }) return { encoding: 'application/json', body: { repos }, } }, }) }