Fixes chatting functions for new approach (contenteditable div)

This commit is contained in:
montelale 2020-12-22 21:23:10 +01:00
parent 5467087600
commit c14c121ba5

View file

@ -19,12 +19,12 @@ class PeersUI {
Events.on('peer-joined', e => this._onPeerJoined(e.detail)); Events.on('peer-joined', e => this._onPeerJoined(e.detail));
Events.on('peer-left', e => this._onPeerLeft(e.detail)); Events.on('peer-left', e => this._onPeerLeft(e.detail));
Events.on('peers', e => this._onPeers(e.detail)); Events.on('peers', e => this._onPeers(e.detail));
Events.on('file-progress', e => this._onFileProgress(e.detail)); Events.on('file-progress', e => this._onFileProgress(e.detail));
Events.on('paste', e => this._onPaste(e)); Events.on('paste', e => this._onPaste(e));
} }
_onPeerJoined(peer) { _onPeerJoined(peer) {
if ($(peer.id)) return; // peer already exists if ($(peer.id)) return; // peer already exists
const peerUI = new PeerUI(peer); const peerUI = new PeerUI(peer);
$$('x-peers').appendChild(peerUI.$el); $$('x-peers').appendChild(peerUI.$el);
} }
@ -49,9 +49,9 @@ class PeersUI {
_clearPeers() { _clearPeers() {
const $peers = $$('x-peers').innerHTML = ''; const $peers = $$('x-peers').innerHTML = '';
} }
_onPaste(e) { _onPaste(e) {
const files = e.clipboardData.files || e.clipboardData.items const files = e.clipboardData.files || e.clipboardData.items
.filter(i => i.type.indexOf('image') > -1) .filter(i => i.type.indexOf('image') > -1)
.map(i => i.getAsFile()); .map(i => i.getAsFile());
@ -72,7 +72,7 @@ class PeersUI {
class PeerUI { class PeerUI {
html() { html() {
return ` return `
<label class="column center" title="Click to send files or right click to send a text"> <label class="column center" title="Click to send files or right click to send a text">
<input type="file" multiple> <input type="file" multiple>
<x-icon shadow="1"> <x-icon shadow="1">
@ -315,12 +315,19 @@ class SendTextDialog extends Dialog {
this._recipient = recipient; this._recipient = recipient;
this._handleShareTargetText(); this._handleShareTargetText();
this.show(); this.show();
this.$text.setSelectionRange(0, this.$text.value.length)
const range = document.createRange();
const sel = window.getSelection();
range.selectNodeContents(this.$text);
sel.removeAllRanges();
sel.addRange(range);
} }
_handleShareTargetText() { _handleShareTargetText() {
if (!window.shareTargetText) return; if (!window.shareTargetText) return;
this.$text.value = window.shareTargetText; this.$text.textContent = window.shareTargetText;
window.shareTargetText = ''; window.shareTargetText = '';
} }
@ -328,7 +335,7 @@ class SendTextDialog extends Dialog {
e.preventDefault(); e.preventDefault();
Events.fire('send-text', { Events.fire('send-text', {
to: this._recipient, to: this._recipient,
text: this.$text.value text: this.$text.textContent
}); });
} }
} }
@ -492,7 +499,7 @@ class WebShareTargetUI {
let shareTargetText = title ? title : ''; let shareTargetText = title ? title : '';
shareTargetText += text ? shareTargetText ? ' ' + text : text : ''; shareTargetText += text ? shareTargetText ? ' ' + text : text : '';
if(url) shareTargetText = url; // We share only the Link - no text. Because link-only text becomes clickable. if(url) shareTargetText = url; // We share only the Link - no text. Because link-only text becomes clickable.
if (!shareTargetText) return; if (!shareTargetText) return;
@ -610,12 +617,12 @@ Events.on('load', () => {
}); });
Notifications.PERMISSION_ERROR = ` Notifications.PERMISSION_ERROR = `
Notifications permission has been blocked Notifications permission has been blocked
as the user has dismissed the permission prompt several times. as the user has dismissed the permission prompt several times.
This can be reset in Page Info This can be reset in Page Info
which can be accessed by clicking the lock icon next to the URL.`; which can be accessed by clicking the lock icon next to the URL.`;
document.body.onclick = e => { // safari hack to fix audio document.body.onclick = e => { // safari hack to fix audio
document.body.onclick = null; document.body.onclick = null;
if (!(/.*Version.*Safari.*/.test(navigator.userAgent))) return; if (!(/.*Version.*Safari.*/.test(navigator.userAgent))) return;
blop.play(); blop.play();