2022-11-14 05:20:07 +03:00
|
|
|
<script setup lang="ts">
|
2023-01-08 09:21:09 +03:00
|
|
|
import type { mastodon } from 'masto'
|
2022-11-14 05:20:07 +03:00
|
|
|
|
2023-01-07 12:31:48 +03:00
|
|
|
const {
|
|
|
|
status,
|
2023-01-18 18:59:37 +03:00
|
|
|
newer,
|
2023-01-07 12:31:48 +03:00
|
|
|
withAction = true,
|
|
|
|
} = defineProps<{
|
2023-01-08 09:21:09 +03:00
|
|
|
status: mastodon.v1.Status | mastodon.v1.StatusEdit
|
2023-01-18 18:59:37 +03:00
|
|
|
newer?: mastodon.v1.Status
|
2022-11-26 03:04:31 +03:00
|
|
|
withAction?: boolean
|
2022-11-14 05:20:07 +03:00
|
|
|
}>()
|
2023-01-05 19:48:20 +03:00
|
|
|
|
2023-01-18 00:41:26 +03:00
|
|
|
const { translation } = useTranslation(status, getLanguageCode())
|
2023-01-07 12:31:48 +03:00
|
|
|
|
|
|
|
const emojisObject = useEmojisFallback(() => status.emojis)
|
2024-02-21 18:20:08 +03:00
|
|
|
const vnode = computed(() => {
|
2023-01-07 12:31:48 +03:00
|
|
|
if (!status.content)
|
|
|
|
return null
|
2023-11-07 12:57:44 +03:00
|
|
|
return contentToVNode(status.content, {
|
2023-01-07 12:31:48 +03:00
|
|
|
emojis: emojisObject.value,
|
2023-01-11 20:18:06 +03:00
|
|
|
mentions: 'mentions' in status ? status.mentions : undefined,
|
2023-01-07 12:31:48 +03:00
|
|
|
markdown: true,
|
2023-01-13 03:08:56 +03:00
|
|
|
collapseMentionLink: !!('inReplyToId' in status && status.inReplyToId),
|
2023-01-18 18:59:37 +03:00
|
|
|
status: 'id' in status ? status : undefined,
|
|
|
|
inReplyToStatus: newer,
|
2023-01-07 12:31:48 +03:00
|
|
|
})
|
|
|
|
})
|
2022-11-14 05:20:07 +03:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
2023-01-18 18:59:37 +03:00
|
|
|
<div class="status-body" whitespace-pre-wrap break-words :class="{ 'with-action': withAction }" relative>
|
2023-01-07 12:31:48 +03:00
|
|
|
<span
|
2022-11-27 19:54:11 +03:00
|
|
|
v-if="status.content"
|
2023-01-07 12:31:48 +03:00
|
|
|
class="content-rich line-compact" dir="auto"
|
|
|
|
:lang="('language' in status && status.language) || undefined"
|
|
|
|
>
|
2023-05-29 10:16:34 +03:00
|
|
|
<component :is="vnode" v-if="vnode" />
|
2023-01-07 12:31:48 +03:00
|
|
|
</span>
|
2022-12-24 00:53:21 +03:00
|
|
|
<div v-else />
|
2022-11-27 19:54:11 +03:00
|
|
|
<template v-if="translation.visible">
|
|
|
|
<div my2 h-px border="b base" bg-base />
|
2023-01-16 12:55:00 +03:00
|
|
|
<ContentRich v-if="translation.success" class="line-compact" :content="translation.text" :emojis="status.emojis" />
|
|
|
|
<div v-else text-red-4>
|
|
|
|
Error: {{ translation.error }}
|
|
|
|
</div>
|
2022-11-27 19:54:11 +03:00
|
|
|
</template>
|
2022-11-21 00:21:53 +03:00
|
|
|
</div>
|
2022-11-14 05:20:07 +03:00
|
|
|
</template>
|
2022-11-26 03:04:31 +03:00
|
|
|
|
|
|
|
<style>
|
|
|
|
.status-body.with-action p {
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
</style>
|