Merge remote-tracking branch 'origin/dev'
This commit is contained in:
commit
a6838e3703
@ -52,6 +52,10 @@ export default {
|
|||||||
compact: {
|
compact: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
onUpdate: {
|
||||||
|
type: Function,
|
||||||
|
default: ()=>{}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -59,6 +63,9 @@ export default {
|
|||||||
return url.includes('mxc')?getMediaUrl(url):url;
|
return url.includes('mxc')?getMediaUrl(url):url;
|
||||||
},
|
},
|
||||||
parseMessage
|
parseMessage
|
||||||
|
},
|
||||||
|
updated() {
|
||||||
|
this.onUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import icon from '@/components/icon';
|
import icon from '@/components/icon';
|
||||||
|
import {readFileBlob} from '@/lib/readFileBlob';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'soundRecorder',
|
name: 'soundRecorder',
|
||||||
@ -26,21 +27,11 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
setFile({file}){
|
setFile({file}){
|
||||||
this.readFile(file).then(blob => {
|
readFileBlob(file).then(blob => {
|
||||||
blob.name = file.name;
|
blob.name = file.name;
|
||||||
this.onChange({blob})
|
this.onChange({blob})
|
||||||
});
|
});
|
||||||
},
|
|
||||||
readFile(file){
|
|
||||||
return new Promise(resolve => {
|
|
||||||
let reader = new FileReader();
|
|
||||||
reader.onerror = console.error;
|
|
||||||
reader.onload = async event => {
|
|
||||||
resolve(await (await fetch(event.target.result)).blob());
|
|
||||||
}
|
}
|
||||||
reader.readAsDataURL(file);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="newMessageBanner" ref="newMessageBanner">
|
<div class="newMessageBanner" ref="newMessageBanner">
|
||||||
<reply-event v-if="replyTo" :event="replyTo" @click.native="resetReplyTo()"/>
|
<reply-event v-if="replyTo" :event="replyTo" @click.native="resetReplyTo()"/>
|
||||||
<div v-if="attachment" class="attachment">
|
<div v-if="attachment" class="attachment">
|
||||||
<event-content :content="attachment" class="attachmentContent" :compact="true"/>
|
<event-content :content="attachment" class="attachmentContent" :compact="true" :onUpdate="resizeMessageBanner()"/>
|
||||||
<icon
|
<icon
|
||||||
title="remove"
|
title="remove"
|
||||||
class="remove"
|
class="remove"
|
||||||
@ -13,6 +13,7 @@
|
|||||||
<textarea
|
<textarea
|
||||||
@keyup.enter.exact="onSubmit(event)"
|
@keyup.enter.exact="onSubmit(event)"
|
||||||
@input="resizeMessageBanner(); sendTyping(2000);"
|
@input="resizeMessageBanner(); sendTyping(2000);"
|
||||||
|
@paste="onPaste"
|
||||||
v-model="event.content.body"
|
v-model="event.content.body"
|
||||||
ref="newMessageInput" class="newMessageInput"
|
ref="newMessageInput" class="newMessageInput"
|
||||||
rows="1" placeholder="type a message ..."
|
rows="1" placeholder="type a message ..."
|
||||||
@ -55,6 +56,7 @@ import {VEmojiPicker} from 'v-emoji-picker';
|
|||||||
import EventContent from '@/components/eventContent';
|
import EventContent from '@/components/eventContent';
|
||||||
import SoundRecorder from '@/components/soundRecorder';
|
import SoundRecorder from '@/components/soundRecorder';
|
||||||
import FileUpload from '@/components/fileUpload';
|
import FileUpload from '@/components/fileUpload';
|
||||||
|
import {readFileBlob} from '@/lib/readFileBlob';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'newMessage',
|
name: 'newMessage',
|
||||||
@ -157,6 +159,12 @@ export default {
|
|||||||
'video': 'm.video'
|
'video': 'm.video'
|
||||||
}[fileType.split('/', 1)[0]] || 'm.file';
|
}[fileType.split('/', 1)[0]] || 'm.file';
|
||||||
},
|
},
|
||||||
|
onPaste(event){
|
||||||
|
let item = (event.clipboardData || event.originalEvent.clipboardData).items[0];
|
||||||
|
if (item.kind !== 'file') return false;
|
||||||
|
let file = item.getAsFile();
|
||||||
|
return readFileBlob(file).then(blob => this.setAttachment({blob, file}));
|
||||||
|
},
|
||||||
parseMessage,
|
parseMessage,
|
||||||
calcUserName
|
calcUserName
|
||||||
},
|
},
|
||||||
|
8
src/lib/readFileBlob.js
Normal file
8
src/lib/readFileBlob.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
export function readFileBlob(file){
|
||||||
|
return new Promise(resolve => {
|
||||||
|
let reader = new FileReader();
|
||||||
|
reader.onerror = console.error;
|
||||||
|
reader.onload = async event => resolve(await (await fetch(event.target.result)).blob());
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user