✨ Support only attachments messages and markdown messages
This commit is contained in:
parent
3c02691511
commit
bbe6dbb2ca
@ -135,7 +135,7 @@ const data = ref<any>({
|
|||||||
})
|
})
|
||||||
|
|
||||||
async function sendMessage() {
|
async function sendMessage() {
|
||||||
if (!data.value.content) return
|
if (!data.value.content && !data.value.attachments) return
|
||||||
|
|
||||||
const url = channels.related.messages.edit_to
|
const url = channels.related.messages.edit_to
|
||||||
? `/api/channels/${channels.current.alias}/messages/${channels.related.messages.edit_to?.id}`
|
? `/api/channels/${channels.current.alias}/messages/${channels.related.messages.edit_to?.id}`
|
||||||
|
@ -24,7 +24,12 @@
|
|||||||
<span class="opacity-80">{{ createdAt }}</span>
|
<span class="opacity-80">{{ createdAt }}</span>
|
||||||
<span class="opacity-60 text-xs">#{{ props.item?.id }}</span>
|
<span class="opacity-60 text-xs">#{{ props.item?.id }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>{{ props.item?.content }}</div>
|
|
||||||
|
<div
|
||||||
|
v-if="props.item?.content"
|
||||||
|
class="prose prose-message max-w-none"
|
||||||
|
v-html="parseContent(props.item?.content ?? '')"
|
||||||
|
/>
|
||||||
|
|
||||||
<message-attachment
|
<message-attachment
|
||||||
v-if="props.item?.attachments && props.item?.attachments.length > 0"
|
v-if="props.item?.attachments && props.item?.attachments.length > 0"
|
||||||
@ -52,8 +57,10 @@
|
|||||||
import { useChannels } from "@/stores/channels"
|
import { useChannels } from "@/stores/channels"
|
||||||
import { useUserinfo } from "@/stores/userinfo"
|
import { useUserinfo } from "@/stores/userinfo"
|
||||||
import { computed } from "vue"
|
import { computed } from "vue"
|
||||||
|
import { parse } from "marked"
|
||||||
import dayjs from "dayjs"
|
import dayjs from "dayjs"
|
||||||
import relativeTime from "dayjs/plugin/relativeTime"
|
import relativeTime from "dayjs/plugin/relativeTime"
|
||||||
|
import dompurify from "dompurify"
|
||||||
import MessageAttachment from "@/components/chat/renderer/MessageAttachment.vue"
|
import MessageAttachment from "@/components/chat/renderer/MessageAttachment.vue"
|
||||||
|
|
||||||
const id = useUserinfo()
|
const id = useUserinfo()
|
||||||
@ -84,6 +91,10 @@ function deleteMessage() {
|
|||||||
channels.related.messages.delete_to.channel = channels.current
|
channels.related.messages.delete_to.channel = channels.current
|
||||||
channels.show.messages.delete = true
|
channels.show.messages.delete = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseContent(src: string): string {
|
||||||
|
return dompurify().sanitize(parse(src) as string)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
@ -106,3 +117,9 @@ function deleteMessage() {
|
|||||||
opacity: 100%;
|
opacity: 100%;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.prose.prose-message p {
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
Reference in New Issue
Block a user