From 8be65cff5c848176a276fba80df4c5d49af4e2cb Mon Sep 17 00:00:00 2001 From: Justin Ferrari <‘justinwesleyferrari@gmail.com’> Date: Thu, 22 Dec 2022 21:38:31 -0500 Subject: [PATCH] Added forward message user lookup --- qortal-ui-core/font/KoHo.ttf | Bin 0 -> 87312 bytes qortal-ui-core/font/Livvic.ttf | Bin 0 -> 103884 bytes qortal-ui-core/font/material-icons.css | 14 + qortal-ui-core/language/us.json | 9 +- .../plugins/core/components/ChatPage.js | 1315 ++++++++++------- .../core/components/ChatSeachResults.js | 3 +- .../plugins/core/components/ChatSelect.js | 63 +- .../plugins/core/components/ChatTextEditor.js | 4 +- .../core/messaging/q-chat/q-chat.src.js | 32 +- 9 files changed, 885 insertions(+), 555 deletions(-) create mode 100644 qortal-ui-core/font/KoHo.ttf create mode 100644 qortal-ui-core/font/Livvic.ttf diff --git a/qortal-ui-core/font/KoHo.ttf b/qortal-ui-core/font/KoHo.ttf new file mode 100644 index 0000000000000000000000000000000000000000..72841e9d77085cbf03615672bfa6f9a375cef100 GIT binary patch literal 87312 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 h literal 0 HcmV?d00001 diff --git a/qortal-ui-core/font/Livvic.ttf b/qortal-ui-core/font/Livvic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f477b2852f82f1a1562a8f59173fef90131bb15a GIT binary patch literal 103884 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 literal 0 HcmV?d00001 diff --git a/qortal-ui-core/font/material-icons.css b/qortal-ui-core/font/material-icons.css index 45799abb..422f0fa1 100644 --- a/qortal-ui-core/font/material-icons.css +++ b/qortal-ui-core/font/material-icons.css @@ -18,6 +18,20 @@ url(Montserrat.ttf) format('truetype'); } +@font-face { + font-family: 'KoHo'; + src: local('KoHo'), + local('KoHo'), + url(KoHo.ttf) format('truetype'); +} + +@font-face { + font-family: 'Livvic'; + src: local('Livvic'), + local('Livvic'), + url(Livvic.ttf) format('truetype'); +} + .material-icons { font-family: 'Material Icons'; font-weight: normal; diff --git a/qortal-ui-core/language/us.json b/qortal-ui-core/language/us.json index 9f8241d3..265fd645 100644 --- a/qortal-ui-core/language/us.json +++ b/qortal-ui-core/language/us.json @@ -466,7 +466,7 @@ "cchange4": "New Message", "cchange5": "(Click to scroll down)", "cchange6": "Type the name or address of who you want to chat with to send a private message! You can validate the person's name by clicking on the book icon.", - "cchange7": "Name / Address", + "cchange7": "Username / Address", "cchange8": "Message...", "cchange9": "Send", "cchange10": "Blocked Users List", @@ -478,7 +478,7 @@ "cchange16": "Successfully unblocked this user.", "cchange17": "Error occurred when trying to unblock this user. Please try again!", "cchange18": "unblock", - "cchange19": "Invalid Name / Address, Check the name / address and retry...", + "cchange19": "Invalid Username / Address, Check the name / address and retry...", "cchange20": "Message Sent Successfully!", "cchange21": "Sending failed, Please retry...", "cchange22": "Loading Messages...", @@ -495,7 +495,8 @@ "cchange34": "This chat message is using an older message version and cannot use this feature.", "cchange35": "Error when trying to fetch the user's name. Please try again!", "cchange36": "Search Results", - "cchange37": "No Results Found" + "cchange37": "No Results Found", + "cchange38": "User Verified" }, "welcomepage": { "wcchange1": "Welcome to Q-Chat", @@ -524,7 +525,7 @@ "bcchange13": "Reaction", "bcchange14": "Forward", "bcchange15": "Message Forwarded", - "bcchange16": "Choose recipient", + "bcchange16": "Choose Recipient or Search for One Below", "bcchange17": "FORWARDED" }, "grouppage": { diff --git a/qortal-ui-plugins/plugins/core/components/ChatPage.js b/qortal-ui-plugins/plugins/core/components/ChatPage.js index 8cdf5510..9e33352c 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatPage.js +++ b/qortal-ui-plugins/plugins/core/components/ChatPage.js @@ -14,19 +14,19 @@ import './ChatScroller.js'; import './LevelFounder.js'; import './NameMenu.js'; import './TimeAgo.js'; -import './ChatTextEditor'; -import './WrapperModal'; +import './ChatTextEditor.js'; +import './WrapperModal.js'; import './ChatSelect.js' +import './ChatSeachResults.js'; import '@polymer/paper-spinner/paper-spinner-lite.js'; import '@material/mwc-button'; import '@material/mwc-dialog'; import '@material/mwc-icon'; import { replaceMessagesEdited } from '../../utils/replace-messages-edited.js'; import { publishData } from '../../utils/publish-image.js'; +import { EmojiPicker } from 'emoji-picker-js'; import WebWorker from 'web-worker:./computePowWorker.js'; import WebWorkerImage from 'web-worker:./computePowWorkerImage.js'; -import { EmojiPicker } from 'emoji-picker-js'; - // const messagesCache = localForage.createInstance({ // name: "messages-cache", @@ -67,466 +67,583 @@ class ChatPage extends LitElement { chatEditorNewChat: { type: Object }, userLanguage: { type: String }, lastMessageRefVisible: { type: Boolean }, - isLoadingOldMessages: {type: Boolean}, + isLoadingOldMessages: { type: Boolean }, isEditMessageOpen: { type: Boolean }, - webSocket: {attribute: false}, - chatHeads: {type: Array}, - forwardActiveChatHeadUrl: {type: String}, - openForwardOpen: {type: Boolean} + webSocket: { attribute: false }, + chatHeads: { type: Array }, + forwardActiveChatHeadUrl: { type: Object }, + openForwardOpen: {type: Boolean }, + userFound: { type: Array }, + userFoundModalOpen: { type: Boolean }, } } static get styles() { - return css` - html { - scroll-behavior: smooth; - } - - .chat-head-container { - display: flex; - justify-content: flex-start; - flex-direction: column; - height: 50vh; - overflow-y: auto; - width: 100%; - } - - .chat-container { - display: grid; - grid-template-rows: minmax(6%, 92vh) minmax(40px, auto); - max-height: 100%; - } - - .chat-text-area { - display: flex; - position: relative; - justify-content: center; - min-height: 60px; - max-height: 100%; - } - - .chat-text-area .typing-area { - display: flex; - flex-direction: column; - width: 98%; - box-sizing: border-box; - margin-bottom: 8px; - border: 1px solid var(--chat-bubble-bg); - border-radius: 10px; - background: var(--chat-bubble-bg); - } - - .chat-text-area .typing-area textarea { - display: none; - } - - .chat-text-area .typing-area .chat-editor { - display: flex; - max-height: -webkit-fill-available; - width: 100%; - border-color: transparent; - margin: 0; - padding: 0; - border: none; - } - - .repliedTo-container { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - padding: 10px 10px 8px 10px; - } - - .repliedTo-subcontainer { - display: flex; - flex-direction: row; - align-items: center; - gap: 15px; - width: 100%; - } - - .repliedTo-message { - display: flex; - flex-direction: column; - gap: 5px; - width: 100%; - } - - .senderName { - margin: 0; - color: var(--mdc-theme-primary); - font-weight: bold; - user-select: none; - } - - .original-message { - color: var(--chat-bubble-msg-color); - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - margin: 0; - width: 800px; - } - - .reply-icon { - width: 20px; - color: var(--mdc-theme-primary); - } - - .close-icon { - color: #676b71; - width: 18px; - transition: all 0.1s ease-in-out; - } - - .close-icon:hover { - cursor: pointer; - color: #494c50; - } - - .chat-text-area .typing-area .chatbar { - position: relative; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - height: auto; - padding: 5px 5px 5px 7px; - overflow-y: hidden; - } - - .chatbar-container { - width: 100%; - display: flex; - height: auto; - overflow: hidden; - } - - .chat-text-area .typing-area .emoji-button { - width: 45px; - height: 40px; - padding-top: 4px; - border: none; - outline: none; - background: transparent; - cursor: pointer; - max-height: 40px; - color: var(--black); - } - - .emoji-button-caption { - width: 45px; - height: 40px; - padding-top: 4px; - border: none; - outline: none; - background: transparent; - cursor: pointer; - max-height: 40px; - color: var(--black); - } - - .caption-container { - width: 100%; - display: flex; - height: auto; - overflow: hidden; - justify-content: center; - background-color: var(--white); - padding: 5px; - border-radius: 1px; - } - - .chatbar-caption { - font-family: Roboto, sans-serif; - width: 70%; - margin-right: 10px; - outline: none; - align-items: center; - font-size: 18px; - resize: none; - border-top: 0; - border-right: 0; - border-left: 0; - border-bottom: 1px solid #cac8c8; - padding: 3px; - } - - .message-size-container { - display: flex; - justify-content: flex-end; - width: 100%; - } - - .message-size { - font-family: Roboto, sans-serif; - font-size: 12px; - color: black; - } - - .lds-grid { - width: 120px; - height: 120px; - position: absolute; - left: 50%; - top: 40%; - } - - .lds-grid div { - position: absolute; - width: 34px; - height: 34px; - border-radius: 50%; - background: #03a9f4; - animation: lds-grid 1.2s linear infinite; - } - - .lds-grid div:nth-child(1) { - top: 4px; - left: 4px; - animation-delay: 0s; - } - - .lds-grid div:nth-child(2) { - top: 4px; - left: 48px; - animation-delay: -0.4s; - } - - .lds-grid div:nth-child(3) { - top: 4px; - left: 90px; - animation-delay: -0.8s; - } - - .lds-grid div:nth-child(4) { - top: 50px; - left: 4px; - animation-delay: -0.4s; - } - - .lds-grid div:nth-child(5) { - top: 50px; - left: 48px; - animation-delay: -0.8s; - } - - .lds-grid div:nth-child(6) { - top: 50px; - left: 90px; - animation-delay: -1.2s; - } - - .lds-grid div:nth-child(7) { - top: 95px; - left: 4px; - animation-delay: -0.8s; - } - - .lds-grid div:nth-child(8) { - top: 95px; - left: 48px; - animation-delay: -1.2s; - } - - .lds-grid div:nth-child(9) { - top: 95px; - left: 90px; - animation-delay: -1.6s; - } - - @keyframes lds-grid { - 0%, 100% { - opacity: 1; - } - 50% { - opacity: 0.5; - } - } - - .float-left { - float: left; - } - - img { - border-radius: 25%; - } - - .dialogCustom { - position: fixed; - z-index: 10000; - display: flex; - justify-content: center; - flex-direction: column; - align-items: center; - top: 10px; - right: 20px; - user-select: none; - } - - .dialogCustom p { - color: var(--black) - } - - .dialogCustomInner { - min-width: 300px; - height: 40px; - background-color: var(--white); - box-shadow: rgb(119 119 119 / 32%) 0px 4px 12px; - padding: 10px; - border-radius: 4px; - } - - .dialogCustomInner ul { - padding-left: 0px - } - .dialogCustomInner li { - margin-bottom: 10px; - } - - .marginLoader { - margin-right: 8px; - } - - .smallLoading, - .smallLoading:after { - border-radius: 50%; - width: 2px; - height: 2px; - } - - .smallLoading { - border-width: 0.8em; - border-style: solid; - border-color: rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2) - rgba(3, 169, 244, 0.2) rgb(3, 169, 244); - font-size: 10px; - position: relative; - text-indent: -9999em; - transform: translateZ(0px); - animation: 1.1s linear 0s infinite normal none running loadingAnimation; - } - - @-webkit-keyframes loadingAnimation { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - - @keyframes loadingAnimation { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - - /* Add Image Modal Dialog Styling */ - - .dialog-container { - position: relative; - display: flex; - align-items: center; - flex-direction: column; - padding: 0 10px; - gap: 10px; - height: 100%; - } - - .dialog-container-title { - color: var(--black); - font-size: 18px; - } - - .dialog-container-loader { - position: relative; - display: flex; - align-items: center; - padding: 0 10px; - gap: 10px; - height: 100%; - } - - .dialog-image { - width: 100%; - max-height: 300px; - border-radius: 0; - object-fit: contain; - } - - .last-message-ref { - position: absolute; - font-size: 18px; - top: -40px; - right: 30px; - width: 50; - height: 50; - z-index: 5; - color: black; - background-color: white; - border-radius: 50%; - transition: all 0.1s ease-in-out; - } - - .last-message-ref:hover { - cursor: pointer; - transform: scale(1.1); - } - - .arrow-down-icon { - transform: scale(1.15); - } - - .modal-button-row { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - } - - .modal-button { - font-family: Roboto, sans-serif; - font-size: 16px; - color: var(--mdc-theme-primary); - background-color: transparent; - padding: 8px 10px; - border-radius: 5px; - border: none; - transition: all 0.3s ease-in-out; - } - - .modal-button-red { - font-family: Roboto, sans-serif; - font-size: 16px; - color: #F44336; - background-color: transparent; - padding: 8px 10px; - border-radius: 5px; - border: none; - transition: all 0.3s ease-in-out; - } - - .modal-button-red:hover { - cursor: pointer; - background-color: #f4433663; - } - - .modal-button:hover { - cursor: pointer; - background-color: #03a8f475; - } - ` + return css` + html { + scroll-behavior: smooth; } + .chat-head-container { + display: flex; + justify-content: flex-start; + flex-direction: column; + height: 50vh; + overflow-y: auto; + overflow-x: hidden; + width: 100%; + } + + .chat-container { + display: grid; + grid-template-rows: minmax(6%, 92vh) minmax(40px, auto); + max-height: 100%; + } + + .chat-text-area { + display: flex; + position: relative; + justify-content: center; + min-height: 60px; + max-height: 100%; + } + + .chat-text-area .typing-area { + display: flex; + flex-direction: column; + width: 98%; + box-sizing: border-box; + margin-bottom: 8px; + border: 1px solid var(--chat-bubble-bg); + border-radius: 10px; + background: var(--chat-bubble-bg); + } + + .chat-text-area .typing-area textarea { + display: none; + } + + .chat-text-area .typing-area .chat-editor { + display: flex; + max-height: -webkit-fill-available; + width: 100%; + border-color: transparent; + margin: 0; + padding: 0; + border: none; + } + + .repliedTo-container { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + padding: 10px 10px 8px 10px; + } + + .repliedTo-subcontainer { + display: flex; + flex-direction: row; + align-items: center; + gap: 15px; + width: 100%; + } + + .repliedTo-message { + display: flex; + flex-direction: column; + gap: 5px; + width: 100%; + } + + .senderName { + margin: 0; + color: var(--mdc-theme-primary); + font-weight: bold; + user-select: none; + } + + .original-message { + color: var(--chat-bubble-msg-color); + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + margin: 0; + width: 800px; + } + + .reply-icon { + width: 20px; + color: var(--mdc-theme-primary); + } + + .close-icon { + color: #676b71; + width: 18px; + transition: all 0.1s ease-in-out; + } + + .close-icon:hover { + cursor: pointer; + color: #494c50; + } + + .chat-text-area .typing-area .chatbar { + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: auto; + padding: 5px 5px 5px 7px; + overflow-y: hidden; + } + + .chatbar-container { + width: 100%; + display: flex; + height: auto; + overflow: hidden; + } + + .chat-text-area .typing-area .emoji-button { + width: 45px; + height: 40px; + padding-top: 4px; + border: none; + outline: none; + background: transparent; + cursor: pointer; + max-height: 40px; + color: var(--black); + } + + .emoji-button-caption { + width: 45px; + height: 40px; + padding-top: 4px; + border: none; + outline: none; + background: transparent; + cursor: pointer; + max-height: 40px; + color: var(--black); + } + + .caption-container { + width: 100%; + display: flex; + height: auto; + overflow: hidden; + justify-content: center; + background-color: var(--white); + padding: 5px; + border-radius: 1px; + } + + .chatbar-caption { + font-family: Roboto, sans-serif; + width: 70%; + margin-right: 10px; + outline: none; + align-items: center; + font-size: 18px; + resize: none; + border-top: 0; + border-right: 0; + border-left: 0; + border-bottom: 1px solid #cac8c8; + padding: 3px; + } + + .message-size-container { + display: flex; + justify-content: flex-end; + width: 100%; + } + + .message-size { + font-family: Roboto, sans-serif; + font-size: 12px; + color: black; + } + + .lds-grid { + width: 120px; + height: 120px; + position: absolute; + left: 50%; + top: 40%; + } + + .lds-grid div { + position: absolute; + width: 34px; + height: 34px; + border-radius: 50%; + background: #03a9f4; + animation: lds-grid 1.2s linear infinite; + } + + .lds-grid div:nth-child(1) { + top: 4px; + left: 4px; + animation-delay: 0s; + } + + .lds-grid div:nth-child(2) { + top: 4px; + left: 48px; + animation-delay: -0.4s; + } + + .lds-grid div:nth-child(3) { + top: 4px; + left: 90px; + animation-delay: -0.8s; + } + + .lds-grid div:nth-child(4) { + top: 50px; + left: 4px; + animation-delay: -0.4s; + } + + .lds-grid div:nth-child(5) { + top: 50px; + left: 48px; + animation-delay: -0.8s; + } + + .lds-grid div:nth-child(6) { + top: 50px; + left: 90px; + animation-delay: -1.2s; + } + + .lds-grid div:nth-child(7) { + top: 95px; + left: 4px; + animation-delay: -0.8s; + } + + .lds-grid div:nth-child(8) { + top: 95px; + left: 48px; + animation-delay: -1.2s; + } + + .lds-grid div:nth-child(9) { + top: 95px; + left: 90px; + animation-delay: -1.6s; + } + + @keyframes lds-grid { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: 0.5; + } +} + + .float-left { + float: left; + } + + img { + border-radius: 25%; + } + + .dialogCustom { + position: fixed; + z-index: 10000; + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + top: 10px; + right: 20px; + user-select: none; + } + + .dialogCustom p { + color: var(--black) + } + + .dialogCustomInner { + min-width: 300px; + height: 40px; + background-color: var(--white); + box-shadow: rgb(119 119 119 / 32%) 0px 4px 12px; + padding: 10px; + border-radius: 4px; + } + + .dialogCustomInner ul { + padding-left: 0px + } + + .dialogCustomInner li { + margin-bottom: 10px; + } + + .marginLoader { + margin-right: 8px; + } + + .smallLoading, + .smallLoading:after { + border-radius: 50%; + width: 2px; + height: 2px; + } + + .smallLoading { + border-width: 0.8em; + border-style: solid; + border-color: rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2) + rgba(3, 169, 244, 0.2) rgb(3, 169, 244); + font-size: 10px; + position: relative; + text-indent: -9999em; + transform: translateZ(0px); + animation: 1.1s linear 0s infinite normal none running loadingAnimation; + } + + @-webkit-keyframes loadingAnimation { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loadingAnimation { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + /* Add Image Modal Dialog Styling */ + + .dialog-container { + position: relative; + display: flex; + align-items: center; + flex-direction: column; + padding: 0 10px; + gap: 10px; + height: 100%; + } + + .dialog-container-title { + font-family: Montserrat; + color: var(--black); + font-size: 20px; + margin: 15px 0 0 0; + } + + .divider { + height: 1px; + background-color: var(--chat-bubble-msg-color); + user-select: none; + width: 70%; + margin-bottom: 20px; + } + + .dialog-container-loader { + position: relative; + display: flex; + align-items: center; + padding: 0 10px; + gap: 10px; + height: 100%; + } + + .dialog-image { + width: 100%; + max-height: 300px; + border-radius: 0; + object-fit: contain; + } + + .last-message-ref { + position: absolute; + font-size: 18px; + top: -40px; + right: 30px; + width: 50; + height: 50; + z-index: 5; + color: black; + background-color: white; + border-radius: 50%; + transition: all 0.1s ease-in-out; +} + + .last-message-ref:hover { + cursor: pointer; + transform: scale(1.1); + } + + .arrow-down-icon { + transform: scale(1.15); + } + + .modal-button-row { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + } + + .modal-button { + font-family: Roboto, sans-serif; + font-size: 16px; + color: var(--mdc-theme-primary); + background-color: transparent; + padding: 8px 10px; + border-radius: 5px; + border: none; + transition: all 0.3s ease-in-out; + } + + .modal-button-red { + font-family: Roboto, sans-serif; + font-size: 16px; + color: #F44336; + background-color: transparent; + padding: 8px 10px; + border-radius: 5px; + border: none; + transition: all 0.3s ease-in-out; + } + + .modal-button-red:hover { + cursor: pointer; + background-color: #f4433663; + } + + .modal-button:hover { + cursor: pointer; + background-color: #03a8f475; + } + + .name-input { + width: 100%; + margin-bottom: 15px; + outline: 0; + border-width: 0 0 2px; + border-color: var(--mdc-theme-primary); + background-color: transparent; + padding: 10px; + font-family: Roboto, sans-serif; + font-size: 15px; + color: var(--chat-bubble-msg-color); + } + + .name-input::selection { + background-color: var(--mdc-theme-primary); + color: white; + } + + .name-input::placeholder { + opacity: 0.9; + color: var(--black); + } + + .search-results-div { + position: absolute; + top: 25px; + right: 25px; + } + + .search-field { + width: 100%; + position: relative; + margin-bottom: 5px; + } + + .search-icon { + position: absolute; + right: 3px; + top: 0; + color: var(--chat-bubble-msg-color); + transition: all 0.3s ease-in-out; + background: none; + border-radius: 50%; + padding: 6px 3px; + font-size: 21px; + } + + .search-icon:hover { + cursor: pointer; + background: #d7d7d75c; + } + + .user-verified { + position: absolute; + top: 0; + right: 5px; + display: flex; + align-items: center; + gap: 10px; + color: #04aa2e; + font-size: 13px; + } + + .user-selected { + display: flex; + justify-content: space-between; + align-items: center; + margin: 0; + box-shadow: rgb(0 0 0 / 16%) 0px 3px 6px, rgb(0 0 0 / 23%) 0px 3px 6px; + padding: 18px 20px; + color: var(--chat-bubble-msg-color); + border-radius: 5px; + background-color: #ececec96; + } + + .user-selected-name { + font-family: Roboto, sans-serif; + margin: 0; + font-size: 16px; + } + + .forwarding-container { + display: flex; + gap: 15px; + } + + .user-selected-forwarding { + font-family: Livvic, sans-serif; + margin: 0; + font-size: 16px; + } + + .close-forwarding { + color: #676b71; + width: 14px; + transition: all 0.1s ease-in-out; + } + + .close-forwarding:hover { + cursor: pointer; + color: #4e5054; + } +` +} + constructor() { super() this.getOldMessage = this.getOldMessage.bind(this) @@ -569,11 +686,17 @@ class ChatPage extends LitElement { boxShadow: 'rgba(4, 4, 5, 0.15) 0px 0px 0px 1px, rgba(0, 0, 0, 0.24) 0px 8px 16px 0px' }); this.openForwardOpen = false + this.userFoundModalOpen = false + this.userFound = [] + this.forwardActiveChatHeadUrl = { + url: "", + name: "", + selected: false + } } - - render() { + console.log(25, 'here'); return html`

@@ -702,14 +825,15 @@ class ChatPage extends LitElement {
- +
+ { + this.forwardActiveChatHeadUrl = { + ...this.forwardActiveChatHeadUrl, + url: `direct/${result.owner}`, + name: result.name, + selected: true + }; + this.userFound = []; + this.userFoundModalOpen = false; + }} + .closeFunc=${() => { + this.userFoundModalOpen = false; + this.userFound = []; + }} + .searchResults=${this.userFound} + ?isOpen=${this.userFoundModalOpen} + ?loading=${this.isLoading}> + +
+ ` } + async userSearch() { + const nameValue = this.shadowRoot.getElementById('sendTo').value; + if (!nameValue) { + this.userFound = []; + this.userFoundModalOpen = true; + return; + } + try { + const result = await parentEpml.request('apiCall', { + type: 'api', + url: `/names/${nameValue}` + }) + if (result.error === 401) { + this.userFound = []; + } else { + this.userFound = [ + ...this.userFound, + result, + ]; + } + this.userFoundModalOpen = true; + } catch (error) { + console.error(error); + let err4string = get("chatpage.cchange35"); + parentEpml.request('showSnackBar', `${err4string}`) + } + } + setForwardProperties(forwardedMessage){ this.openForwardOpen = true this.forwardedMessage = forwardedMessage } - - async sendForwardMessage(){ - let parsedMessageObj = {} - let publicKey = { - hasPubKey: false, - key: '' - } + + async sendForwardMessage() { + let parsedMessageObj = {}; try { parsedMessageObj = JSON.parse(this.forwardedMessage); - - } catch (error) { - parsedMessageObj = {} - } - - try { - const res = await parentEpml.request('apiCall', { - type: 'api', - url: `/addresses/publickey/${this.forwardChatId}` - }) - if (res.error === 102) { - publicKey.key = '' - publicKey.hasPubKey = false - } else if (res !== false) { - publicKey.key = res - publicKey.hasPubKey = true - } else { - publicKey.key = '' - publicKey.hasPubKey = false - } - } catch (error) { - + } + catch (error) { + parsedMessageObj = {}; } try { @@ -809,17 +1031,10 @@ class ChatPage extends LitElement { type: 'forward' } delete message.reactions - const stringifyMessageObject = JSON.stringify(message) - this.sendMessage(stringifyMessageObject, undefined, '', true, { - isReceipient: true, - chatId: 'Qdxha59Cm1Ty4QkKMBWPnKrNigcDCDk6eq', - publicKey: { - hasPubKey: false, - key: '' - } - }) + const stringifyMessageObject = JSON.stringify(message); + this.sendMessage(stringifyMessageObject, undefined, '', true) } catch (error) { - console.log({error}) + console.log({error}); } } @@ -949,10 +1164,20 @@ class ChatPage extends LitElement { } } + if (changedProperties && changedProperties.has('chatId') && changedProperties.get('chatId')) { await this.initUpdate() } + + if (changedProperties && changedProperties.has('openForwardOpen')) { + if (this.openForwardOpen === true) { + this.chatEditor.disable(); + } + } + if (changedProperties && changedProperties.has('forwardActiveChatHeadUrl')) { + console.log(this.forwardActiveChatHeadUrl, "forwardActiveChatHeadUrl here"); + } } async renderPlaceholder() { @@ -1448,7 +1673,7 @@ class ChatPage extends LitElement { } async _sendMessage(outSideMsg) { - + console.log(outSideMsg); // have params to determine if it's a reply or not // have variable to determine if it's a response, holds signature in constructor // need original message signature @@ -1752,7 +1977,7 @@ class ChatPage extends LitElement { } } - async sendMessage(messageText, typeMessage, chatReference, isForward, forwardParams) { + async sendMessage(messageText, typeMessage, chatReference, isForward) { this.isLoading = true; let _reference = new Uint8Array(64); @@ -1801,19 +2026,67 @@ class ChatPage extends LitElement { }; const sendForwardRequest = async () => { - const { publicKey } = forwardParams + let publicKey = { + hasPubKey: false, + key: '' + }; - const isRecipient = this.forwardActiveChatHeadUrl.includes('direct') === true ? true : false; + if (this.forwardActiveChatHeadUrl.url) { + const activeChatHeadAddress = this.forwardActiveChatHeadUrl.url.split('/')[1] + try { + const res = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/publickey/${activeChatHeadAddress}` + }) + + if (res.error === 102) { + publicKey.key = '' + publicKey.hasPubKey = false + } else if (res !== false) { + publicKey.key = res + publicKey.hasPubKey = true + } else { + publicKey.key = '' + publicKey.hasPubKey = false + } + } catch (error) { + console.error(error); + } + } + + if (!this.forwardActiveChatHeadUrl && this.shadowRoot.getElementById("sendTo").value !== "") { + try { + const res = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/publickey/${this.shadowRoot.getElementById("sendTo").value}` + }) + if (res.error === 102) { + publicKey.key = '' + publicKey.hasPubKey = false + } else if (res !== false) { + publicKey.key = res + publicKey.hasPubKey = true + } else { + publicKey.key = '' + publicKey.hasPubKey = false + } + } catch (error) { + console.error(error); + } + } + + const isRecipient = this.forwardActiveChatHeadUrl.url.includes('direct') === true ? true : false; - const chatId = this.forwardActiveChatHeadUrl.split('/')[1]; - this.openForwardOpen = false + const recipientAddress = this.forwardActiveChatHeadUrl.url.split('/')[1]; + this.openForwardOpen = false; + this.chatEditor.enable(); if (isRecipient === true) { let chatResponse = await parentEpml.request('chat', { type: 18, nonce: this.selectedAddress.nonce, params: { timestamp: Date.now(), - recipient: chatId, + recipient: recipientAddress, recipientPublicKey: publicKey.key, hasChatReference: 0, chatReference: "", @@ -1832,7 +2105,7 @@ class ChatPage extends LitElement { nonce: this.selectedAddress.nonce, params: { timestamp: Date.now(), - groupID: Number(chatId), + groupID: Number(recipientAddress), hasReceipient: 0, hasChatReference: 0, chatReference: chatReference, @@ -1900,9 +2173,9 @@ class ChatPage extends LitElement { this.forwardActiveChatHeadUrl = "" }; - if(isForward){ + if (isForward) { sendForwardRequest(); - return + return; } sendMessageRequest(); } diff --git a/qortal-ui-plugins/plugins/core/components/ChatSeachResults.js b/qortal-ui-plugins/plugins/core/components/ChatSeachResults.js index 86810248..2fdf8422 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatSeachResults.js +++ b/qortal-ui-plugins/plugins/core/components/ChatSeachResults.js @@ -16,7 +16,6 @@ export class ChatSearchResults extends LitElement { static styles = [chatSearchResultsStyles] render() { - console.log(10, "search results here"); return html`

- ${result} + ${result.name}

` diff --git a/qortal-ui-plugins/plugins/core/components/ChatSelect.js b/qortal-ui-plugins/plugins/core/components/ChatSelect.js index be069a2b..67fb3a0f 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatSelect.js +++ b/qortal-ui-plugins/plugins/core/components/ChatSelect.js @@ -57,6 +57,10 @@ class ChatSelect extends LitElement { color: #92959e; } + .name { + user-select: none; + } + .clearfix:after { visibility: hidden; display: block; @@ -122,13 +126,60 @@ class ChatSelect extends LitElement { } return html` -
  • this.getUrl(this.chatInfo.url)} class="clearfix ${this.activeChatHeadUrl === this.chatInfo.url ? 'active' : ''}"> - ${this.isImageLoaded ? html`${avatarImg}` : html`` } - ${!this.isImageLoaded && !this.chatInfo.name && !this.chatInfo.groupName ? html`account_circle` : html`` } - ${!this.isImageLoaded && this.chatInfo.name ? html`
    ${this.chatInfo.name.charAt(0)}
    `: ''} - ${!this.isImageLoaded && this.chatInfo.groupName ? html`
    ${this.chatInfo.groupName.charAt(0)}
    `: ''} +
  • this.getUrl(this.chatInfo.url)} + class="clearfix ${this.activeChatHeadUrl === this.chatInfo.url ? 'active' : ''}"> + ${this.isImageLoaded ? html`${avatarImg}` : html``} + ${!this.isImageLoaded && !this.chatInfo.name && !this.chatInfo.groupName ? html`account_circle` : + html`` + } + ${!this.isImageLoaded && this.chatInfo.name ? + html` +
    + ${this.chatInfo.name.charAt(0)} +
    `: + ''} + ${!this.isImageLoaded && this.chatInfo.groupName ? + html` +
    + ${this.chatInfo.groupName.charAt(0)} +
    `: + ''}
    -
    ${this.chatInfo.groupName ? this.chatInfo.groupName : this.chatInfo.name !== undefined ? this.chatInfo.name : this.chatInfo.address.substr(0, 15)}
    +
    + + ${this.chatInfo.groupName ? + this.chatInfo.groupName : + this.chatInfo.name !== undefined ? this.chatInfo.name : + this.chatInfo.address.substr(0, 15)} + +
  • ` diff --git a/qortal-ui-plugins/plugins/core/components/ChatTextEditor.js b/qortal-ui-plugins/plugins/core/components/ChatTextEditor.js index 41f82e7f..dfc572bc 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatTextEditor.js +++ b/qortal-ui-plugins/plugins/core/components/ChatTextEditor.js @@ -363,14 +363,14 @@ class ChatTextEditor extends LitElement { return true } - sendMessageFunc() { + sendMessageFunc(props) { if (this.chatMessageSize > 1000 ) { parentEpml.request('showSnackBar', get("chatpage.cchange29")); return; }; this.chatMessageSize = 0; this.chatEditor.updateMirror(); - this._sendMessage(); + this._sendMessage(props); } getMessageSize(message){ diff --git a/qortal-ui-plugins/plugins/core/messaging/q-chat/q-chat.src.js b/qortal-ui-plugins/plugins/core/messaging/q-chat/q-chat.src.js index 30f58e94..ca93bbbd 100644 --- a/qortal-ui-plugins/plugins/core/messaging/q-chat/q-chat.src.js +++ b/qortal-ui-plugins/plugins/core/messaging/q-chat/q-chat.src.js @@ -42,17 +42,16 @@ class Chat extends LitElement { privateMessagePlaceholder: { type: String}, chatEditor: { type: Object }, imageFile: { type: Object }, - activeChatHeadUrl: {type: String}, + activeChatHeadUrl: { type: String }, openPrivateMessage: { type: Boolean }, userFound: { type: Array}, userFoundModalOpen: { type: Boolean }, - userSelected: { type: String} + userSelected: { type: Object } } } static styles = [qchatStyles] - constructor() { super() this.selectedAddress = {} @@ -84,7 +83,7 @@ class Chat extends LitElement { this.openPrivateMessage = false this.userFound = [] this.userFoundModalOpen = false - this.userSelected = '' + this.userSelected = {} } async setActiveChatHeadUrl(url) { @@ -94,7 +93,6 @@ class Chat extends LitElement { } render() { - console.log(22, "here"); return html`
    @@ -149,13 +147,16 @@ class Chat extends LitElement { ?disabled=${this.isLoading} id="sendTo" placeholder="${translate("chatpage.cchange7")}" - value=${this.userSelected} - @keypress=${() => this.userSelected = ""} + value=${this.userSelected.name} + @keypress=${() => { + this.userSelected = {}; + this.requestUpdate(); + }} /> - ${this.userSelected ? ( + ${this.userSelected.name ? ( html`
    -

    User Verified

    +

    ${translate("chatpage.cchange38")}

    ` @@ -198,7 +199,7 @@ class Chat extends LitElement {