From 9fec8908c1f7380922c8cdb42d0516ecd522f274 Mon Sep 17 00:00:00 2001
From: Justin Ferrari <‘justinwesleyferrari@gmail.com’>
Date: Mon, 9 Jan 2023 19:37:52 -0500
Subject: [PATCH] Chat User Info Completed
---
.../plugins/core/components/ChatRightPanel.js | 116 +++---------------
.../core/components/ChatScroller-css.js | 7 ++
.../plugins/core/components/ChatScroller.js | 80 ++++++++++--
.../core/components/ChatSideNavHeads.js | 15 +--
.../plugins/core/components/UserInfo.js | 0
5 files changed, 94 insertions(+), 124 deletions(-)
delete mode 100644 qortal-ui-plugins/plugins/core/components/UserInfo.js
diff --git a/qortal-ui-plugins/plugins/core/components/ChatRightPanel.js b/qortal-ui-plugins/plugins/core/components/ChatRightPanel.js
index ec38a6fd..fa1734c0 100644
--- a/qortal-ui-plugins/plugins/core/components/ChatRightPanel.js
+++ b/qortal-ui-plugins/plugins/core/components/ChatRightPanel.js
@@ -12,15 +12,14 @@ import "@material/mwc-icon";
import '@vaadin/button';
import "./WrapperModal";
import "./TipUser"
+import "./UserInfo/UserInfo";
class ChatRightPanel extends LitElement {
static get properties() {
return {
- isLoading: { type: Boolean },
openUserInfo: { type: Boolean },
leaveGroupObj: { type: Object },
error: { type: Boolean },
- message: { type: String },
chatHeads: { type: Array },
groupAdmin: { attribute: false },
groupMembers: { attribute: false },
@@ -41,12 +40,10 @@ class ChatRightPanel extends LitElement {
constructor() {
super()
- this.isLoading = false
this.openUserInfo = false
this.leaveGroupObj = {}
this.leaveFee = 0.001
this.error = false
- this.message = ""
this.chatHeads = []
this.groupAdmin = []
this.groupMembers = []
@@ -61,6 +58,7 @@ class ChatRightPanel extends LitElement {
this.errorMessage = ""
this.successMessage = ""
this.setOpenTipUser = this.setOpenTipUser.bind(this);
+ this.setOpenUserInfo = this.setOpenUserInfo.bind(this);
}
static get styles() {
@@ -190,46 +188,6 @@ class ChatRightPanel extends LitElement {
font-size: 14px;
color: var(--chat-bubble-msg-color);
}
-
- .user-info-header {
- font-family: Montserrat, sans-serif;
- text-align: center;
- font-size: 25px;
- color: var(--chat-bubble-msg-color);
- margin-bottom: 10px;
- padding: 10px 0;
- user-select: none;
- }
-
- .send-message-button {
- font-family: Roboto, sans-serif;
- letter-spacing: 0.3px;
- font-weight: 300;
- padding: 8px 5px;
- border-radius: 3px;
- text-align: center;
- color: var(--mdc-theme-primary);
- transition: all 0.3s ease-in-out;
- }
-
- .send-message-button:hover {
- cursor: pointer;
- background-color: #03a8f485;
- }
-
- .close-icon {
- position: absolute;
- top: 3px;
- right: 5px;
- color: #676b71;
- width: 14px;
- transition: all 0.1s ease-in-out;
- }
-
- .close-icon:hover {
- cursor: pointer;
- color: #494c50;
- }
`
}
@@ -279,6 +237,10 @@ class ChatRightPanel extends LitElement {
this.openTipUser = props
}
+ setOpenUserInfo(props) {
+ this.openUserInfo = props
+ }
+
render() {
const owner = this.groupAdmin.filter((admin)=> admin.address === this.leaveGroupObj.owner)
return html`
@@ -291,7 +253,7 @@ class ChatRightPanel extends LitElement {
${this.leaveGroupObj && this.leaveGroupObj.description}
-
+
@@ -337,9 +299,8 @@ class ChatRightPanel extends LitElement {
- {
- if (this.isLoading) return
this.openUserInfo = false;
this.userName = "";
this.shadowRoot.querySelector("tip-user").shadowRoot.getElementById('amountInput').value = "";
@@ -347,59 +308,14 @@ class ChatRightPanel extends LitElement {
style=${
this.openUserInfo ? "display: block" : "display: none"
}>
-
-
{
- this.openUserInfo = false
- }}
- ?disabled="${this.isLoading}">
-
-
-
{
- this.setOpenPrivateMessage({
- name: this.userName,
- open: true
- })
- this.openUserInfo = false
- }
- }">
- ${translate("chatpage.cchange58")}
-
-
{
- this.openTipUser = true
- this.openUserInfo = false
- this.chatEditor.disable();
- }}>
- ${translate("chatpage.cchange59")}
-
-
-
-
- ${translate("grouppage.gchange36")}
-
-
-
-
- ${this.message}
-
-
-
+ this.setOpenUserInfo(val)}
+ .setOpenTipUser=${(val) => this.setOpenTipUser(val)}
+ .setOpenPrivateMessage=${(val) => this.setOpenPrivateMessage(val)}
+ .chatEditor=${this.chatEditor}
+ .userName=${this.userName}
+ .selectedHead=${this.selectedHead}
+ >
{
diff --git a/qortal-ui-plugins/plugins/core/components/ChatScroller-css.js b/qortal-ui-plugins/plugins/core/components/ChatScroller-css.js
index 1d054bab..64b49b45 100644
--- a/qortal-ui-plugins/plugins/core/components/ChatScroller-css.js
+++ b/qortal-ui-plugins/plugins/core/components/ChatScroller-css.js
@@ -63,12 +63,19 @@ export const chatStyles = css`
margin-bottom: 5px;
}
+ .forwarded-text {
+ user-select: none;
+ color: #03a9f4;
+ margin-bottom: 5px;
+ }
+
.message-data-forward {
user-select: none;
color: var(--mainmenutext);
margin-bottom: 5px;
font-size: 12px;
}
+
.message-data-my-name {
color: #cf21e8;
text-shadow: 0 0 3px #cf21e8;
diff --git a/qortal-ui-plugins/plugins/core/components/ChatScroller.js b/qortal-ui-plugins/plugins/core/components/ChatScroller.js
index 5c0a7954..38903750 100644
--- a/qortal-ui-plugins/plugins/core/components/ChatScroller.js
+++ b/qortal-ui-plugins/plugins/core/components/ChatScroller.js
@@ -5,18 +5,19 @@ import { translate, get } from 'lit-translate';
import {unsafeHTML} from 'lit/directives/unsafe-html.js';
import { chatStyles } from './ChatScroller-css.js'
import { Epml } from "../../../epml";
+import { EmojiPicker } from 'emoji-picker-js';
+import { cropAddress } from "../../utils/cropAddress";
import './LevelFounder.js';
import './NameMenu.js';
import './ChatModals.js';
import './WrapperModal';
import './TipUser'
+import "./UserInfo/UserInfo";
import '@vaadin/icons';
import '@vaadin/icon';
import '@material/mwc-button';
import '@material/mwc-dialog';
import '@material/mwc-icon';
-import { EmojiPicker } from 'emoji-picker-js';
-import { cropAddress } from "../../utils/cropAddress";
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent })
let toggledMessage = {}
@@ -42,7 +43,9 @@ class ChatScroller extends LitElement {
setForwardProperties: { attribute: false },
setOpenPrivateMessage: { attribute: false },
openTipUser: { type: Boolean },
- userName: { type: String }
+ openUserInfo: { type: Boolean },
+ userName: { type: String },
+ selectedHead: { type: Object }
}
}
@@ -54,14 +57,17 @@ class ChatScroller extends LitElement {
this._upObserverhandler = this._upObserverhandler.bind(this)
this._downObserverHandler = this._downObserverHandler.bind(this)
this.setOpenTipUser = this.setOpenTipUser.bind(this)
+ this.setOpenUserInfo = this.setOpenUserInfo.bind(this)
this.setUserName = this.setUserName.bind(this)
this.myAddress = window.parent.reduxStore.getState().app.selectedAddress.address
this.hideMessages = JSON.parse(localStorage.getItem("MessageBlockedAddresses") || "[]")
this.openTipUser = false;
+ this.openUserInfo = false;
this.userName = "";
}
render() {
+ console.log(9, "chat scroller here");
let formattedMessages = this.messages.reduce((messageArray, message, index) => {
const lastGroupedMessage = messageArray[messageArray.length - 1];
let timestamp;
@@ -126,6 +132,7 @@ class ChatScroller extends LitElement {
.setForwardProperties=${this.setForwardProperties}
.setOpenPrivateMessage=${(val) => this.setOpenPrivateMessage(val)}
.setOpenTipUser=${(val) => this.setOpenTipUser(val)}
+ .setOpenUserInfo=${(val) => this.setOpenUserInfo(val)}
.setUserName=${(val) => this.setUserName(val)}>
`
)
@@ -146,6 +153,25 @@ class ChatScroller extends LitElement {
.setOpenTipUser=${(val) => this.setOpenTipUser(val)}>
+ {
+ this.openUserInfo = false;
+ this.chatEditor.enable();
+ this.userName = "";
+ this.selectedHead = {};
+ }}
+ style=${
+ this.openUserInfo ? "display: block" : "display: none"
+ }>
+ this.setOpenUserInfo(val)}
+ .setOpenTipUser=${(val) => this.setOpenTipUser(val)}
+ .setOpenPrivateMessage=${(val) => this.setOpenPrivateMessage(val)}
+ .chatEditor=${this.chatEditor}
+ .userName=${this.userName}
+ .selectedHead=${this.selectedHead}
+ >
+
`
}
@@ -159,6 +185,9 @@ class ChatScroller extends LitElement {
if(changedProperties.has('openTipUser')){
return true
}
+ if(changedProperties.has('openUserInfo')){
+ return true
+ }
// Only update element if prop1 changed.
return changedProperties.has('messages');
}
@@ -179,8 +208,18 @@ class ChatScroller extends LitElement {
this.chatEditor.disable();
}
+ setOpenUserInfo(props) {
+ this.openUserInfo = props;
+ this.chatEditor.disable();
+ }
+
setUserName(props) {
- this.userName = props;
+ this.userName = props.senderName ? props.senderName : props.sender;
+ this.selectedHead = {
+ ...this.selectedHead,
+ address: props.sender,
+ name: props.senderName,
+ };
}
async firstUpdated() {
@@ -280,6 +319,7 @@ class MessageTemplate extends LitElement {
viewImage: { type: Boolean },
setOpenPrivateMessage : { attribute: false },
setOpenTipUser: { attribute: false },
+ setOpenUserInfo: { attribute: false },
setUserName: { attribute: false }
}
}
@@ -450,7 +490,13 @@ class MessageTemplate extends LitElement {
(this.isSingleMessageInGroup === true && this.isLastMessageInGroup === true))
? (
html`
-
+
{
+ if (this.myAddress === this.messageObj.sender) return;
+ this.setOpenUserInfo(true);
+ this.setUserName(this.messageObj);
+ }} class="message-data-avatar">
${avatarImg}
`
@@ -477,7 +523,14 @@ class MessageTemplate extends LitElement {
${this.isFirstMessage ?
html`
-
+ {
+ if (this.myAddress === this.messageObj.sender) return;
+ this.setOpenUserInfo(true);
+ this.setUserName(this.messageObj);
+ }}
+ class="message-data-name">
${nameMenu}
`
@@ -485,7 +538,7 @@ class MessageTemplate extends LitElement {
}
${isForwarded ?
html`
-
+
${forwarded}
`
@@ -499,8 +552,15 @@ class MessageTemplate extends LitElement {
${repliedToData && html`
-
- ${repliedToData.senderName ?? cropAddress(repliedToData.sender)}
+
{
+ if (this.myAddress === repliedToData.sender) return;
+ this.setOpenUserInfo(true);
+ this.setUserName(repliedToData)
+ }}
+ class="original-message-sender">
+ ${repliedToData.senderName ?? cropAddress(repliedToData.sender)}
${repliedToData.decodedMessage.messageText}
@@ -837,7 +897,7 @@ class ChatMenu extends LitElement {
data-text="${translate("blockpage.bcchange18")}"
@click=${() => {
this.setOpenTipUser(true);
- this.setUserName(this.originalMessage.sender);
+ this.setUserName(this.originalMessage);
}}>
diff --git a/qortal-ui-plugins/plugins/core/components/ChatSideNavHeads.js b/qortal-ui-plugins/plugins/core/components/ChatSideNavHeads.js
index 220aeb79..b0798399 100644
--- a/qortal-ui-plugins/plugins/core/components/ChatSideNavHeads.js
+++ b/qortal-ui-plugins/plugins/core/components/ChatSideNavHeads.js
@@ -93,7 +93,6 @@ class ChatSideNavHeads extends LitElement {
}
imageHTMLRes.onload = () => {
this.isImageLoaded = true;
- this.requestUpdate();
}
imageHTMLRes.onerror = () => {
if (this.imageFetches < 4) {
@@ -105,14 +104,10 @@ class ChatSideNavHeads extends LitElement {
this.isImageLoaded = false
}
};
- console.log(imageHTMLRes, "here8")
return imageHTMLRes;
}
render() {
- console.log(9, 'chat side nav head');
- console.log(this.isImageLoaded, 'Is image loaded');
- console.log(this.chatInfo, 'Chat Info Here');
let avatarImg = ""
if (this.chatInfo.name) {
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node];
@@ -181,15 +176,7 @@ class ChatSideNavHeads extends LitElement {
this.config = JSON.parse(c)
})
})
- parentEpml.imReady()
-
-
- }
-
- updated(changedProperties) {
- if (changedProperties && changedProperties.has("avatarImg")) {
- console.log(this.avatarImg, "avatarImg");
- }
+ parentEpml.imReady();
}
shouldUpdate(changedProperties) {
diff --git a/qortal-ui-plugins/plugins/core/components/UserInfo.js b/qortal-ui-plugins/plugins/core/components/UserInfo.js
deleted file mode 100644
index e69de29b..00000000