From 09f4885f8975c935861ddef01f4cdb83c4a185d9 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 24 Oct 2021 21:02:50 +0900 Subject: feat(client): メンションにユーザーのアバターを表示するように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve #350 --- src/server/index.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/index.ts b/src/server/index.ts index c891596140..5e1a12e4d3 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -26,6 +26,7 @@ import { networkChart } from '@/services/chart/index'; import { genAvatar } from '@/misc/gen-avatar'; import { createTemp } from '@/misc/create-temp'; import { publishMainStream } from '@/services/stream'; +import { parseAcct } from '@/misc/acct'; export const serverLogger = new Logger('server', 'gray', false); @@ -68,7 +69,22 @@ router.use(activityPub.routes()); router.use(nodeinfo.routes()); router.use(wellKnown.routes()); -router.get('/avatar/:x', async ctx => { +router.get('/avatar/@:acct', async ctx => { + const { username, host } = parseAcct(ctx.params.acct); + const user = await Users.findOne({ + usernameLower: username.toLowerCase(), + host: host === config.host ? null : host, + isSuspended: false + }); + + if (user) { + ctx.redirect(Users.getAvatarUrl(user)); + } else { + ctx.redirect('/static-assets/user-unknown.png'); + } +}); + +router.get('/random-avatar/:x', async ctx => { const [temp] = await createTemp(); await genAvatar(ctx.params.x, fs.createWriteStream(temp)); ctx.set('Content-Type', 'image/png'); -- cgit v1.2.3-freya