parent
							
								
									dfd92efa89
								
							
						
					
					
						commit
						09f4885f89
					
				
					 5 changed files with 41 additions and 2 deletions
				
			
		|  | @ -7,6 +7,13 @@ | ||||||
| 
 | 
 | ||||||
| --> | --> | ||||||
| 
 | 
 | ||||||
|  | ## 12.x.x (unreleased) | ||||||
|  | 
 | ||||||
|  | ### Improvements | ||||||
|  | - クライアント: メンションにユーザーのアバターを表示するように | ||||||
|  | 
 | ||||||
|  | ### Bugfixes | ||||||
|  | 
 | ||||||
| ## 12.93.2 (2021/10/23) | ## 12.93.2 (2021/10/23) | ||||||
| 
 | 
 | ||||||
| ### Bugfixes | ### Bugfixes | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								assets/user-unknown.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/user-unknown.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 3.4 KiB | 
|  | @ -1,6 +1,7 @@ | ||||||
| <template> | <template> | ||||||
| <MkA class="ldlomzub" :class="{ isMe }" :to="url" v-user-preview="canonical" v-if="url.startsWith('/')"> | <MkA class="ldlomzub" :class="{ isMe }" :to="url" v-user-preview="canonical" v-if="url.startsWith('/')"> | ||||||
| 	<span class="me" v-if="isMe">{{ $ts.you }}</span> | 	<span class="me" v-if="isMe">{{ $ts.you }}</span> | ||||||
|  | 	<img class="icon" :src="`/avatar/@${username}@${host}`" alt=""> | ||||||
| 	<span class="main"> | 	<span class="main"> | ||||||
| 		<span class="username">@{{ username }}</span> | 		<span class="username">@{{ username }}</span> | ||||||
| 		<span class="host" v-if="(host != localHost) || $store.state.showFullAcct">@{{ toUnicode(host) }}</span> | 		<span class="host" v-if="(host != localHost) || $store.state.showFullAcct">@{{ toUnicode(host) }}</span> | ||||||
|  | @ -76,6 +77,13 @@ export default defineComponent({ | ||||||
| 		vertical-align: top; | 		vertical-align: top; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	> .icon { | ||||||
|  | 		width: 1.5em; | ||||||
|  | 		margin: 0 0.2em; | ||||||
|  | 		vertical-align: bottom; | ||||||
|  | 		border-radius: 100%; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	> .main { | 	> .main { | ||||||
| 		> .host { | 		> .host { | ||||||
| 			opacity: 0.5; | 			opacity: 0.5; | ||||||
|  |  | ||||||
|  | @ -155,6 +155,14 @@ export class UserRepository extends Repository<User> { | ||||||
| 		); | 		); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	public getAvatarUrl(user: User): string { | ||||||
|  | 		if (user.avatarUrl) { | ||||||
|  | 			return user.avatarUrl; | ||||||
|  | 		} else { | ||||||
|  | 			return `${config.url}/random-avatar/${user.id}`; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	public async pack( | 	public async pack( | ||||||
| 		src: User['id'] | User, | 		src: User['id'] | User, | ||||||
| 		me?: { id: User['id'] } | null | undefined, | 		me?: { id: User['id'] } | null | undefined, | ||||||
|  | @ -186,7 +194,7 @@ export class UserRepository extends Repository<User> { | ||||||
| 			name: user.name, | 			name: user.name, | ||||||
| 			username: user.username, | 			username: user.username, | ||||||
| 			host: user.host, | 			host: user.host, | ||||||
| 			avatarUrl: user.avatarUrl ? user.avatarUrl : config.url + '/avatar/' + user.id, | 			avatarUrl: this.getAvatarUrl(user), | ||||||
| 			avatarBlurhash: user.avatarBlurhash, | 			avatarBlurhash: user.avatarBlurhash, | ||||||
| 			avatarColor: null, // 後方互換性のため
 | 			avatarColor: null, // 後方互換性のため
 | ||||||
| 			isAdmin: user.isAdmin || falsy, | 			isAdmin: user.isAdmin || falsy, | ||||||
|  |  | ||||||
|  | @ -26,6 +26,7 @@ import { networkChart } from '@/services/chart/index'; | ||||||
| import { genAvatar } from '@/misc/gen-avatar'; | import { genAvatar } from '@/misc/gen-avatar'; | ||||||
| import { createTemp } from '@/misc/create-temp'; | import { createTemp } from '@/misc/create-temp'; | ||||||
| import { publishMainStream } from '@/services/stream'; | import { publishMainStream } from '@/services/stream'; | ||||||
|  | import { parseAcct } from '@/misc/acct'; | ||||||
| 
 | 
 | ||||||
| export const serverLogger = new Logger('server', 'gray', false); | export const serverLogger = new Logger('server', 'gray', false); | ||||||
| 
 | 
 | ||||||
|  | @ -68,7 +69,22 @@ router.use(activityPub.routes()); | ||||||
| router.use(nodeinfo.routes()); | router.use(nodeinfo.routes()); | ||||||
| router.use(wellKnown.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(); | 	const [temp] = await createTemp(); | ||||||
| 	await genAvatar(ctx.params.x, fs.createWriteStream(temp)); | 	await genAvatar(ctx.params.x, fs.createWriteStream(temp)); | ||||||
| 	ctx.set('Content-Type', 'image/png'); | 	ctx.set('Content-Type', 'image/png'); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue