This commit is contained in:
syuilo 2025-02-22 10:49:05 +09:00
parent 16b4563ade
commit 13130f3600
4 changed files with 12 additions and 4 deletions

View File

@ -66,7 +66,7 @@ export class SystemAccountService {
return systemAccount.user as MiLocalUser;
} else {
const created = await this.createCorrespondingUser(type, {
username: `system.${type}`, // NOTE: (できれば避けたいが)system.から始まるかどうかでシステムアカウントかどうかを判定している処理もあるので変えないように
username: `system.${type}`, // NOTE: (できれば避けたいが) . が含まれるかどうかでシステムアカウントかどうかを判定している処理もあるので変えないように
name: this.meta.name,
});
this.cache.set(type, created);

View File

@ -28,6 +28,7 @@ import type {
FollowingsRepository,
FollowRequestsRepository,
MiFollowing,
MiMeta,
MiUserNotePining,
MiUserProfile,
MutingsRepository,
@ -100,6 +101,9 @@ export class UserEntityService implements OnModuleInit {
@Inject(DI.config)
private config: Config,
@Inject(DI.meta)
private meta: MiMeta,
@Inject(DI.redis)
private redisClient: Redis.Redis,
@ -381,7 +385,11 @@ export class UserEntityService implements OnModuleInit {
@bindThis
public getIdenticonUrl(user: MiUser): string {
return `${this.config.url}/identicon/${user.username.toLowerCase()}@${user.host ?? this.config.host}`;
if ((user.host == null || user.host === this.config.host) && user.username.includes('.') && this.meta.iconUrl) { // ローカルのシステムアカウントの場合
return this.meta.iconUrl;
} else {
return `${this.config.url}/identicon/${user.username.toLowerCase()}@${user.host ?? this.config.host}`;
}
}
@bindThis

View File

@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
<MkInfo v-if="user.host == null && user.username.startsWith('system.')">{{ i18n.ts.isSystemAccount }}</MkInfo>
<MkInfo v-if="user.host == null && user.username.includes('.')">{{ i18n.ts.isSystemAccount }}</MkInfo>
<FormLink v-if="user.host" :to="`/instance-info/${user.host}`">{{ i18n.ts.instanceInfo }}</FormLink>

View File

@ -61,7 +61,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkA>
</span>
</div>
<div v-if="user.host == null && user.username.startsWith('system.')" class="isSystemAccount">
<div v-if="user.host == null && user.username.includes('.')" class="isSystemAccount">
<MkInfo>{{ i18n.ts.isSystemAccount }}</MkInfo>
</div>
<div v-if="iAmModerator" class="moderationNote">