|
|
@ -16,7 +16,6 @@ import '@material/mwc-icon'; |
|
|
|
import { EmojiPicker } from 'emoji-picker-js'; |
|
|
|
import { EmojiPicker } from 'emoji-picker-js'; |
|
|
|
import { cropAddress } from "../../utils/cropAddress"; |
|
|
|
import { cropAddress } from "../../utils/cropAddress"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent }) |
|
|
|
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent }) |
|
|
|
class ChatScroller extends LitElement { |
|
|
|
class ChatScroller extends LitElement { |
|
|
|
static get properties() { |
|
|
|
static get properties() { |
|
|
@ -25,7 +24,6 @@ class ChatScroller extends LitElement { |
|
|
|
getOldMessage: { attribute: false }, |
|
|
|
getOldMessage: { attribute: false }, |
|
|
|
emojiPicker: { attribute: false }, |
|
|
|
emojiPicker: { attribute: false }, |
|
|
|
escapeHTML: { attribute: false }, |
|
|
|
escapeHTML: { attribute: false }, |
|
|
|
initialMessages: { type: Array }, // First set of messages to load.. 15 messages max ( props )
|
|
|
|
|
|
|
|
messages: { type: Array }, |
|
|
|
messages: { type: Array }, |
|
|
|
hideMessages: { type: Array }, |
|
|
|
hideMessages: { type: Array }, |
|
|
|
setRepliedToMessageObj: { type: Function }, |
|
|
|
setRepliedToMessageObj: { type: Function }, |
|
|
@ -51,26 +49,26 @@ class ChatScroller extends LitElement { |
|
|
|
console.log({messages: this.messages}) |
|
|
|
console.log({messages: this.messages}) |
|
|
|
|
|
|
|
|
|
|
|
let formattedMessages = this.messages.reduce((messageArray, message) => { |
|
|
|
let formattedMessages = this.messages.reduce((messageArray, message) => { |
|
|
|
const lastGroupedMessage = messageArray[messageArray.length - 1] |
|
|
|
const lastGroupedMessage = messageArray[messageArray.length - 1]; |
|
|
|
let timestamp |
|
|
|
let timestamp; |
|
|
|
let sender |
|
|
|
let sender; |
|
|
|
let repliedToData |
|
|
|
let repliedToData; |
|
|
|
if (lastGroupedMessage) { |
|
|
|
if (lastGroupedMessage) { |
|
|
|
timestamp = lastGroupedMessage.timestamp |
|
|
|
timestamp = lastGroupedMessage.timestamp; |
|
|
|
sender = lastGroupedMessage.sender |
|
|
|
sender = lastGroupedMessage.sender; |
|
|
|
repliedToData = lastGroupedMessage.repliedToData |
|
|
|
repliedToData = lastGroupedMessage.repliedToData; |
|
|
|
} |
|
|
|
} |
|
|
|
const isSameGroup = Math.abs(timestamp - message.timestamp) < 600000 && sender === message.sender && !repliedToData |
|
|
|
const isSameGroup = Math.abs(timestamp - message.timestamp) < 600000 && sender === message.sender && !repliedToData; |
|
|
|
|
|
|
|
|
|
|
|
if (isSameGroup) { |
|
|
|
if (isSameGroup) { |
|
|
|
messageArray[messageArray.length - 1].messages = [...(messageArray[messageArray.length - 1]?.messages || []), message] |
|
|
|
messageArray[messageArray.length - 1].messages = [...(messageArray[messageArray.length - 1]?.messages || []), message]; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
messageArray.push({ |
|
|
|
messageArray.push({ |
|
|
|
messages: [message], |
|
|
|
messages: [message], |
|
|
|
...message |
|
|
|
...message |
|
|
|
}) |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
return messageArray |
|
|
|
return messageArray; |
|
|
|
}, []) |
|
|
|
}, []) |
|
|
|
|
|
|
|
|
|
|
|
return html` |
|
|
|
return html` |
|
|
@ -248,8 +246,7 @@ class MessageTemplate extends LitElement { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
render() { |
|
|
|
render() { |
|
|
|
const parsedMessageObj = JSON.parse(this.messageObj.decodedMessage); |
|
|
|
console.log(this.messageObj); |
|
|
|
console.log({isFirstMessage: this.isFirstMessage, isSingleMessageInGroup: this.isSingleMessageInGroup, isLastMessageInGroup: this.isLastMessageInGroup, messageText: parsedMessageObj.messageText}) |
|
|
|
|
|
|
|
const hidemsg = this.hideMessages; |
|
|
|
const hidemsg = this.hideMessages; |
|
|
|
let message = ""; |
|
|
|
let message = ""; |
|
|
|
let reactions = []; |
|
|
|
let reactions = []; |
|
|
@ -348,14 +345,6 @@ class MessageTemplate extends LitElement { |
|
|
|
'padding-bottom: 0;'
|
|
|
|
'padding-bottom: 0;'
|
|
|
|
: null}
|
|
|
|
: null}
|
|
|
|
${this.isFirstMessage && 'margin-top: 20px;'}"> |
|
|
|
${this.isFirstMessage && 'margin-top: 20px;'}"> |
|
|
|
${this.isFirstMessage ? ( |
|
|
|
|
|
|
|
html` |
|
|
|
|
|
|
|
<div class="message-data ${this.messageObj.sender === this.myAddress ? "" : ""}"> |
|
|
|
|
|
|
|
<span class="message-data-level">${levelFounder}</span> |
|
|
|
|
|
|
|
<span class="message-data-time"><message-time timestamp=${this.messageObj.timestamp}></message-time></span> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
` |
|
|
|
|
|
|
|
) : null} |
|
|
|
|
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<div
|
|
|
|
<div
|
|
|
|
class="message-container"
|
|
|
|
class="message-container"
|
|
|
@ -385,10 +374,11 @@ class MessageTemplate extends LitElement { |
|
|
|
? 'border-radius: 27px 25px 25px 12px;' |
|
|
|
? 'border-radius: 27px 25px 25px 12px;' |
|
|
|
: (this.isFirstMessage === false && this.isSingleMessageInGroup === true && this.isLastMessageInGroup === true) ?
|
|
|
|
: (this.isFirstMessage === false && this.isSingleMessageInGroup === true && this.isLastMessageInGroup === true) ?
|
|
|
|
'border-radius: 10px 25px 25px 0;'
|
|
|
|
'border-radius: 10px 25px 25px 0;'
|
|
|
|
: this.isFirstMessage === true
|
|
|
|
: (this.isFirstMessage === true && this.isSingleMessageInGroup === false && this.isLastMessageInGroup === true)
|
|
|
|
? 'border-radius: 25px 25px 25px 0px;' |
|
|
|
? 'border-radius: 25px 25px 25px 0px;' |
|
|
|
: null |
|
|
|
: null |
|
|
|
}"> |
|
|
|
}"> |
|
|
|
|
|
|
|
<div class="message-user-info"> |
|
|
|
${this.isFirstMessage ?
|
|
|
|
${this.isFirstMessage ?
|
|
|
|
html` |
|
|
|
html` |
|
|
|
<span class="message-data-name"> |
|
|
|
<span class="message-data-name"> |
|
|
@ -397,6 +387,12 @@ class MessageTemplate extends LitElement { |
|
|
|
` |
|
|
|
` |
|
|
|
: null |
|
|
|
: null |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
${this.isFirstMessage ? ( |
|
|
|
|
|
|
|
html` |
|
|
|
|
|
|
|
<span class="message-data-level">${levelFounder}</span> |
|
|
|
|
|
|
|
` |
|
|
|
|
|
|
|
) : null} |
|
|
|
|
|
|
|
</div> |
|
|
|
${repliedToData && html` |
|
|
|
${repliedToData && html` |
|
|
|
<div class="original-message"> |
|
|
|
<div class="original-message"> |
|
|
|
<p class="original-message-sender"> |
|
|
|
<p class="original-message-sender"> |
|
|
@ -421,12 +417,23 @@ class MessageTemplate extends LitElement { |
|
|
|
` : html``}
|
|
|
|
` : html``}
|
|
|
|
<div id="messageContent" class="message"> |
|
|
|
<div id="messageContent" class="message"> |
|
|
|
${unsafeHTML(this.emojiPicker.parse(replacedMessage))} |
|
|
|
${unsafeHTML(this.emojiPicker.parse(replacedMessage))} |
|
|
|
|
|
|
|
<div class="${((this.isFirstMessage === false &&
|
|
|
|
|
|
|
|
this.isSingleMessageInGroup === true &&
|
|
|
|
|
|
|
|
this.isLastMessageInGroup === true) ||
|
|
|
|
|
|
|
|
(this.isFirstMessage === true &&
|
|
|
|
|
|
|
|
this.isSingleMessageInGroup === false && |
|
|
|
|
|
|
|
this.isLastMessageInGroup === true))
|
|
|
|
|
|
|
|
? 'message-data-time' |
|
|
|
|
|
|
|
: 'message-data-time-hidden' |
|
|
|
|
|
|
|
}"> |
|
|
|
|
|
|
|
<message-time timestamp=${this.messageObj.timestamp}></message-time> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<chat-menu
|
|
|
|
<chat-menu
|
|
|
|
tabindex="0" |
|
|
|
tabindex="0" |
|
|
|
class="chat-hover" |
|
|
|
class="chat-hover" |
|
|
|
style="${this.showBlockAddressIcon ? 'display: block;' : null} ${this.isFirstMessage && 'top: -50px'}" |
|
|
|
style="${this.showBlockAddressIcon && 'display: block;'}" |
|
|
|
toblockaddress="${this.messageObj.sender}"
|
|
|
|
toblockaddress="${this.messageObj.sender}"
|
|
|
|
.showPrivateMessageModal=${() => this.showPrivateMessageModal()} |
|
|
|
.showPrivateMessageModal=${() => this.showPrivateMessageModal()} |
|
|
|
.showBlockUserModal=${() => this.showBlockUserModal()} |
|
|
|
.showBlockUserModal=${() => this.showBlockUserModal()} |
|
|
@ -538,8 +545,6 @@ class ChatMenu extends LitElement { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
firstUpdated () { |
|
|
|
firstUpdated () { |
|
|
|
this.emojiPicker = new EmojiPicker({ |
|
|
|
this.emojiPicker = new EmojiPicker({ |
|
|
|
style: "twemoji", |
|
|
|
style: "twemoji", |
|
|
@ -559,13 +564,9 @@ class ChatMenu extends LitElement { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
render() { |
|
|
|
render() { |
|
|
|
return html`
|
|
|
|
return html`
|
|
|
|
<div class="container"> |
|
|
|
<div class="container"> |
|
|
|