diff options
| author | anatawa12 <anatawa12@icloud.com> | 2024-04-19 19:42:01 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-19 19:42:01 +0900 |
| commit | f9aed8f2bf994902386878d1212912caa3a57b0d (patch) | |
| tree | d0d96eab4e86b915fa895d660142b2b910d5caf6 /packages/backend/src/core/MfmService.ts | |
| parent | enhance: 新しいコンディショナルロール条件の実装 (#13732) (diff) | |
| download | misskey-f9aed8f2bf994902386878d1212912caa3a57b0d.tar.gz misskey-f9aed8f2bf994902386878d1212912caa3a57b0d.tar.bz2 misskey-f9aed8f2bf994902386878d1212912caa3a57b0d.zip | |
fix: 正規化されていない状態のhashtagが連合されてきたhtmlに含まれているとhashtagが正しくhashtagに復元されない問題を修正 (#13733)
Diffstat (limited to 'packages/backend/src/core/MfmService.ts')
| -rw-r--r-- | packages/backend/src/core/MfmService.ts | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/packages/backend/src/core/MfmService.ts b/packages/backend/src/core/MfmService.ts index c62ee5a642..2fb731201b 100644 --- a/packages/backend/src/core/MfmService.ts +++ b/packages/backend/src/core/MfmService.ts @@ -10,6 +10,7 @@ import { Window } from 'happy-dom'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; import { intersperse } from '@/misc/prelude/array.js'; +import { normalizeForSearch } from '@/misc/normalize-for-search.js'; import type { IMentionedRemoteUsers } from '@/models/Note.js'; import { bindThis } from '@/decorators.js'; import * as TreeAdapter from '../../node_modules/parse5/dist/tree-adapters/default.js'; @@ -33,6 +34,8 @@ export class MfmService { // some AP servers like Pixelfed use br tags as well as newlines html = html.replace(/<br\s?\/?>\r?\n/gi, '\n'); + const normalizedHashtagNames = hashtagNames == null ? undefined : new Set<string>(hashtagNames.map(x => normalizeForSearch(x))); + const dom = parse5.parseFragment(html); let text = ''; @@ -85,7 +88,7 @@ export class MfmService { const href = node.attrs.find(x => x.name === 'href'); // ハッシュタグ - if (hashtagNames && href && hashtagNames.map(x => x.toLowerCase()).includes(txt.toLowerCase())) { + if (normalizedHashtagNames && href && normalizedHashtagNames.has(normalizeForSearch(txt))) { text += txt; // メンション } else if (txt.startsWith('@') && !(rel && rel.value.startsWith('me '))) { |