From b52db71e1894e25cebfafc782d2cec86705e2cbb Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Mon, 12 May 2025 23:28:55 -0400 Subject: factor out shared word mute logic --- .../frontend/src/components/SkNoteDetailed.vue | 56 ++-------------------- 1 file changed, 4 insertions(+), 52 deletions(-) (limited to 'packages/frontend/src/components/SkNoteDetailed.vue') diff --git a/packages/frontend/src/components/SkNoteDetailed.vue b/packages/frontend/src/components/SkNoteDetailed.vue index 29886244ce..c499855a80 100644 --- a/packages/frontend/src/components/SkNoteDetailed.vue +++ b/packages/frontend/src/components/SkNoteDetailed.vue @@ -235,28 +235,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- - - - - - - - - - +
@@ -267,7 +246,6 @@ import * as Misskey from 'misskey-js'; import { isLink } from '@@/js/is-link.js'; import { host } from '@@/js/config.js'; import { computeMergedCw } from '@@/js/compute-merged-cw.js'; -import type { Ref } from 'vue'; import type { OpenOnRemoteOptions } from '@/utility/please-login.js'; import type { Paging } from '@/components/MkPagination.vue'; import type { Keymap } from '@/utility/hotkey.js'; @@ -283,7 +261,7 @@ import MkUsersTooltip from '@/components/MkUsersTooltip.vue'; import MkUrlPreview from '@/components/MkUrlPreview.vue'; import SkInstanceTicker from '@/components/SkInstanceTicker.vue'; import { pleaseLogin } from '@/utility/please-login.js'; -import { checkWordMute } from '@/utility/check-word-mute.js'; +import { checkMutes } from '@/utility/check-word-mute.js'; import { userPage } from '@/filters/user.js'; import { notePage } from '@/filters/note.js'; import number from '@/filters/number.js'; @@ -313,6 +291,7 @@ import { getAppearNote } from '@/utility/get-appear-note.js'; import { prefer } from '@/preferences.js'; import { getPluginHandlers } from '@/plugin.js'; import { DI } from '@/di.js'; +import SkMutedNote from '@/components/SkMutedNote.vue'; const props = withDefaults(defineProps<{ note: Misskey.entities.Note; @@ -381,34 +360,7 @@ const mergedCW = computed(() => computeMergedCw(appearNote.value)); const renoteTooltip = computeRenoteTooltip(renoted); -const inTimeline = inject('inTimeline', false); -const tl_withSensitive = inject>('tl_withSensitive', ref(true)); -const muted = ref(checkMute(appearNote.value, $i?.mutedWords)); - -/* Overload FunctionにLintが対応していないのでコメントアウト -function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly: true): boolean; -function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly: false): Array | false | 'sensitiveMute'; -*/ -function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array | undefined | null, checkOnly = false): Array | false | 'sensitiveMute' { - if (mutedWords != null) { - const result = checkWordMute(noteToCheck, $i, mutedWords); - if (Array.isArray(result)) return result; - - const replyResult = noteToCheck.reply && checkWordMute(noteToCheck.reply, $i, mutedWords); - if (Array.isArray(replyResult)) return replyResult; - - const renoteResult = noteToCheck.renote && checkWordMute(noteToCheck.renote, $i, mutedWords); - if (Array.isArray(renoteResult)) return renoteResult; - } - - if (checkOnly) return false; - - if (inTimeline && tl_withSensitive.value === false && noteToCheck.files?.some((v) => v.isSensitive)) { - return 'sensitiveMute'; - } - - return false; -} +const { muted } = checkMutes(appearNote.value); watch(() => props.expandAllCws, (expandAllCws) => { if (expandAllCws !== showContent.value) showContent.value = expandAllCws; -- cgit v1.2.3-freya