From 27c46d7df9d78767765ffb6085641d49285976fd Mon Sep 17 00:00:00 2001 From: Lhcfl <Lhcfl@outlook.com> Date: Thu, 25 Apr 2024 15:53:29 +0800 Subject: [PATCH] feat: For notification posts, set a smaller folding threshold --- packages/client/src/components/MkNote.vue | 2 ++ .../src/components/MkNotificationFolded.vue | 11 +++++++ .../src/components/MkSubNoteContent.vue | 32 ++++++++++++------- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/packages/client/src/components/MkNote.vue b/packages/client/src/components/MkNote.vue index 33c70e777e..7b71d4903d 100644 --- a/packages/client/src/components/MkNote.vue +++ b/packages/client/src/components/MkNote.vue @@ -113,6 +113,7 @@ :detailed="true" :detailed-view="detailedView" :parent-id="appearNote.id" + :is-long-judger="isLongJudger" @push="(e) => router.push(notePage(e))" @focusfooter="footerEl!.focus()" @expanded="(e) => setPostExpanded(e)" @@ -325,6 +326,7 @@ const props = defineProps<{ collapsedReply?: boolean; hideFooter?: boolean; hideEmojiViewer?: boolean; + isLongJudger?: (note: entities.Note) => boolean; }>(); const inChannel = inject("inChannel", null); diff --git a/packages/client/src/components/MkNotificationFolded.vue b/packages/client/src/components/MkNotificationFolded.vue index e77467e9a2..f3b9769e84 100644 --- a/packages/client/src/components/MkNotificationFolded.vue +++ b/packages/client/src/components/MkNotificationFolded.vue @@ -60,12 +60,14 @@ class="content" :note="removeReplyTo(notification.note.renote)" :hide-emoji-viewer="true" + :is-long-judger="isLongJudger" /> <XNote v-else class="content" :note="removeReplyTo(notification.note)" :hide-emoji-viewer="true" + :is-long-judger="isLongJudger" /> </div> </template> @@ -120,6 +122,15 @@ const userleft = ref(props.notification.users.length - users.value.length); let readObserver: IntersectionObserver | undefined; let connection: Connection<Channels["main"]> | null = null; +function isLongJudger(note: entities.Note) { + return ( + note.text != null && + (note.text.split("\n").length > 5 || + note.text.length > 300 || + note.files.length > 4) + ); +} + function getText() { let res = ""; switch (props.notification.type) { diff --git a/packages/client/src/components/MkSubNoteContent.vue b/packages/client/src/components/MkSubNoteContent.vue index a0664c28e9..3fb1c2db6b 100644 --- a/packages/client/src/components/MkSubNoteContent.vue +++ b/packages/client/src/components/MkSubNoteContent.vue @@ -196,13 +196,26 @@ import { i18n } from "@/i18n"; import { defaultStore } from "@/store"; import icon from "@/scripts/icon"; -const props = defineProps<{ - note: entities.Note; - parentId?: string; - conversation?: entities.Note[]; - detailed?: boolean; - detailedView?: boolean; -}>(); +const props = withDefaults( + defineProps<{ + note: entities.Note; + parentId?: string; + conversation?: entities.Note[]; + detailed?: boolean; + detailedView?: boolean; + isLongJudger?: (note: entities.Note) => boolean; + }>(), + { + isLongJudger: (note: entities.Note) => { + return ( + note.text != null && + (note.text.split("\n").length > 10 || + note.text.length > 800 || + note.files.length > 4) + ); + }, + }, +); const emit = defineEmits<{ (ev: "push", v): void; @@ -216,10 +229,7 @@ const showMoreButton = ref<HTMLElement>(); const isLong = !props.detailedView && props.note.cw == null && - ((props.note.text != null && - (props.note.text.split("\n").length > 10 || - props.note.text.length > 800)) || - props.note.files.length > 4); + props.isLongJudger(props.note); const collapsed = ref(props.note.cw == null && isLong); const urls = props.note.text ? extractUrlFromMfm(mfm.parse(props.note.text)).slice(0, 5)