From 957f0d3b173a41e81485a1a48d9c422499f20cb0 Mon Sep 17 00:00:00 2001 From: Ayo Ayco Date: Tue, 7 Nov 2023 10:57:44 +0100 Subject: [PATCH] feat: display embedded media player (#2417) --- components/status/StatusBody.vue | 3 +- components/status/StatusContent.vue | 7 +- components/status/StatusEmbeddedMedia.vue | 105 ++++++++++++++++++++++ composables/content-parse.ts | 19 ++++ composables/content-render.ts | 2 +- composables/settings/definition.ts | 2 + locales/en.json | 3 + pages/settings/preferences/index.vue | 10 +++ 8 files changed, 146 insertions(+), 5 deletions(-) create mode 100644 components/status/StatusEmbeddedMedia.vue diff --git a/components/status/StatusBody.vue b/components/status/StatusBody.vue index 1d797dee..951400ed 100644 --- a/components/status/StatusBody.vue +++ b/components/status/StatusBody.vue @@ -17,7 +17,7 @@ const emojisObject = useEmojisFallback(() => status.emojis) const vnode = $computed(() => { if (!status.content) return null - const vnode = contentToVNode(status.content, { + return contentToVNode(status.content, { emojis: emojisObject.value, mentions: 'mentions' in status ? status.mentions : undefined, markdown: true, @@ -25,7 +25,6 @@ const vnode = $computed(() => { status: 'id' in status ? status : undefined, inReplyToStatus: newer, }) - return vnode }) diff --git a/components/status/StatusContent.vue b/components/status/StatusContent.vue index 3ef2e3c5..0400207f 100644 --- a/components/status/StatusContent.vue +++ b/components/status/StatusContent.vue @@ -26,9 +26,11 @@ const hasSpoilerOrSensitiveMedia = $computed(() => spoilerTextPresent || (status const isSensitiveNonSpoiler = computed(() => status.sensitive && !status.spoilerText && !!status.mediaAttachments.length) const hideAllMedia = computed( () => { - return currentUser.value ? (getHideMediaByDefault(currentUser.value.account) && !!status.mediaAttachments.length) : false + return currentUser.value ? (getHideMediaByDefault(currentUser.value.account) && (!!status.mediaAttachments.length || !!status.card?.html)) : false }, ) +const embeddedMediaPreference = $(usePreferences('experimentalEmbeddedMedia')) +const allowEmbeddedMedia = $computed(() => status.card?.html && embeddedMediaPreference)