Compare commits

...

2 Commits

Author SHA1 Message Date
adb
1dea2f76ad add solveMarkdownLinks to eventUtils 2021-04-11 01:40:05 +02:00
adb
01fe023d06 fix if prop undefined for getMxc and event 2021-04-11 01:39:25 +02:00
3 changed files with 18 additions and 8 deletions

View File

@ -1,7 +1,7 @@
<template>
<div class="event">
<div v-if="event.type==='m.room.message'" :class="type==='send'?'messageSend':'messageReceive'" class="message">
<reply-event :event="replyEvent"/>
<reply-event :event="replyEvent" v-if="replyEvent"/>
<div v-if="event.content.msgtype==='m.text'" v-html="parseMessage(event.content.body)"/>
<div v-else-if="event.content.msgtype==='m.notice'" class="notice" v-html="parseMessage(event.content.body)"/>

View File

@ -8,12 +8,21 @@ export function solveTextLinks(text){
}
return `${space}<a href="${hyperlink}" target="_blank">${url}</a>`;
}
)
}
export function parseMessage(msg){
return solveTextLinks(
msg.replace(/>.*\n/gm, '').trim()
.replace(/</g, '&lt')
.replace(/>/g, '&gt')
);
}
export function solveMarkdownLinks(text){
return (text || '').replace(
/\[([\w\s\d/\\._+-]+)]\(((?:\/|https?:\/\/)[\w\d/.?=#_+-]+)\)/gi,
(match, text, url)=>{
return `<a href="${url}" target="_blank">${text}</a>`;
}
);
}
export function fixHtml(text){
return text.replace(/>.*\n/gm, '').trim()
.replace(/</g, '&lt')
.replace(/>/g, '&gt');
}
export function parseMessage(text){
return solveMarkdownLinks(solveTextLinks(fixHtml(text)));
}

View File

@ -26,6 +26,7 @@ export function getPreviewUrl(mxcUrl, size = 64, resizeMethod = 'crop'){
}
export function getMediaUrl(mxcUrl){
if (!mxcUrl) return undefined;
let mxc = parseMXC.parse(mxcUrl);
return `${matrix.baseUrl}/_matrix/media/r0/download/${
mxc.homeserver}/${mxc.id}`;