diff --git a/packages/frontend/src/components/DynamicNote.vue b/packages/frontend/src/components/DynamicNote.vue index 6b3e36c9e5..115aeecfb3 100644 --- a/packages/frontend/src/components/DynamicNote.vue +++ b/packages/frontend/src/components/DynamicNote.vue @@ -14,12 +14,13 @@ Displays a note with either Misskey or Sharkey style, based on user preference. :withHardMute="withHardMute" @reaction="emoji => emit('reaction', emoji)" @removeReaction="emoji => emit('removeReaction', emoji)" + @expandCW="n => emit('expandCW', n)" /> diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index fd752eb3f8..9feed0acc6 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -12,6 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only :withHardMute="withHardMute" :class="[$style.root, { [$style.showActionsOnlyHover]: prefer.s.showNoteActionsOnlyHover, [$style.skipRender]: prefer.s.skipNoteRender }]" :tabindex="isDeleted ? '-1' : '0'" + @expand="n => emit('expandCW', n)" >
@@ -244,6 +245,7 @@ provide(DI.mock, props.mock); const emit = defineEmits<{ (ev: 'reaction', emoji: string): void; (ev: 'removeReaction', emoji: string): void; + (ev: 'expandCW', note: Misskey.entities.Note): void; }>(); const router = useRouter(); diff --git a/packages/frontend/src/components/SkNote.vue b/packages/frontend/src/components/SkNote.vue index 8cfdcec62b..d2b31e3df7 100644 --- a/packages/frontend/src/components/SkNote.vue +++ b/packages/frontend/src/components/SkNote.vue @@ -14,6 +14,7 @@ Displays a note in the Sharkey style. Used to show the "main" note in a given co :withHardMute="withHardMute" :class="[$style.root, { [$style.showActionsOnlyHover]: prefer.s.showNoteActionsOnlyHover, [$style.skipRender]: prefer.s.skipNoteRender }]" :tabindex="isDeleted ? '-1' : '0'" + @expand="n => emit('expandCW', n)" >
@@ -245,6 +246,7 @@ provide(DI.mock, props.mock); const emit = defineEmits<{ (ev: 'reaction', emoji: string): void; (ev: 'removeReaction', emoji: string): void; + (ev: 'expandCW', note: Misskey.entities.Note): void; }>(); const router = useRouter(); diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index 156eab004f..0df9b425ed 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -176,10 +176,10 @@ SPDX-License-Identifier: AGPL-3.0-only
- +
- + @@ -198,6 +198,7 @@ SPDX-License-Identifier: AGPL-3.0-only import { defineAsyncComponent, computed, onMounted, onUnmounted, nextTick, watch, ref } from 'vue'; import * as Misskey from 'misskey-js'; import { getScrollPosition } from '@@/js/scroll.js'; +import { patchMuteOverrides } from '@/utility/check-word-mute.js'; import MkTab from '@/components/MkTab.vue'; import MkNotes from '@/components/MkNotes.vue'; import MkFollowButton from '@/components/MkFollowButton.vue'; @@ -255,6 +256,14 @@ const emit = defineEmits<{ (ev: 'unfoldFiles'): void; }>(); +const cwOverrides = patchMuteOverrides(); + +function onExpandCW() { + // This kills the user-level and instance-level CWs for all notes below this point + cwOverrides.userMandatoryCW = null; + cwOverrides.instanceMandatoryCW = null; +} + const router = useRouter(); const user = ref(props.user); diff --git a/packages/frontend/src/utility/check-word-mute.ts b/packages/frontend/src/utility/check-word-mute.ts index fb61ad74ad..6b054852f5 100644 --- a/packages/frontend/src/utility/check-word-mute.ts +++ b/packages/frontend/src/utility/check-word-mute.ts @@ -19,7 +19,6 @@ export interface Mute { noteMuted?: boolean; noteMandatoryCW?: string | null; - // TODO show this as a single block on user timelines userMandatoryCW?: string | null; instanceMandatoryCW?: string | null; }