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 --- packages/frontend/src/components/SkNoteSub.vue | 52 ++------------------------ 1 file changed, 4 insertions(+), 48 deletions(-) (limited to 'packages/frontend/src/components/SkNoteSub.vue') diff --git a/packages/frontend/src/components/SkNoteSub.vue b/packages/frontend/src/components/SkNoteSub.vue index 36bbf9b826..4c4fca2450 100644 --- a/packages/frontend/src/components/SkNoteSub.vue +++ b/packages/frontend/src/components/SkNoteSub.vue @@ -81,24 +81,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- - - - - - - - - - +
@@ -107,7 +90,6 @@ import { computed, inject, ref, shallowRef, watch } from 'vue'; import * as Misskey from 'misskey-js'; import { computeMergedCw } from '@@/js/compute-merged-cw.js'; import { host } from '@@/js/config.js'; -import type { Ref } from 'vue'; import type { Visibility } from '@/utility/boost-quote.js'; import type { OpenOnRemoteOptions } from '@/utility/please-login.js'; import SkNoteHeader from '@/components/SkNoteHeader.vue'; @@ -121,7 +103,7 @@ import { misskeyApi } from '@/utility/misskey-api.js'; import { i18n } from '@/i18n.js'; import { $i } from '@/i.js'; import { userPage } from '@/filters/user.js'; -import { checkWordMute } from '@/utility/check-word-mute.js'; +import { checkMutes } from '@/utility/check-word-mute.js'; import { pleaseLogin } from '@/utility/please-login.js'; import { showMovedDialog } from '@/utility/show-moved-dialog.js'; import MkRippleEffect from '@/components/MkRippleEffect.vue'; @@ -131,6 +113,7 @@ import { getNoteMenu } from '@/utility/get-note-menu.js'; import { boostMenuItems, computeRenoteTooltip } from '@/utility/boost-quote.js'; import { prefer } from '@/preferences.js'; import { useNoteCapture } from '@/use/use-note-capture.js'; +import SkMutedNote from '@/components/SkMutedNote.vue'; const props = withDefaults(defineProps<{ note: Misskey.entities.Note; @@ -197,34 +180,7 @@ async function removeReply(id: Misskey.entities.Note['id']) { } } -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); useNoteCapture({ rootEl: el, -- cgit v1.2.3-freya