mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-04-01 18:15:53 +00:00
testing speed
This commit is contained in:
parent
774393312f
commit
9705febe65
@ -9,29 +9,29 @@ import '@material/mwc-dialog'
|
|||||||
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent })
|
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent })
|
||||||
|
|
||||||
class ChatModals extends LitElement {
|
class ChatModals extends LitElement {
|
||||||
static get properties() {
|
static get properties() {
|
||||||
return {
|
return {
|
||||||
openDialogPrivateMessage: {type: Boolean},
|
openDialogPrivateMessage: { type: Boolean },
|
||||||
openDialogBlockUser: {type: Boolean},
|
openDialogBlockUser: { type: Boolean },
|
||||||
isLoading: { type: Boolean },
|
isLoading: { type: Boolean },
|
||||||
nametodialog: { type: String, attribute: true },
|
nametodialog: { type: String, attribute: true },
|
||||||
hidePrivateMessageModal: {type: Function},
|
hidePrivateMessageModal: { type: Function },
|
||||||
hideBlockUserModal: {type: Function},
|
hideBlockUserModal: { type: Function },
|
||||||
toblockaddress: { type: String, attribute: true },
|
toblockaddress: { type: String, attribute: true },
|
||||||
chatBlockedAdresses: { type: Array }
|
chatBlockedAdresses: { type: Array }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super()
|
super()
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
this.hidePrivateMessageModal = () => {}
|
this.hidePrivateMessageModal = () => { }
|
||||||
this.hideBlockUserModal = () => {}
|
this.hideBlockUserModal = () => { }
|
||||||
this.chatBlockedAdresses = []
|
this.chatBlockedAdresses = []
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles() {
|
static get styles() {
|
||||||
return css`
|
return css`
|
||||||
.input {
|
.input {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
border: none;
|
border: none;
|
||||||
@ -60,52 +60,48 @@ class ChatModals extends LitElement {
|
|||||||
--mdc-theme-primary: red;
|
--mdc-theme-primary: red;
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
}
|
|
||||||
|
|
||||||
firstUpdated() {
|
|
||||||
|
|
||||||
const stopKeyEventPropagation = (e) => {
|
|
||||||
e.stopPropagation();
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.shadowRoot.getElementById('sendTo').addEventListener('keydown', stopKeyEventPropagation);
|
firstUpdated() {
|
||||||
this.shadowRoot.getElementById('messageBox').addEventListener('keydown', stopKeyEventPropagation);
|
|
||||||
|
const stopKeyEventPropagation = (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.shadowRoot.getElementById('sendTo').addEventListener('keydown', stopKeyEventPropagation);
|
||||||
|
this.shadowRoot.getElementById('messageBox').addEventListener('keydown', stopKeyEventPropagation);
|
||||||
|
|
||||||
|
parentEpml.ready().then(() => {
|
||||||
|
parentEpml.subscribe('selected_address', async selectedAddress => {
|
||||||
|
this.selectedAddress = {}
|
||||||
|
selectedAddress = JSON.parse(selectedAddress)
|
||||||
|
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
||||||
|
this.selectedAddress = selectedAddress
|
||||||
|
})
|
||||||
|
|
||||||
parentEpml.ready().then(() => {
|
|
||||||
parentEpml.subscribe('selected_address', async selectedAddress => {
|
|
||||||
this.selectedAddress = {}
|
|
||||||
selectedAddress = JSON.parse(selectedAddress)
|
|
||||||
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
|
||||||
this.selectedAddress = selectedAddress
|
|
||||||
})
|
})
|
||||||
parentEpml.request('apiCall', {
|
parentEpml.imReady()
|
||||||
url: `/addresses/balance/${window.parent.reduxStore.getState().app.selectedAddress.address}`
|
|
||||||
}).then(res => {
|
|
||||||
this.balance = res
|
|
||||||
})
|
|
||||||
})
|
|
||||||
parentEpml.imReady()
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send Private Message
|
// Send Private Message
|
||||||
|
|
||||||
_sendMessage() {
|
_sendMessage() {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
|
|
||||||
const recipient = this.shadowRoot.getElementById('sendTo').value;
|
const recipient = this.shadowRoot.getElementById('sendTo').value;
|
||||||
const messageBox = this.shadowRoot.getElementById('messageBox');
|
const messageBox = this.shadowRoot.getElementById('messageBox');
|
||||||
const messageText = messageBox.value;
|
const messageText = messageBox.value;
|
||||||
|
|
||||||
if (recipient.length === 0) {
|
if (recipient.length === 0) {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
} else if (messageText.length === 0) {
|
} else if (messageText.length === 0) {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
} else {
|
} else {
|
||||||
this.sendMessage()
|
this.sendMessage()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
async sendMessage() {
|
async sendMessage() {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
@ -172,77 +168,77 @@ class ChatModals extends LitElement {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const sendMessageRequest = async (isEncrypted, _publicKey) => {
|
const sendMessageRequest = async (isEncrypted, _publicKey) => {
|
||||||
const messageObject = {
|
const messageObject = {
|
||||||
messageText,
|
messageText,
|
||||||
images: [''],
|
images: [''],
|
||||||
repliedTo: '',
|
repliedTo: '',
|
||||||
version: 1
|
version: 1
|
||||||
}
|
|
||||||
const stringifyMessageObject = JSON.stringify(messageObject)
|
|
||||||
let chatResponse = await parentEpml.request('chat', {
|
|
||||||
type: 18,
|
|
||||||
nonce: this.selectedAddress.nonce,
|
|
||||||
params: {
|
|
||||||
timestamp: sendTimestamp,
|
|
||||||
recipient: recipient,
|
|
||||||
recipientPublicKey: _publicKey,
|
|
||||||
hasChatReference: 0,
|
|
||||||
message: stringifyMessageObject,
|
|
||||||
lastReference: reference,
|
|
||||||
proofOfWorkNonce: 0,
|
|
||||||
isEncrypted: isEncrypted,
|
|
||||||
isText: 1
|
|
||||||
}
|
}
|
||||||
})
|
const stringifyMessageObject = JSON.stringify(messageObject)
|
||||||
_computePow(chatResponse)
|
let chatResponse = await parentEpml.request('chat', {
|
||||||
}
|
type: 18,
|
||||||
|
nonce: this.selectedAddress.nonce,
|
||||||
|
params: {
|
||||||
|
timestamp: sendTimestamp,
|
||||||
|
recipient: recipient,
|
||||||
|
recipientPublicKey: _publicKey,
|
||||||
|
hasChatReference: 0,
|
||||||
|
message: stringifyMessageObject,
|
||||||
|
lastReference: reference,
|
||||||
|
proofOfWorkNonce: 0,
|
||||||
|
isEncrypted: isEncrypted,
|
||||||
|
isText: 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
_computePow(chatResponse)
|
||||||
|
}
|
||||||
|
|
||||||
const _computePow = async (chatBytes) => {
|
const _computePow = async (chatBytes) => {
|
||||||
|
|
||||||
const _chatBytesArray = Object.keys(chatBytes).map(function (key) { return chatBytes[key]; })
|
const _chatBytesArray = Object.keys(chatBytes).map(function (key) { return chatBytes[key]; })
|
||||||
const chatBytesArray = new Uint8Array(_chatBytesArray)
|
const chatBytesArray = new Uint8Array(_chatBytesArray)
|
||||||
const chatBytesHash = new window.parent.Sha256().process(chatBytesArray).finish().result
|
const chatBytesHash = new window.parent.Sha256().process(chatBytesArray).finish().result
|
||||||
const hashPtr = window.parent.sbrk(32, window.parent.heap)
|
const hashPtr = window.parent.sbrk(32, window.parent.heap)
|
||||||
const hashAry = new Uint8Array(window.parent.memory.buffer, hashPtr, 32)
|
const hashAry = new Uint8Array(window.parent.memory.buffer, hashPtr, 32)
|
||||||
hashAry.set(chatBytesHash)
|
hashAry.set(chatBytesHash)
|
||||||
|
|
||||||
const difficulty = this.balance < 4 ? 18 : 8
|
const difficulty = this.balance < 4 ? 18 : 8
|
||||||
|
|
||||||
const workBufferLength = 8 * 1024 * 1024;
|
const workBufferLength = 8 * 1024 * 1024;
|
||||||
const workBufferPtr = window.parent.sbrk(workBufferLength, window.parent.heap)
|
const workBufferPtr = window.parent.sbrk(workBufferLength, window.parent.heap)
|
||||||
|
|
||||||
let nonce = window.parent.computePow(hashPtr, workBufferPtr, workBufferLength, difficulty)
|
let nonce = window.parent.computePow(hashPtr, workBufferPtr, workBufferLength, difficulty)
|
||||||
|
|
||||||
let _response = await parentEpml.request('sign_chat', {
|
let _response = await parentEpml.request('sign_chat', {
|
||||||
nonce: this.selectedAddress.nonce,
|
nonce: this.selectedAddress.nonce,
|
||||||
chatBytesArray: chatBytesArray,
|
chatBytesArray: chatBytesArray,
|
||||||
chatNonce: nonce
|
chatNonce: nonce
|
||||||
})
|
})
|
||||||
getSendChatResponse(_response)
|
getSendChatResponse(_response)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getSendChatResponse = (response) => {
|
const getSendChatResponse = (response) => {
|
||||||
|
|
||||||
if (response === true) {
|
if (response === true) {
|
||||||
messageBox.value = ''
|
messageBox.value = ''
|
||||||
let err2string = get('welcomepage.wcchange8')
|
let err2string = get('welcomepage.wcchange8')
|
||||||
parentEpml.request('showSnackBar', `${err2string}`)
|
parentEpml.request('showSnackBar', `${err2string}`)
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
this.shadowRoot.querySelector('#startPmDialog').close()
|
this.shadowRoot.querySelector('#startPmDialog').close()
|
||||||
} else if (response.error) {
|
} else if (response.error) {
|
||||||
parentEpml.request('showSnackBar', response.message)
|
parentEpml.request('showSnackBar', response.message)
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
this.shadowRoot.querySelector('#startPmDialog').close()
|
this.shadowRoot.querySelector('#startPmDialog').close()
|
||||||
} else {
|
} else {
|
||||||
let err3string = get('welcomepage.wcchange9')
|
let err3string = get('welcomepage.wcchange9')
|
||||||
parentEpml.request('showSnackBar', `${err3string}`)
|
parentEpml.request('showSnackBar', `${err3string}`)
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
this.shadowRoot.querySelector('#startPmDialog').close()
|
this.shadowRoot.querySelector('#startPmDialog').close()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
getAddressPublicKey()
|
getAddressPublicKey()
|
||||||
}
|
}
|
||||||
|
|
||||||
_textArea(e) {
|
_textArea(e) {
|
||||||
@ -276,8 +272,8 @@ class ChatModals extends LitElement {
|
|||||||
fetch(`${nodeUrl}/names/address/${item}?limit=0&reverse=true`).then(res => {
|
fetch(`${nodeUrl}/names/address/${item}?limit=0&reverse=true`).then(res => {
|
||||||
return res.json()
|
return res.json()
|
||||||
}).then(jsonRes => {
|
}).then(jsonRes => {
|
||||||
if(jsonRes.length) {
|
if (jsonRes.length) {
|
||||||
jsonRes.map (item => {
|
jsonRes.map(item => {
|
||||||
obj.push(item)
|
obj.push(item)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -291,7 +287,7 @@ class ChatModals extends LitElement {
|
|||||||
|
|
||||||
relMessages() {
|
relMessages() {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.href = window.location.href.split( '#' )[0]
|
window.location.href = window.location.href.split('#')[0]
|
||||||
}, 500)
|
}, 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,8 +341,8 @@ class ChatModals extends LitElement {
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return html`
|
return html`
|
||||||
<mwc-dialog
|
<mwc-dialog
|
||||||
id='sendPMDialog'
|
id='sendPMDialog'
|
||||||
tabindex='0'
|
tabindex='0'
|
||||||
@ -366,9 +362,9 @@ class ChatModals extends LitElement {
|
|||||||
<textarea class='textarea' @keydown=${(e) => this._textArea(e)} ?disabled=${this.isLoading} id='messageBox' placeholder='${translate('welcomepage.wcchange5')}' rows='1'></textarea>
|
<textarea class='textarea' @keydown=${(e) => this._textArea(e)} ?disabled=${this.isLoading} id='messageBox' placeholder='${translate('welcomepage.wcchange5')}' rows='1'></textarea>
|
||||||
</p>
|
</p>
|
||||||
<mwc-button ?disabled='${this.isLoading}' slot='primaryAction' @click=${() => {
|
<mwc-button ?disabled='${this.isLoading}' slot='primaryAction' @click=${() => {
|
||||||
this._sendMessage();
|
this._sendMessage();
|
||||||
}
|
}
|
||||||
}>${translate('welcomepage.wcchange6')}
|
}>${translate('welcomepage.wcchange6')}
|
||||||
</mwc-button>
|
</mwc-button>
|
||||||
<mwc-button
|
<mwc-button
|
||||||
?disabled='${this.isLoading}'
|
?disabled='${this.isLoading}'
|
||||||
@ -409,7 +405,7 @@ class ChatModals extends LitElement {
|
|||||||
</mwc-button>
|
</mwc-button>
|
||||||
</mwc-dialog>
|
</mwc-dialog>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
customElements.define('chat-modals', ChatModals)
|
customElements.define('chat-modals', ChatModals)
|
@ -118,7 +118,7 @@ class ChatPage extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static get styles() {
|
static get styles() {
|
||||||
return css`
|
return css`
|
||||||
html {
|
html {
|
||||||
scroll-behavior: smooth;
|
scroll-behavior: smooth;
|
||||||
}
|
}
|
||||||
@ -1443,14 +1443,7 @@ class ChatPage extends LitElement {
|
|||||||
` : ''}
|
` : ''}
|
||||||
<div class="chat-text-area" style="${`${(this.repliedToMessageObj || this.editedMessageObj) && "min-height: 120px"}`}">
|
<div class="chat-text-area" style="${`${(this.repliedToMessageObj || this.editedMessageObj) && "min-height: 120px"}`}">
|
||||||
<!-- gif div -->
|
<!-- gif div -->
|
||||||
<chat-gifs
|
|
||||||
class="chat-gifs"
|
|
||||||
style=${this.openGifModal ? "display: flex;" : "display: none;"}
|
|
||||||
.webWorkerImage=${this.webWorkerFile}
|
|
||||||
.setGifsLoading=${(val) => this.setGifsLoading(val)}
|
|
||||||
.sendMessage=${(val) => this._sendMessage(val)}
|
|
||||||
.setOpenGifModal=${(val) => this.setOpenGifModal(val)}>
|
|
||||||
</chat-gifs>
|
|
||||||
<div
|
<div
|
||||||
class='last-message-ref'
|
class='last-message-ref'
|
||||||
style=${(this.lastMessageRefVisible && !this.imageFile && !this.openGifModal) ? 'opacity: 1;' : 'opacity: 0;'}>
|
style=${(this.lastMessageRefVisible && !this.imageFile && !this.openGifModal) ? 'opacity: 1;' : 'opacity: 0;'}>
|
||||||
@ -1600,18 +1593,18 @@ class ChatPage extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-button-row">
|
<div class="modal-button-row">
|
||||||
<button class="modal-button-red" @click=${() => {
|
<button class="modal-button-red" @click=${() => {
|
||||||
this.removeImage()
|
this.removeImage()
|
||||||
}}>
|
}}>
|
||||||
${translate("chatpage.cchange33")}
|
${translate("chatpage.cchange33")}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="modal-button"
|
class="modal-button"
|
||||||
@click=${() => {
|
@click=${() => {
|
||||||
const chatTextEditor = this.shadowRoot.getElementById('chatTextCaption')
|
const chatTextEditor = this.shadowRoot.getElementById('chatTextCaption')
|
||||||
chatTextEditor.sendMessageFunc({
|
chatTextEditor.sendMessageFunc({
|
||||||
type: 'image',
|
type: 'image',
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
${translate("chatpage.cchange9")}
|
${translate("chatpage.cchange9")}
|
||||||
</button>
|
</button>
|
||||||
@ -1652,18 +1645,18 @@ class ChatPage extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-button-row">
|
<div class="modal-button-row">
|
||||||
<button class="modal-button-red" @click=${() => {
|
<button class="modal-button-red" @click=${() => {
|
||||||
this.removeAttachment()
|
this.removeAttachment()
|
||||||
}}>
|
}}>
|
||||||
${translate("chatpage.cchange33")}
|
${translate("chatpage.cchange33")}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="modal-button"
|
class="modal-button"
|
||||||
@click=${() => {
|
@click=${() => {
|
||||||
const chatTextEditor = this.shadowRoot.getElementById('chatAttachmentId')
|
const chatTextEditor = this.shadowRoot.getElementById('chatAttachmentId')
|
||||||
chatTextEditor.sendMessageFunc({
|
chatTextEditor.sendMessageFunc({
|
||||||
type: 'attachment',
|
type: 'attachment',
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
${translate("chatpage.cchange9")}
|
${translate("chatpage.cchange9")}
|
||||||
</button>
|
</button>
|
||||||
@ -2398,11 +2391,7 @@ class ChatPage extends LitElement {
|
|||||||
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
||||||
this.selectedAddress = selectedAddress
|
this.selectedAddress = selectedAddress
|
||||||
})
|
})
|
||||||
parentEpml.request('apiCall', {
|
|
||||||
url: `/addresses/balance/${window.parent.reduxStore.getState().app.selectedAddress.address}`
|
|
||||||
}).then(res => {
|
|
||||||
this.balance = res
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
parentEpml.imReady()
|
parentEpml.imReady()
|
||||||
|
|
||||||
@ -2559,15 +2548,15 @@ class ChatPage extends LitElement {
|
|||||||
return this.decodeMessage(eachMessage)
|
return this.decodeMessage(eachMessage)
|
||||||
})
|
})
|
||||||
|
|
||||||
const replacedMessages = await replaceMessagesEdited({
|
// const replacedMessages = await replaceMessagesEdited({
|
||||||
decodedMessages: decodeMsgs,
|
// decodedMessages: decodeMsgs,
|
||||||
parentEpml,
|
// parentEpml,
|
||||||
isReceipient: this.isReceipient,
|
// isReceipient: this.isReceipient,
|
||||||
decodeMessageFunc: this.decodeMessage,
|
// decodeMessageFunc: this.decodeMessage,
|
||||||
_publicKey: this._publicKey
|
// _publicKey: this._publicKey
|
||||||
})
|
// })
|
||||||
|
|
||||||
this.messagesRendered = [...replacedMessages, ...this.messagesRendered].sort(function (a, b) {
|
this.messagesRendered = [...decodeMsgs, ...this.messagesRendered].sort(function (a, b) {
|
||||||
return a.timestamp
|
return a.timestamp
|
||||||
- b.timestamp
|
- b.timestamp
|
||||||
})
|
})
|
||||||
@ -2589,15 +2578,15 @@ class ChatPage extends LitElement {
|
|||||||
return this.decodeMessage(eachMessage)
|
return this.decodeMessage(eachMessage)
|
||||||
})
|
})
|
||||||
|
|
||||||
const replacedMessages = await replaceMessagesEdited({
|
// const replacedMessages = await replaceMessagesEdited({
|
||||||
decodedMessages: decodeMsgs,
|
// decodedMessages: decodeMsgs,
|
||||||
parentEpml,
|
// parentEpml,
|
||||||
isReceipient: this.isReceipient,
|
// isReceipient: this.isReceipient,
|
||||||
decodeMessageFunc: this.decodeMessage,
|
// decodeMessageFunc: this.decodeMessage,
|
||||||
_publicKey: this._publicKey
|
// _publicKey: this._publicKey
|
||||||
})
|
// })
|
||||||
|
|
||||||
this.messagesRendered = [...replacedMessages, ...this.messagesRendered].sort(function (a, b) {
|
this.messagesRendered = [...decodeMsgs, ...this.messagesRendered].sort(function (a, b) {
|
||||||
return a.timestamp
|
return a.timestamp
|
||||||
- b.timestamp
|
- b.timestamp
|
||||||
})
|
})
|
||||||
@ -2623,15 +2612,15 @@ class ChatPage extends LitElement {
|
|||||||
return this.decodeMessage(eachMessage)
|
return this.decodeMessage(eachMessage)
|
||||||
})
|
})
|
||||||
|
|
||||||
const replacedMessages = await replaceMessagesEdited({
|
// const replacedMessages = await replaceMessagesEdited({
|
||||||
decodedMessages: decodeMsgs,
|
// decodedMessages: decodeMsgs,
|
||||||
parentEpml,
|
// parentEpml,
|
||||||
isReceipient: this.isReceipient,
|
// isReceipient: this.isReceipient,
|
||||||
decodeMessageFunc: this.decodeMessage,
|
// decodeMessageFunc: this.decodeMessage,
|
||||||
_publicKey: this._publicKey
|
// _publicKey: this._publicKey
|
||||||
})
|
// })
|
||||||
|
|
||||||
this.messagesRendered = [...replacedMessages, ...this.messagesRendered].sort(function (a, b) {
|
this.messagesRendered = [...decodeMsgs, ...this.messagesRendered].sort(function (a, b) {
|
||||||
return a.timestamp
|
return a.timestamp
|
||||||
- b.timestamp
|
- b.timestamp
|
||||||
})
|
})
|
||||||
@ -2655,15 +2644,15 @@ class ChatPage extends LitElement {
|
|||||||
return this.decodeMessage(eachMessage)
|
return this.decodeMessage(eachMessage)
|
||||||
})
|
})
|
||||||
|
|
||||||
const replacedMessages = await replaceMessagesEdited({
|
// const replacedMessages = await replaceMessagesEdited({
|
||||||
decodedMessages: decodeMsgs,
|
// decodedMessages: decodeMsgs,
|
||||||
parentEpml,
|
// parentEpml,
|
||||||
isReceipient: this.isReceipient,
|
// isReceipient: this.isReceipient,
|
||||||
decodeMessageFunc: this.decodeMessage,
|
// decodeMessageFunc: this.decodeMessage,
|
||||||
_publicKey: this._publicKey
|
// _publicKey: this._publicKey
|
||||||
})
|
// })
|
||||||
|
|
||||||
this.messagesRendered = [...replacedMessages, ...this.messagesRendered].sort(function (a, b) {
|
this.messagesRendered = [...decodeMsgs, ...this.messagesRendered].sort(function (a, b) {
|
||||||
return a.timestamp
|
return a.timestamp
|
||||||
- b.timestamp
|
- b.timestamp
|
||||||
})
|
})
|
||||||
@ -2690,15 +2679,15 @@ class ChatPage extends LitElement {
|
|||||||
return this.decodeMessage(eachMessage)
|
return this.decodeMessage(eachMessage)
|
||||||
})
|
})
|
||||||
|
|
||||||
const replacedMessages = await replaceMessagesEdited({
|
// const replacedMessages = await replaceMessagesEdited({
|
||||||
decodedMessages: decodeMsgs,
|
// decodedMessages: decodeMsgs,
|
||||||
parentEpml,
|
// parentEpml,
|
||||||
isReceipient: this.isReceipient,
|
// isReceipient: this.isReceipient,
|
||||||
decodeMessageFunc: this.decodeMessage,
|
// decodeMessageFunc: this.decodeMessage,
|
||||||
_publicKey: this._publicKey
|
// _publicKey: this._publicKey
|
||||||
})
|
// })
|
||||||
|
|
||||||
this.messagesRendered = [...this.messagesRendered, ...replacedMessages].sort(function (a, b) {
|
this.messagesRendered = [...this.messagesRendered, ...decodeMsgs].sort(function (a, b) {
|
||||||
return a.timestamp
|
return a.timestamp
|
||||||
- b.timestamp
|
- b.timestamp
|
||||||
})
|
})
|
||||||
@ -2722,15 +2711,15 @@ class ChatPage extends LitElement {
|
|||||||
return this.decodeMessage(eachMessage)
|
return this.decodeMessage(eachMessage)
|
||||||
})
|
})
|
||||||
|
|
||||||
const replacedMessages = await replaceMessagesEdited({
|
// const replacedMessages = await replaceMessagesEdited({
|
||||||
decodedMessages: decodeMsgs,
|
// decodedMessages: decodeMsgs,
|
||||||
parentEpml,
|
// parentEpml,
|
||||||
isReceipient: this.isReceipient,
|
// isReceipient: this.isReceipient,
|
||||||
decodeMessageFunc: this.decodeMessage,
|
// decodeMessageFunc: this.decodeMessage,
|
||||||
_publicKey: this._publicKey
|
// _publicKey: this._publicKey
|
||||||
})
|
// })
|
||||||
|
|
||||||
this.messagesRendered = [...this.messagesRendered, ...replacedMessages].sort(function (a, b) {
|
this.messagesRendered = [...this.messagesRendered, ...decodeMsgs].sort(function (a, b) {
|
||||||
return a.timestamp
|
return a.timestamp
|
||||||
- b.timestamp
|
- b.timestamp
|
||||||
})
|
})
|
||||||
@ -2762,35 +2751,36 @@ class ChatPage extends LitElement {
|
|||||||
})
|
})
|
||||||
if (isInitial) {
|
if (isInitial) {
|
||||||
this.chatEditorPlaceholder = await this.renderPlaceholder()
|
this.chatEditorPlaceholder = await this.renderPlaceholder()
|
||||||
const replacedMessages = await replaceMessagesEdited({
|
// const replacedMessages = await replaceMessagesEdited({
|
||||||
decodedMessages: decodedMessages,
|
// decodedMessages: decodedMessages,
|
||||||
parentEpml,
|
// parentEpml,
|
||||||
isReceipient: isReceipient,
|
// isReceipient: isReceipient,
|
||||||
decodeMessageFunc: this.decodeMessage,
|
// decodeMessageFunc: this.decodeMessage,
|
||||||
_publicKey: this._publicKey
|
// _publicKey: this._publicKey
|
||||||
})
|
// })
|
||||||
|
|
||||||
this._messages = replacedMessages.sort(function (a, b) {
|
this._messages = decodedMessages.sort(function (a, b) {
|
||||||
return a.timestamp
|
return a.timestamp
|
||||||
- b.timestamp
|
- b.timestamp
|
||||||
})
|
})
|
||||||
|
|
||||||
// TODO: Determine number of initial messages by screen height...
|
// TODO: Determine number of initial messages by screen height...
|
||||||
|
// this.messagesRendered = this._messages
|
||||||
this.messagesRendered = this._messages
|
this.messagesRendered = this._messages
|
||||||
this.isLoadingMessages = false
|
this.isLoadingMessages = false
|
||||||
|
|
||||||
setTimeout(() => this.downElementObserver(), 500)
|
setTimeout(() => this.downElementObserver(), 500)
|
||||||
} else {
|
} else {
|
||||||
const replacedMessages = await replaceMessagesEdited({
|
// const replacedMessages = await replaceMessagesEdited({
|
||||||
decodedMessages: decodedMessages,
|
// decodedMessages: decodedMessages,
|
||||||
parentEpml,
|
// parentEpml,
|
||||||
isReceipient: isReceipient,
|
// isReceipient: isReceipient,
|
||||||
decodeMessageFunc: this.decodeMessage,
|
// decodeMessageFunc: this.decodeMessage,
|
||||||
_publicKey: this._publicKey,
|
// _publicKey: this._publicKey,
|
||||||
isNotInitial: true
|
// isNotInitial: true
|
||||||
})
|
// })
|
||||||
|
|
||||||
const renderEachMessage = replacedMessages.map(async (msg) => {
|
const renderEachMessage = decodedMessages.map(async (msg) => {
|
||||||
await this.renderNewMessage(msg)
|
await this.renderNewMessage(msg)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -217,9 +217,9 @@ class ChatWelcomePage extends LitElement {
|
|||||||
<div
|
<div
|
||||||
class="start-chat"
|
class="start-chat"
|
||||||
@click="${() => this.setOpenPrivateMessage({
|
@click="${() => this.setOpenPrivateMessage({
|
||||||
name: "",
|
name: "",
|
||||||
open: true
|
open: true
|
||||||
})}">
|
})}">
|
||||||
${translate("welcomepage.wcchange2")}
|
${translate("welcomepage.wcchange2")}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -240,9 +240,9 @@ class ChatWelcomePage extends LitElement {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<mwc-button ?disabled="${this.isLoading}" slot="primaryAction" @click=${() => {
|
<mwc-button ?disabled="${this.isLoading}" slot="primaryAction" @click=${() => {
|
||||||
this._sendMessage();
|
this._sendMessage();
|
||||||
}
|
}
|
||||||
}>
|
}>
|
||||||
${translate("welcomepage.wcchange6")}</mwc-button>
|
${translate("welcomepage.wcchange6")}</mwc-button>
|
||||||
<mwc-button
|
<mwc-button
|
||||||
?disabled="${this.isLoading}"
|
?disabled="${this.isLoading}"
|
||||||
@ -304,11 +304,7 @@ class ChatWelcomePage extends LitElement {
|
|||||||
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
||||||
this.selectedAddress = selectedAddress
|
this.selectedAddress = selectedAddress
|
||||||
})
|
})
|
||||||
parentEpml.request('apiCall', {
|
|
||||||
url: `/addresses/balance/${window.parent.reduxStore.getState().app.selectedAddress.address}`
|
|
||||||
}).then(res => {
|
|
||||||
this.balance = res
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
parentEpml.imReady()
|
parentEpml.imReady()
|
||||||
|
@ -101,7 +101,7 @@ class LevelFounder extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
firstUpdated() {
|
firstUpdated() {
|
||||||
this.checkAddressInfo()
|
console.log('levelFounder')
|
||||||
|
|
||||||
parentEpml.ready().then(() => {
|
parentEpml.ready().then(() => {
|
||||||
parentEpml.subscribe('selected_address', async selectedAddress => {
|
parentEpml.subscribe('selected_address', async selectedAddress => {
|
||||||
@ -115,28 +115,28 @@ class LevelFounder extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async checkAddressInfo() {
|
async checkAddressInfo() {
|
||||||
let toCheck = this.checkleveladdress
|
// let toCheck = this.checkleveladdress
|
||||||
const memberInfo = await parentEpml.request('apiCall', {
|
// const memberInfo = await parentEpml.request('apiCall', {
|
||||||
url: `/addresses/${toCheck}`
|
// url: `/addresses/${toCheck}`
|
||||||
})
|
// })
|
||||||
this.memberInfo = memberInfo
|
// this.memberInfo = memberInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
renderFounder() {
|
renderFounder() {
|
||||||
let adressfounder = this.memberInfo.flags
|
let adressfounder = this.memberInfo.flags
|
||||||
if (adressfounder === 1) {
|
if (adressfounder === 1) {
|
||||||
return html `
|
return html`
|
||||||
<span id="founderTooltip" class="badge">F</span>
|
<span id="founderTooltip" class="badge">F</span>
|
||||||
<paper-tooltip class="custom" for="founderTooltip" position="top">FOUNDER</paper-tooltip>
|
<paper-tooltip class="custom" for="founderTooltip" position="top">FOUNDER</paper-tooltip>
|
||||||
`
|
`
|
||||||
} else {
|
} else {
|
||||||
return html ``
|
return html``
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderLevel() {
|
renderLevel() {
|
||||||
let adresslevel = this.memberInfo.level
|
let adresslevel = this.memberInfo.level
|
||||||
return adresslevel ? html `
|
return adresslevel ? html`
|
||||||
<img id="level-img" src=${`/img/badges/level-${adresslevel}.png`} alt=${`badge-${adresslevel}`} class="message-data-level" />
|
<img id="level-img" src=${`/img/badges/level-${adresslevel}.png`} alt=${`badge-${adresslevel}`} class="message-data-level" />
|
||||||
<paper-tooltip class="level-img-tooltip" for="level-img" position="top" >
|
<paper-tooltip class="level-img-tooltip" for="level-img" position="top" >
|
||||||
${translate("mintingpage.mchange27")} ${adresslevel}
|
${translate("mintingpage.mchange27")} ${adresslevel}
|
||||||
|
@ -228,9 +228,9 @@ class NameMenu extends LitElement {
|
|||||||
<textarea class="textarea" @keydown=${(e) => this._textArea(e)} ?disabled=${this.isLoading} id="messageBox" placeholder="${translate("welcomepage.wcchange5")}" rows="1"></textarea>
|
<textarea class="textarea" @keydown=${(e) => this._textArea(e)} ?disabled=${this.isLoading} id="messageBox" placeholder="${translate("welcomepage.wcchange5")}" rows="1"></textarea>
|
||||||
</p>
|
</p>
|
||||||
<mwc-button ?disabled="${this.isLoading}" slot="primaryAction" @click=${() => {
|
<mwc-button ?disabled="${this.isLoading}" slot="primaryAction" @click=${() => {
|
||||||
this._sendMessage();
|
this._sendMessage();
|
||||||
}
|
}
|
||||||
}>
|
}>
|
||||||
${translate("welcomepage.wcchange6")}</mwc-button>
|
${translate("welcomepage.wcchange6")}</mwc-button>
|
||||||
<mwc-button
|
<mwc-button
|
||||||
?disabled="${this.isLoading}"
|
?disabled="${this.isLoading}"
|
||||||
@ -247,11 +247,11 @@ class NameMenu extends LitElement {
|
|||||||
firstUpdated() {
|
firstUpdated() {
|
||||||
this.getChatBlockedAdresses()
|
this.getChatBlockedAdresses()
|
||||||
|
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
this.getChatBlockedAdresses()
|
this.getChatBlockedAdresses()
|
||||||
}, 60000)
|
}, 60000)
|
||||||
|
|
||||||
window.onclick = function(event) {
|
window.onclick = function (event) {
|
||||||
if (!event.target.matches('.block')) {
|
if (!event.target.matches('.block')) {
|
||||||
var dropdowns = document.getElementsByClassName('dropdown-content');
|
var dropdowns = document.getElementsByClassName('dropdown-content');
|
||||||
var i;
|
var i;
|
||||||
@ -290,11 +290,7 @@ class NameMenu extends LitElement {
|
|||||||
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
||||||
this.selectedAddress = selectedAddress
|
this.selectedAddress = selectedAddress
|
||||||
})
|
})
|
||||||
parentEpml.request('apiCall', {
|
|
||||||
url: `/addresses/balance/${window.parent.reduxStore.getState().app.selectedAddress.address}`
|
|
||||||
}).then(res => {
|
|
||||||
this.balance = res
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
parentEpml.imReady()
|
parentEpml.imReady()
|
||||||
}
|
}
|
||||||
@ -333,7 +329,7 @@ class NameMenu extends LitElement {
|
|||||||
|
|
||||||
relMessages() {
|
relMessages() {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.href = window.location.href.split( '#' )[0]
|
window.location.href = window.location.href.split('#')[0]
|
||||||
}, 500)
|
}, 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,8 +403,8 @@ class NameMenu extends LitElement {
|
|||||||
fetch(`${nodeUrl}/names/address/${item}?limit=0&reverse=true`).then(res => {
|
fetch(`${nodeUrl}/names/address/${item}?limit=0&reverse=true`).then(res => {
|
||||||
return res.json()
|
return res.json()
|
||||||
}).then(jsonRes => {
|
}).then(jsonRes => {
|
||||||
if(jsonRes.length) {
|
if (jsonRes.length) {
|
||||||
jsonRes.map (item => {
|
jsonRes.map(item => {
|
||||||
obj.push(item)
|
obj.push(item)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
@ -9,21 +9,21 @@ import { use, get, translate, translateUnsafeHTML, registerTranslateConfig } fro
|
|||||||
const parentEpml = new Epml({ type: "WINDOW", source: window.parent });
|
const parentEpml = new Epml({ type: "WINDOW", source: window.parent });
|
||||||
|
|
||||||
export class TipUser extends LitElement {
|
export class TipUser extends LitElement {
|
||||||
static get properties() {
|
static get properties() {
|
||||||
return {
|
return {
|
||||||
userName: { type: String },
|
userName: { type: String },
|
||||||
walletBalance: { type: Number },
|
walletBalance: { type: Number },
|
||||||
sendMoneyLoading: { type: Boolean },
|
sendMoneyLoading: { type: Boolean },
|
||||||
closeTipUser: { type: Boolean },
|
closeTipUser: { type: Boolean },
|
||||||
btnDisable: { type: Boolean },
|
btnDisable: { type: Boolean },
|
||||||
errorMessage: { type: String },
|
errorMessage: { type: String },
|
||||||
successMessage: { type: String },
|
successMessage: { type: String },
|
||||||
setOpenTipUser: { attribute: false },
|
setOpenTipUser: { attribute: false },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super()
|
super()
|
||||||
this.sendMoneyLoading = false
|
this.sendMoneyLoading = false
|
||||||
this.btnDisable = false
|
this.btnDisable = false
|
||||||
this.errorMessage = ""
|
this.errorMessage = ""
|
||||||
@ -33,8 +33,8 @@ export class TipUser extends LitElement {
|
|||||||
|
|
||||||
static styles = [tipUserStyles]
|
static styles = [tipUserStyles]
|
||||||
|
|
||||||
async firstUpdated() {
|
async firstUpdated() {
|
||||||
await this.fetchWalletDetails()
|
await this.fetchWalletDetails()
|
||||||
}
|
}
|
||||||
|
|
||||||
updated(changedProperties) {
|
updated(changedProperties) {
|
||||||
@ -48,12 +48,12 @@ export class TipUser extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getLastRef() {
|
async getLastRef() {
|
||||||
let myRef = await parentEpml.request("apiCall", {
|
let myRef = await parentEpml.request("apiCall", {
|
||||||
type: "api",
|
type: "api",
|
||||||
url: `/addresses/lastreference/${this.myAddress.address}`,
|
url: `/addresses/lastreference/${this.myAddress.address}`,
|
||||||
})
|
})
|
||||||
return myRef
|
return myRef
|
||||||
}
|
}
|
||||||
|
|
||||||
renderSuccessText() {
|
renderSuccessText() {
|
||||||
return html`${translate("chatpage.cchange55")}`
|
return html`${translate("chatpage.cchange55")}`
|
||||||
@ -70,168 +70,158 @@ export class TipUser extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fetchWalletDetails() {
|
async fetchWalletDetails() {
|
||||||
await parentEpml.request('apiCall', {
|
|
||||||
url: `/addresses/balance/${this.myAddress.address}?apiKey=${this.getApiKey()}`,
|
|
||||||
})
|
|
||||||
.then((res) => {
|
|
||||||
if (isNaN(Number(res))) {
|
|
||||||
let snack4string = get("chatpage.cchange48")
|
|
||||||
parentEpml.request('showSnackBar', `${snack4string}`)
|
|
||||||
} else {
|
|
||||||
this.walletBalance = Number(res).toFixed(8)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendQort() {
|
async sendQort() {
|
||||||
const amount = this.shadowRoot.getElementById("amountInput").value
|
const amount = this.shadowRoot.getElementById("amountInput").value
|
||||||
let recipient = this.userName
|
let recipient = this.userName
|
||||||
this.sendMoneyLoading = true
|
this.sendMoneyLoading = true
|
||||||
this.btnDisable = true
|
this.btnDisable = true
|
||||||
|
|
||||||
if (parseFloat(amount) + parseFloat(0.001) > parseFloat(this.walletBalance)) {
|
if (parseFloat(amount) + parseFloat(0.001) > parseFloat(this.walletBalance)) {
|
||||||
this.sendMoneyLoading = false
|
this.sendMoneyLoading = false
|
||||||
this.btnDisable = false
|
this.btnDisable = false
|
||||||
let snack1string = get("chatpage.cchange51")
|
let snack1string = get("chatpage.cchange51")
|
||||||
parentEpml.request('showSnackBar', `${snack1string}`)
|
parentEpml.request('showSnackBar', `${snack1string}`)
|
||||||
return false
|
return false
|
||||||
}
|
|
||||||
|
|
||||||
if (parseFloat(amount) <= 0) {
|
|
||||||
this.sendMoneyLoading = false
|
|
||||||
this.btnDisable = false
|
|
||||||
let snack2string = get("chatpage.cchange52")
|
|
||||||
parentEpml.request('showSnackBar', `${snack2string}`)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
if (recipient.length === 0) {
|
|
||||||
this.sendMoneyLoading = false
|
|
||||||
this.btnDisable = false
|
|
||||||
let snack3string = get("chatpage.cchange53")
|
|
||||||
parentEpml.request('showSnackBar', `${snack3string}`)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
const validateName = async (receiverName) => {
|
|
||||||
let myRes
|
|
||||||
let myNameRes = await parentEpml.request('apiCall', {
|
|
||||||
type: 'api',
|
|
||||||
url: `/names/${receiverName}`,
|
|
||||||
})
|
|
||||||
|
|
||||||
if (myNameRes.error === 401) {
|
|
||||||
myRes = false
|
|
||||||
} else {
|
|
||||||
myRes = myNameRes
|
|
||||||
}
|
|
||||||
return myRes;
|
|
||||||
}
|
|
||||||
|
|
||||||
const validateAddress = async (receiverAddress) => {
|
|
||||||
let myAddress = await window.parent.validateAddress(receiverAddress)
|
|
||||||
return myAddress
|
|
||||||
}
|
|
||||||
|
|
||||||
const validateReceiver = async (recipient) => {
|
|
||||||
let lastRef = await this.getLastRef()
|
|
||||||
let isAddress
|
|
||||||
|
|
||||||
try {
|
|
||||||
isAddress = await validateAddress(recipient)
|
|
||||||
} catch (err) {
|
|
||||||
isAddress = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAddress) {
|
if (parseFloat(amount) <= 0) {
|
||||||
let myTransaction = await makeTransactionRequest(recipient, lastRef)
|
this.sendMoneyLoading = false
|
||||||
getTxnRequestResponse(myTransaction)
|
this.btnDisable = false
|
||||||
} else {
|
let snack2string = get("chatpage.cchange52")
|
||||||
let myNameRes = await validateName(recipient)
|
parentEpml.request('showSnackBar', `${snack2string}`)
|
||||||
if (myNameRes !== false) {
|
return false
|
||||||
let myNameAddress = myNameRes.owner
|
}
|
||||||
let myTransaction = await makeTransactionRequest(myNameAddress, lastRef)
|
|
||||||
|
if (recipient.length === 0) {
|
||||||
|
this.sendMoneyLoading = false
|
||||||
|
this.btnDisable = false
|
||||||
|
let snack3string = get("chatpage.cchange53")
|
||||||
|
parentEpml.request('showSnackBar', `${snack3string}`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateName = async (receiverName) => {
|
||||||
|
let myRes
|
||||||
|
let myNameRes = await parentEpml.request('apiCall', {
|
||||||
|
type: 'api',
|
||||||
|
url: `/names/${receiverName}`,
|
||||||
|
})
|
||||||
|
|
||||||
|
if (myNameRes.error === 401) {
|
||||||
|
myRes = false
|
||||||
|
} else {
|
||||||
|
myRes = myNameRes
|
||||||
|
}
|
||||||
|
return myRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateAddress = async (receiverAddress) => {
|
||||||
|
let myAddress = await window.parent.validateAddress(receiverAddress)
|
||||||
|
return myAddress
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateReceiver = async (recipient) => {
|
||||||
|
let lastRef = await this.getLastRef()
|
||||||
|
let isAddress
|
||||||
|
|
||||||
|
try {
|
||||||
|
isAddress = await validateAddress(recipient)
|
||||||
|
} catch (err) {
|
||||||
|
isAddress = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isAddress) {
|
||||||
|
let myTransaction = await makeTransactionRequest(recipient, lastRef)
|
||||||
getTxnRequestResponse(myTransaction)
|
getTxnRequestResponse(myTransaction)
|
||||||
} else {
|
} else {
|
||||||
console.error(this.renderReceiverText())
|
let myNameRes = await validateName(recipient)
|
||||||
this.errorMessage = this.renderReceiverText()
|
if (myNameRes !== false) {
|
||||||
|
let myNameAddress = myNameRes.owner
|
||||||
|
let myTransaction = await makeTransactionRequest(myNameAddress, lastRef)
|
||||||
|
getTxnRequestResponse(myTransaction)
|
||||||
|
} else {
|
||||||
|
console.error(this.renderReceiverText())
|
||||||
|
this.errorMessage = this.renderReceiverText()
|
||||||
|
this.sendMoneyLoading = false
|
||||||
|
this.btnDisable = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getName = async (recipient) => {
|
||||||
|
try {
|
||||||
|
const getNames = await parentEpml.request("apiCall", {
|
||||||
|
type: "api",
|
||||||
|
url: `/names/address/${recipient}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (getNames?.length > 0) {
|
||||||
|
return getNames[0].name
|
||||||
|
} else {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const makeTransactionRequest = async (receiver, lastRef) => {
|
||||||
|
let myReceiver = receiver
|
||||||
|
let mylastRef = lastRef
|
||||||
|
let dialogamount = get("transactions.amount")
|
||||||
|
let dialogAddress = get("login.address")
|
||||||
|
let dialogName = get("login.name")
|
||||||
|
let dialogto = get("transactions.to")
|
||||||
|
let recipientName = await getName(myReceiver)
|
||||||
|
let myTxnrequest = await parentEpml.request('transaction', {
|
||||||
|
type: 2,
|
||||||
|
nonce: this.myAddress.nonce,
|
||||||
|
params: {
|
||||||
|
recipient: myReceiver,
|
||||||
|
recipientName: recipientName,
|
||||||
|
amount: amount,
|
||||||
|
lastReference: mylastRef,
|
||||||
|
fee: 0.001,
|
||||||
|
dialogamount: dialogamount,
|
||||||
|
dialogto: dialogto,
|
||||||
|
dialogAddress,
|
||||||
|
dialogName
|
||||||
|
},
|
||||||
|
})
|
||||||
|
return myTxnrequest
|
||||||
|
}
|
||||||
|
|
||||||
|
const getTxnRequestResponse = (txnResponse) => {
|
||||||
|
if (txnResponse.success === false && txnResponse.message) {
|
||||||
|
this.errorMessage = txnResponse.message
|
||||||
this.sendMoneyLoading = false
|
this.sendMoneyLoading = false
|
||||||
this.btnDisable = false
|
this.btnDisable = false
|
||||||
}
|
throw new Error(txnResponse)
|
||||||
}
|
} else if (txnResponse.success === true && !txnResponse.data.error) {
|
||||||
}
|
this.shadowRoot.getElementById('amountInput').value = ''
|
||||||
|
this.errorMessage = ''
|
||||||
const getName = async (recipient)=> {
|
this.successMessage = this.renderSuccessText()
|
||||||
try {
|
this.sendMoneyLoading = false
|
||||||
const getNames = await parentEpml.request("apiCall", {
|
this.btnDisable = false
|
||||||
type: "api",
|
setTimeout(() => {
|
||||||
url: `/names/address/${recipient}`,
|
this.setOpenTipUser(false)
|
||||||
});
|
this.successMessage = ""
|
||||||
|
}, 3000)
|
||||||
if (getNames?.length > 0 ) {
|
|
||||||
return getNames[0].name
|
|
||||||
} else {
|
} else {
|
||||||
return ''
|
this.errorMessage = txnResponse.data.message
|
||||||
|
this.sendMoneyLoading = false
|
||||||
|
this.btnDisable = false
|
||||||
|
throw new Error(txnResponse)
|
||||||
}
|
}
|
||||||
} catch (error) {
|
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
|
validateReceiver(recipient)
|
||||||
}
|
}
|
||||||
|
|
||||||
const makeTransactionRequest = async (receiver, lastRef) => {
|
render() {
|
||||||
let myReceiver = receiver
|
return html`
|
||||||
let mylastRef = lastRef
|
|
||||||
let dialogamount = get("transactions.amount")
|
|
||||||
let dialogAddress = get("login.address")
|
|
||||||
let dialogName = get("login.name")
|
|
||||||
let dialogto = get("transactions.to")
|
|
||||||
let recipientName = await getName(myReceiver)
|
|
||||||
let myTxnrequest = await parentEpml.request('transaction', {
|
|
||||||
type: 2,
|
|
||||||
nonce: this.myAddress.nonce,
|
|
||||||
params: {
|
|
||||||
recipient: myReceiver,
|
|
||||||
recipientName: recipientName,
|
|
||||||
amount: amount,
|
|
||||||
lastReference: mylastRef,
|
|
||||||
fee: 0.001,
|
|
||||||
dialogamount: dialogamount,
|
|
||||||
dialogto: dialogto,
|
|
||||||
dialogAddress,
|
|
||||||
dialogName
|
|
||||||
},
|
|
||||||
})
|
|
||||||
return myTxnrequest
|
|
||||||
}
|
|
||||||
|
|
||||||
const getTxnRequestResponse = (txnResponse) => {
|
|
||||||
if (txnResponse.success === false && txnResponse.message) {
|
|
||||||
this.errorMessage = txnResponse.message
|
|
||||||
this.sendMoneyLoading = false
|
|
||||||
this.btnDisable = false
|
|
||||||
throw new Error(txnResponse)
|
|
||||||
} else if (txnResponse.success === true && !txnResponse.data.error) {
|
|
||||||
this.shadowRoot.getElementById('amountInput').value = ''
|
|
||||||
this.errorMessage = ''
|
|
||||||
this.successMessage = this.renderSuccessText()
|
|
||||||
this.sendMoneyLoading = false
|
|
||||||
this.btnDisable = false
|
|
||||||
setTimeout(() => {
|
|
||||||
this.setOpenTipUser(false)
|
|
||||||
this.successMessage = ""
|
|
||||||
}, 3000)
|
|
||||||
} else {
|
|
||||||
this.errorMessage = txnResponse.data.message
|
|
||||||
this.sendMoneyLoading = false
|
|
||||||
this.btnDisable = false
|
|
||||||
throw new Error(txnResponse)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
validateReceiver(recipient)
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
return html`
|
|
||||||
<div class="tip-user-header">
|
<div class="tip-user-header">
|
||||||
<img src="/img/qort.png" width="32" height="32">
|
<img src="/img/qort.png" width="32" height="32">
|
||||||
<p class="tip-user-header-font">${translate("chatpage.cchange43")} ${this.userName}</p>
|
<p class="tip-user-header-font">${translate("chatpage.cchange43")} ${this.userName}</p>
|
||||||
@ -241,10 +231,10 @@ export class TipUser extends LitElement {
|
|||||||
<input id="amountInput" class="tip-input" type="number" placeholder="${translate("chatpage.cchange46")}" />
|
<input id="amountInput" class="tip-input" type="number" placeholder="${translate("chatpage.cchange46")}" />
|
||||||
<p class="tip-available">${translate("chatpage.cchange49")}: 0.001 QORT</p>
|
<p class="tip-available">${translate("chatpage.cchange49")}: 0.001 QORT</p>
|
||||||
${this.sendMoneyLoading ?
|
${this.sendMoneyLoading ?
|
||||||
html`
|
html`
|
||||||
<paper-progress indeterminate style="width: 100%; margin: 4px;">
|
<paper-progress indeterminate style="width: 100%; margin: 4px;">
|
||||||
</paper-progress>`
|
</paper-progress>`
|
||||||
: html`
|
: html`
|
||||||
<div style=${"text-align: center;"}>
|
<div style=${"text-align: center;"}>
|
||||||
<vaadin-button
|
<vaadin-button
|
||||||
?disabled=${this.btnDisable}
|
?disabled=${this.btnDisable}
|
||||||
@ -258,20 +248,20 @@ export class TipUser extends LitElement {
|
|||||||
`}
|
`}
|
||||||
|
|
||||||
${this.successMessage ?
|
${this.successMessage ?
|
||||||
html`
|
html`
|
||||||
<p class="success-msg">
|
<p class="success-msg">
|
||||||
${this.successMessage}
|
${this.successMessage}
|
||||||
</p>
|
</p>
|
||||||
`
|
`
|
||||||
: this.errorMessage ?
|
: this.errorMessage ?
|
||||||
html`
|
html`
|
||||||
<p class="error-msg">
|
<p class="error-msg">
|
||||||
${this.errorMessage}
|
${this.errorMessage}
|
||||||
</p>
|
</p>
|
||||||
`
|
`
|
||||||
: null}
|
: null}
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
customElements.define('tip-user', TipUser)
|
customElements.define('tip-user', TipUser)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user