fix sendEvent, update eventContent file

dev
adb 3 years ago
parent 64d6273a52
commit c35b5ba446

@ -6,14 +6,20 @@
{{content.body}} {{content.body}}
</div> </div>
<div v-else-if="content.msgtype==='m.file'" :class="`file ${compact?'compact':''}`"> <div v-else-if="content.msgtype==='m.file'" :class="`file ${compact?'compact':''}`">
<icon <a :href="getSource(content.url)" target="_blank">
title="file" <div class="fileContent">
ic="./sym/ic_attach_file_white.svg" <icon
/> title="file"
ic="./sym/ic_attach_file_white.svg"
class="download"
/>
<div class="filename">
{{content.filename || getSource(content.url)}}
</div>
</div>
</a>
<div class="text"> <div class="text">
<a :href="getSource(content.url)"> {{content.body}}
{{content.filename || getSource(content.url)}}
</a><br>{{content.body}}
</div> </div>
</div> </div>
<div v-else-if="content.msgtype==='m.audio'" :class="`audio ${compact?'compact':''}`"> <div v-else-if="content.msgtype==='m.audio'" :class="`audio ${compact?'compact':''}`">
@ -59,11 +65,26 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
.file{ .file{
.text{ max-width: 30rem;
.fileContent{
position: relative; position: relative;
left: 4rem; background-color: #1d1d1d;
top: 0; padding: 0.5rem;
width: 100%; border-radius: 0.5rem;
min-height: 3rem;
.filename{
display: inline-block;
position: relative;
margin-left: 4rem;
top: 0;
height: 100%;
}
.download{
position: absolute;
}
}
.compact{
max-width: 20rem;
} }
} }
.image{ .image{

@ -105,8 +105,8 @@ export default {
}, },
async sendEvent(event){ async sendEvent(event){
if (!event.content.body.trim()) return; if (!event.content.body.trim()) return;
await matrix.sendEvent(this.event, this.roomId, this.replyTo); if (this.replyTo) this.setReplyTo(this.replyTo);
//await matrix.sendEvent(new Proxy(this.event, this.eventProxy), this.roomId, this.replyTo); matrix.sendEvent(new Proxy(this.event, this.eventProxyHandler), this.roomId);
event.content.body = ''; event.content.body = '';
this.resetAttachment(); this.resetAttachment();
this.resetReplyTo(); this.resetReplyTo();
@ -125,6 +125,11 @@ export default {
matrix.client.sendTyping(this.roomId, true, timeout+100); matrix.client.sendTyping(this.roomId, true, timeout+100);
setTimeout(()=>this.waitForSendTyping=false, timeout); setTimeout(()=>this.waitForSendTyping=false, timeout);
}, },
setReplyTo(event){
this.event.content['m.relates_to'] = {
'm.in_reply_to': event
}
},
resizeMessageBanner(){ resizeMessageBanner(){
let id = this.$refs.newMessageInput; let id = this.$refs.newMessageInput;
id.style.height = '1.25rem'; id.style.height = '1.25rem';
@ -177,12 +182,14 @@ export default {
mimetype: file.type, mimetype: file.type,
url: window.URL.createObjectURL(file), url: window.URL.createObjectURL(file),
blob: blob || await this.readFile(file), blob: blob || await this.readFile(file),
filename: file.name,
file file
}; };
this.event.content = { this.event.content = {
body: file.name, body: file.name,
msgtype: this.attachment.msgtype, msgtype: this.attachment.msgtype,
mimetype: this.attachment.mimetype mimetype: this.attachment.mimetype,
filename: file.name
}; };
}, },
resetAttachment(){ resetAttachment(){
@ -212,7 +219,7 @@ export default {
body: '', body: '',
msgtype: 'm.text', msgtype: 'm.text',
'm.relates_to': { 'm.relates_to': {
'm.in_reply_to': this.replyTo 'm.in_reply_to': undefined
} }
} }
}, },
@ -224,10 +231,10 @@ export default {
isRecording: false, isRecording: false,
recBlob: undefined, recBlob: undefined,
attachment: undefined, attachment: undefined,
eventProxy: { eventProxyHandler: {
set: ()=>{}, set: () => true,
get: (target, key) => { get: (target, key) => {
if (typeof target[key] === 'object') return new Proxy(target[key], this.eventProxy); if (typeof target[key] === 'object') return new Proxy(Object.assign({}, target[key]), this.eventProxyHandler);
return target[key]; return target[key];
} }
} }

@ -77,22 +77,9 @@ export class MatrixHandler {
} }
}); });
} }
async sendEvent({content, type}, roomId, replyTo = undefined){ async sendEvent({content, type}, roomId){
console.log(replyTo, content) return await this.client.sendEvent(roomId, type, content)
await this.client.sendEvent(roomId, type, {
body: content.body.trim(),
msgtype: content.msgtype,
mimetype: content.mimetype,
url: content.url,
'm.relates_to': {
'm.in_reply_to': {
event_id: replyTo?replyTo.event_id:undefined
},
},
}).then(() => console.log('message sent successfully'))
.catch((err) => console.log(`error while sending message => ${err}`));
/*return await this.client.sendEvent(roomId, type, content)
.then(() => console.log('message sent successfully')) .then(() => console.log('message sent successfully'))
.catch((err) => console.log(`error while sending message => ${err}`));*/ .catch((err) => console.log(`error while sending message => ${err}`));
} }
} }
Loading…
Cancel
Save