diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index 22b1691a8664..4828ad80591d 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -56,7 +56,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
({{ i18n.ts.private }})
@@ -92,7 +92,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
{{ appearNote.channel.name }}
@@ -221,6 +221,11 @@ const currentClip = inject[ | null>('currentClip', nul
const note = ref(deepClone(props.note));
+onMounted(() => {
+ isLong.value = collapsibleInner.value.clientHeight > 9 * parseFloat(getComputedStyle(collapsibleInner.value).fontSize);
+ collapsed.value &&= isLong.value;
+});
+
// plugin
if (noteViewInterruptors.length > 0) {
onMounted(async () => {
@@ -260,8 +265,9 @@ const isMyRenote = $i && ($i.id === note.value.userId);
const showContent = ref(false);
const parsed = computed(() => appearNote.value.text ? mfm.parse(appearNote.value.text) : null);
const urls = computed(() => parsed.value ? extractUrlFromMfm(parsed.value).filter((url) => appearNote.value.renote?.url !== url && appearNote.value.renote?.uri !== url) : null);
-const isLong = shouldCollapsed(appearNote.value, urls.value ?? []);
-const collapsed = ref(appearNote.value.cw == null && isLong);
+const collapsibleInner = ref(null);
+const isLong = ref(false);
+const collapsed = ref(appearNote.value.cw == null);
const isDeleted = ref(false);
const muted = ref(checkMute(appearNote.value, $i?.mutedWords));
const hardMuted = ref(props.withHardMute && checkMute(appearNote.value, $i?.hardMutedWords, true));
]