diff --git a/client/ui/chat/ChatFragment.tsx b/client/ui/chat/ChatFragment.tsx
index 52d2b55..67f8b5a 100644
--- a/client/ui/chat/ChatFragment.tsx
+++ b/client/ui/chat/ChatFragment.tsx
@@ -33,7 +33,6 @@ const markedInstance = new marked.Marked({
},
image({ text, href }) {
const type = /^(Video|File)=.*/.exec(text)?.[1] || 'Image'
-
if (/uploaded_files\/[A-Za-z0-9]+$/.test(href)) {
return ({
Image: ``,
@@ -272,6 +271,8 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
const rendeText = DOMPurify.sanitize(markedInstance.parse(msg.text) as string, {
ALLOWED_TAGS: [
"chat-image",
+ "chat-video",
+ "chat-file",
"span",
"chat-link",
],
diff --git a/client/ui/custom-elements/chat-video.ts b/client/ui/custom-elements/chat-video.ts
new file mode 100644
index 0000000..073c18d
--- /dev/null
+++ b/client/ui/custom-elements/chat-video.ts
@@ -0,0 +1,17 @@
+import { $ } from 'mdui/jq'
+
+customElements.define('chat-video', class extends HTMLElement {
+ constructor() {
+ super()
+ }
+ connectedCallback() {
+ this.style.display = 'block'
+ const e = new DOMParser().parseFromString(``, 'text/html').body.firstChild as Node
+ e.style.width = "100%"
+ e.style.height = "100%"
+ e.style.borderRadius = "var(--mdui-shape-corner-medium)"
+ e.alt = $(this).attr('alt') || ""
+ e.src = $(this).attr('src') as string
+ this.appendChild(e)
+ }
+})