Something went wrong. Try again.
Something went wrong. Try again.
2.3 kB · 67 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768import { inject } from '@adonisjs/core'import type { HttpContext } from '@adonisjs/core/http'import { AtUri } from '@atproto/syntax'import ProfileService from '#profile/services/profile_service'import KitTransformer from '#kits/transformers/kit_transformer'import { showProfileParamsValidator, showKitParamsValidator } from '#profile/validators/profile'
@inject()export default class ProfilesController { constructor(private profileService: ProfileService) {}
async show({ params, request, inertia, response, auth }: HttpContext) { const { handle } = await request.validateUsing(showProfileParamsValidator, { data: params })
const profile = await this.profileService.getProfileData(handle, auth.user?.did)
if (!profile) { response.status(404) return inertia.render('errors/not_found', { handle }) }
return inertia.render('profile', { handle: profile.handle, did: profile.did, avatarUrl: profile.avatarUrl, description: profile.description, displayName: profile.displayName, kits: KitTransformer.transform(profile.kits, profile.viewerLikedKitIds).useVariant( 'forProfileShelf' ), stats: profile.stats, achievements: profile.achievements, }) }
async showKit({ params, request, inertia, response, auth }: HttpContext) { const { handle, rkey } = await request.validateUsing(showKitParamsValidator, { data: params })
const profile = await this.profileService.getProfileData(handle, auth.user?.did)
if (!profile) { response.status(404) return inertia.render('errors/not_found', { handle }) }
const kit = profile.kits.find((k) => new AtUri(k.uri).rkey === rkey)
if (!kit) { response.status(404) return inertia.render('errors/not_found', { handle }) }
return inertia.render('profile', { handle: profile.handle, did: profile.did, avatarUrl: profile.avatarUrl, description: profile.description, displayName: profile.displayName, kits: KitTransformer.transform(profile.kits, profile.viewerLikedKitIds).useVariant( 'forProfileShelf' ), stats: profile.stats, achievements: profile.achievements, selectedRkey: rkey, }) }}