diff --git a/CHANGELOG.md b/CHANGELOG.md index 46dd2dd202cf68181cd1b403c35220a1d06df778..438436f01a866be9e0d81129d3c5f0cbf61ff691 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,8 @@ - ãƒãƒ¼ãƒ«è¨å®šç”»é¢ã§ãƒãƒ¼ãƒ«IDを確èªã§ãるよã†ã« - コンテã‚ストメニュー表示時ã®ãƒ‘フォーマンスを改善 - フォãƒãƒ¼/フォãƒãƒ¯ãƒ¼éžå…¬é–‹æ™‚ã®è¡¨ç¤ºã‚’改善 +- 本文ã«MFMãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã«è‡ªå‹•ã§ãŸãŸã¾ã‚Œã‚‹æ©Ÿèƒ½ãŒã€è¿”信先や引用RNã«ã‚‚é©ç”¨ã•ã‚Œã‚‹ã‚ˆã†ã« + - position ã¯å¯¾è±¡å¤–ã«ãªã‚Šã¾ã—㟠- AiScriptã‚’0.15.0ã«æ›´æ–° - Fix: サーãƒãƒ¼ãƒ¡ãƒˆãƒªã‚¯ã‚¹ãŒ90度傾ã„ã¦ã„ã‚‹ - Fix: éžãƒã‚°ã‚¤ãƒ³æ™‚ã«ã‚¯ãƒ¬ãƒ‡ãƒ³ã‚·ãƒ£ãƒ«ãŒå¿…è¦ãªãƒšãƒ¼ã‚¸ã«è¡Œãã¨ã‚¨ãƒ©ãƒ¼ãŒå‡ºã‚‹å•é¡Œã‚’ä¿®æ£ diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 7a7406931ba87bfc3c36514c6ea495625a81e9fa..deeae6e9403653544309f2512269bb8257fe5e56 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -165,6 +165,7 @@ import { getNoteSummary } from '@/scripts/get-note-summary'; import { MenuItem } from '@/types/menu'; import MkRippleEffect from '@/components/MkRippleEffect.vue'; import { showMovedDialog } from '@/scripts/show-moved-dialog'; +import { shouldCollapsed } from '@/scripts/collapsed'; const props = defineProps<{ note: misskey.entities.Note; @@ -204,17 +205,7 @@ let appearNote = $computed(() => isRenote ? note.renote as misskey.entities.Note const isMyRenote = $i && ($i.id === note.userId); const showContent = ref(false); const urls = appearNote.text ? extractUrlFromMfm(mfm.parse(appearNote.text)) : null; -const isLong = (appearNote.cw == null && appearNote.text != null && ( - (appearNote.text.includes('$[x2')) || - (appearNote.text.includes('$[x3')) || - (appearNote.text.includes('$[x4')) || - (appearNote.text.includes('$[scale')) || - (appearNote.text.includes('$[position')) || - (appearNote.text.split('\n').length > 9) || - (appearNote.text.length > 500) || - (appearNote.files.length >= 5) || - (urls && urls.length >= 4) -)); +const isLong = shouldCollapsed(appearNote); const collapsed = ref(appearNote.cw == null && isLong); const isDeleted = ref(false); const muted = ref(checkWordMute(appearNote, $i, defaultStore.state.mutedWords)); diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue index c76ce7315d0867eebfe8a3060d9b2f807634710a..3a032a11675478f8e753ddaf0655f796fcccc278 100644 --- a/packages/frontend/src/components/MkSubNoteContent.vue +++ b/packages/frontend/src/components/MkSubNoteContent.vue @@ -31,16 +31,13 @@ import MkMediaList from '@/components/MkMediaList.vue'; import MkPoll from '@/components/MkPoll.vue'; import { i18n } from '@/i18n'; import { $i } from '@/account'; +import { shouldCollapsed } from '@/scripts/collapsed'; const props = defineProps<{ note: misskey.entities.Note; }>(); -const isLong = - props.note.cw == null && props.note.text != null && ( - (props.note.text.split('\n').length > 9) || - (props.note.text.length > 500) - ); +const isLong = shouldCollapsed(props.note); const collapsed = $ref(isLong); </script> diff --git a/packages/frontend/src/scripts/collapsed.ts b/packages/frontend/src/scripts/collapsed.ts new file mode 100644 index 0000000000000000000000000000000000000000..1bf56f233b882da0329a0b1dc8026a96f64e890f --- /dev/null +++ b/packages/frontend/src/scripts/collapsed.ts @@ -0,0 +1,19 @@ +import * as mfm from 'mfm-js'; +import * as misskey from 'misskey-js'; +import { extractUrlFromMfm } from './extract-url-from-mfm'; + +export function shouldCollapsed(note: misskey.entities.Note): boolean { + const urls = note.text ? extractUrlFromMfm(mfm.parse(note.text)) : null; + const collapsed = note.cw == null && note.text != null && ( + (note.text.includes('$[x2')) || + (note.text.includes('$[x3')) || + (note.text.includes('$[x4')) || + (note.text.includes('$[scale')) || + (note.text.split('\n').length > 9) || + (note.text.length > 500) || + (note.files.length >= 5) || + (!!urls && urls.length >= 4) + ); + + return collapsed; +}