diff --git a/packages/backend/src/core/CustomEmojiService.ts b/packages/backend/src/core/CustomEmojiService.ts index 1b545a124..f9368eb6d 100644 --- a/packages/backend/src/core/CustomEmojiService.ts +++ b/packages/backend/src/core/CustomEmojiService.ts @@ -19,6 +19,7 @@ import { UtilityService } from '@/core/UtilityService.js'; import { query } from '@/misc/prelude/url.js'; import type { Serialized } from '@/server/api/stream/types.js'; import { ModerationLogService } from '@/core/ModerationLogService.js'; +import type { Config } from '@/config.js'; const parseEmojiStrRegexp = /^(\w+)(?:@([\w.-]+))?$/; @@ -31,6 +32,9 @@ export class CustomEmojiService implements OnApplicationShutdown { @Inject(DI.redis) private redisClient: Redis.Redis, + @Inject(DI.config) + private config: Config, + @Inject(DI.emojisRepository) private emojisRepository: EmojisRepository, @@ -330,9 +334,11 @@ export class CustomEmojiService implements OnApplicationShutdown { if (name == null) return null; if (host == null) return null; + const newHost = host === this.config.host ? null : host; + const queryOrNull = async () => (await this.emojisRepository.findOneBy({ name, - host: host ?? IsNull(), + host: newHost ?? IsNull(), })) ?? null; const emoji = await this.cache.fetch(`${name} ${host}`, queryOrNull); diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts index 7b54ce5c6..8892ed748 100644 --- a/packages/backend/src/core/entities/NoteEntityService.ts +++ b/packages/backend/src/core/entities/NoteEntityService.ts @@ -22,6 +22,7 @@ import type { CustomEmojiService } from '../CustomEmojiService.js'; import type { ReactionService } from '../ReactionService.js'; import type { UserEntityService } from './UserEntityService.js'; import type { DriveFileEntityService } from './DriveFileEntityService.js'; +import type { Config } from '@/config.js'; @Injectable() export class NoteEntityService implements OnModuleInit { @@ -36,6 +37,9 @@ export class NoteEntityService implements OnModuleInit { @Inject(DI.usersRepository) private usersRepository: UsersRepository, + @Inject(DI.config) + private config: Config, + @Inject(DI.notesRepository) private notesRepository: NotesRepository, @@ -286,7 +290,7 @@ export class NoteEntityService implements OnModuleInit { const meId = me ? me.id : null; const note = typeof src === 'object' ? src : await this.notesRepository.findOneOrFail({ where: { id: src }, relations: ['user'] }); - const host = note.userHost; + const host = note.userHost === null ? this.config.host : note.userHost; let text = note.text; diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts index a339194cc..e1ba71ffd 100644 --- a/packages/backend/src/core/entities/UserEntityService.ts +++ b/packages/backend/src/core/entities/UserEntityService.ts @@ -339,6 +339,8 @@ export class UserEntityService implements OnModuleInit { const falsy = opts.detail ? false : undefined; + const checkHost = user.host == null ? this.config.host : user.host; + const packed = { id: user.id, name: user.name, @@ -361,7 +363,7 @@ export class UserEntityService implements OnModuleInit { followersCount: followersCount ?? 0, followingCount: followingCount ?? 0, notesCount: user.notesCount, - emojis: this.customEmojiService.populateEmojis(user.emojis, user.host), + emojis: this.customEmojiService.populateEmojis(user.emojis, checkHost), onlineStatus: this.getOnlineStatus(user), // パフォーマンス上の理由でローカルユーザーのみ badgeRoles: user.host == null ? this.roleService.getUserBadgeRoles(user.id).then(rs => rs.sort((a, b) => b.displayOrder - a.displayOrder).map(r => ({