forked from Qortal/qortal-ui
rough draft reply logic
This commit is contained in:
parent
c2e5f8ca0c
commit
912bfffabd
@ -249,7 +249,7 @@ const ERROR_CODES = {
|
|||||||
1000: "Not yet released."
|
1000: "Not yet released."
|
||||||
}
|
}
|
||||||
|
|
||||||
const CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP = 9999999999999
|
const CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP = 0
|
||||||
|
|
||||||
const QORT_DECIMALS = 1e8
|
const QORT_DECIMALS = 1e8
|
||||||
|
|
||||||
|
@ -82,16 +82,17 @@ export default class ChatTransaction extends ChatBase {
|
|||||||
this._isText,
|
this._isText,
|
||||||
this._feeBytes
|
this._feeBytes
|
||||||
)
|
)
|
||||||
|
console.log('updated test')
|
||||||
// After the feature trigger timestamp we need to include chat reference
|
// After the feature trigger timestamp we need to include chat reference
|
||||||
if (new Date(this._timestamp).getTime() >= CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP) {
|
if (new Date(this._timestamp).getTime() >= CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP) {
|
||||||
params.push(this._hasChatReference)
|
params.push(this._hasChatReference)
|
||||||
|
|
||||||
if (this._hasChatReference[0] == 1) {
|
if (this._hasChatReference[0] == 1) {
|
||||||
|
console.log('past through', this._chatReference)
|
||||||
params.push(this._chatReference)
|
params.push(this._chatReference)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log({params})
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -503,9 +503,36 @@ class ChatPage extends LitElement {
|
|||||||
|
|
||||||
async processMessages(messages, isInitial) {
|
async processMessages(messages, isInitial) {
|
||||||
|
|
||||||
|
const findNewMessages = messages.map(async(msg)=> {
|
||||||
|
console.log({msg})
|
||||||
|
let msgItem = msg
|
||||||
|
try {
|
||||||
|
const response = await parentEpml.request('apiCall', {
|
||||||
|
type: 'api',
|
||||||
|
url: `/chat/messages?chatreference=${msg.reference}&reverse=true&involving=${msg.recipient}&involving=${msg.sender}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
if(response && Array.isArray(response) && response.length !== 0){
|
||||||
|
let responseItem = {...response[0]}
|
||||||
|
delete responseItem.timestamp
|
||||||
|
msgItem = {
|
||||||
|
...msg,
|
||||||
|
...responseItem,
|
||||||
|
editedTimestamp : response[0].timestamp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log({response})
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
|
||||||
|
return msgItem
|
||||||
|
})
|
||||||
|
const updateMessages = await Promise.all(findNewMessages)
|
||||||
|
|
||||||
if (isInitial) {
|
if (isInitial) {
|
||||||
|
|
||||||
this.messages = messages.map((eachMessage) => {
|
const decodedMessages = updateMessages.map((eachMessage) => {
|
||||||
|
|
||||||
if (eachMessage.isText === true) {
|
if (eachMessage.isText === true) {
|
||||||
this.messageSignature = eachMessage.signature
|
this.messageSignature = eachMessage.signature
|
||||||
@ -518,7 +545,61 @@ class ChatPage extends LitElement {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
this._messages = [...this.messages].sort(function (a, b) {
|
|
||||||
|
const findNewMessages2 = decodedMessages.map(async(msg)=> {
|
||||||
|
console.log({msg})
|
||||||
|
let parsedMessageObj = msg
|
||||||
|
try {
|
||||||
|
parsedMessageObj = JSON.parse(msg.decodedMessage)
|
||||||
|
} catch (error) {
|
||||||
|
return msg
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let msgItem = msg
|
||||||
|
try {
|
||||||
|
if(parsedMessageObj.repliedTo){
|
||||||
|
const response = await parentEpml.request('apiCall', {
|
||||||
|
type: 'api',
|
||||||
|
url: `/chat/messages?chatreference=${parsedMessageObj.repliedTo}&reverse=true&involving=${msg.recipient}&involving=${msg.sender}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
if(response && Array.isArray(response) && response.length !== 0){
|
||||||
|
|
||||||
|
msgItem = {
|
||||||
|
...msg,
|
||||||
|
repliedToData : this.decodeMessage(response[0])
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
const response2 = await parentEpml.request('apiCall', {
|
||||||
|
type: 'api',
|
||||||
|
url: `/chat/messages?reference=${parsedMessageObj.repliedTo}&reverse=true&involving=${msg.recipient}&involving=${msg.sender}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
if(response2 && Array.isArray(response2) && response2.length !== 0){
|
||||||
|
|
||||||
|
msgItem = {
|
||||||
|
...msg,
|
||||||
|
repliedToData : this.decodeMessage(response2[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
|
||||||
|
return msgItem
|
||||||
|
})
|
||||||
|
const updateMessages2 = await Promise.all(findNewMessages2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
this._messages = updateMessages2.sort(function (a, b) {
|
||||||
return a.timestamp
|
return a.timestamp
|
||||||
- b.timestamp
|
- b.timestamp
|
||||||
})
|
})
|
||||||
@ -905,7 +986,8 @@ class ChatPage extends LitElement {
|
|||||||
// need whole original message object, transform the data and put it in local storage
|
// need whole original message object, transform the data and put it in local storage
|
||||||
// create new var called repliedToData and use that to modify the UI
|
// create new var called repliedToData and use that to modify the UI
|
||||||
// find specific object property in local
|
// find specific object property in local
|
||||||
|
let typeMessage = 'regular';
|
||||||
|
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
this.chatEditor.disable();
|
this.chatEditor.disable();
|
||||||
const messageText = this.mirrorChatInput.value;
|
const messageText = this.mirrorChatInput.value;
|
||||||
@ -914,6 +996,8 @@ class ChatPage extends LitElement {
|
|||||||
const sanitizedMessage = messageText.replace(/ /gi, ' ').replace(/<br\s*[\/]?>/gi, '\n');
|
const sanitizedMessage = messageText.replace(/ /gi, ' ').replace(/<br\s*[\/]?>/gi, '\n');
|
||||||
const trimmedMessage = sanitizedMessage.trim();
|
const trimmedMessage = sanitizedMessage.trim();
|
||||||
|
|
||||||
|
console.log('is replied', this.repliedToMessageObj)
|
||||||
|
|
||||||
if (/^\s*$/.test(trimmedMessage)) {
|
if (/^\s*$/.test(trimmedMessage)) {
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
this.chatEditor.enable();
|
this.chatEditor.enable();
|
||||||
@ -923,14 +1007,35 @@ class ChatPage extends LitElement {
|
|||||||
let err1string = get("chatpage.cchange24");
|
let err1string = get("chatpage.cchange24");
|
||||||
parentEpml.request('showSnackBar', `${err1string}`);
|
parentEpml.request('showSnackBar', `${err1string}`);
|
||||||
} else if (this.repliedToMessageObj) {
|
} else if (this.repliedToMessageObj) {
|
||||||
|
let chatReference = this.repliedToMessageObj.reference
|
||||||
|
|
||||||
|
if(this.repliedToMessageObj.chatReference){
|
||||||
|
chatReference = this.repliedToMessageObj.chatReference
|
||||||
|
}
|
||||||
|
typeMessage = 'reply'
|
||||||
const messageObject = {
|
const messageObject = {
|
||||||
messageText,
|
messageText,
|
||||||
images: [''],
|
images: [''],
|
||||||
repliedTo: this.repliedToMessageObj.signature,
|
repliedTo: chatReference,
|
||||||
version: 1
|
version: 1
|
||||||
}
|
}
|
||||||
const stringifyMessageObject = JSON.stringify(messageObject)
|
const stringifyMessageObject = JSON.stringify(messageObject)
|
||||||
this.sendMessage(stringifyMessageObject);
|
this.sendMessage(stringifyMessageObject, typeMessage );
|
||||||
|
} else if (this.editedMessageObj) {
|
||||||
|
let chatReference = this.repliedToMessageObj.reference
|
||||||
|
|
||||||
|
if(this.repliedToMessageObj.chatReference){
|
||||||
|
chatReference = this.repliedToMessageObj.chatReference
|
||||||
|
}
|
||||||
|
typeMessage = 'reply'
|
||||||
|
const messageObject = {
|
||||||
|
messageText,
|
||||||
|
images: [''],
|
||||||
|
repliedTo: chatReference,
|
||||||
|
version: 1
|
||||||
|
}
|
||||||
|
const stringifyMessageObject = JSON.stringify(messageObject)
|
||||||
|
this.sendMessage(stringifyMessageObject, typeMessage, chatReference);
|
||||||
} else {
|
} else {
|
||||||
const messageObject = {
|
const messageObject = {
|
||||||
messageText,
|
messageText,
|
||||||
@ -939,11 +1044,12 @@ class ChatPage extends LitElement {
|
|||||||
version: 1
|
version: 1
|
||||||
}
|
}
|
||||||
const stringifyMessageObject = JSON.stringify(messageObject)
|
const stringifyMessageObject = JSON.stringify(messageObject)
|
||||||
this.sendMessage(stringifyMessageObject);
|
this.sendMessage(stringifyMessageObject, typeMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendMessage(messageText) {
|
async sendMessage(messageText, typeMessage, chatReference) {
|
||||||
|
console.log({messageText}, 'hello')
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
|
|
||||||
let _reference = new Uint8Array(64);
|
let _reference = new Uint8Array(64);
|
||||||
@ -959,7 +1065,8 @@ class ChatPage extends LitElement {
|
|||||||
timestamp: Date.now(),
|
timestamp: Date.now(),
|
||||||
recipient: this._chatId,
|
recipient: this._chatId,
|
||||||
recipientPublicKey: this._publicKey.key,
|
recipientPublicKey: this._publicKey.key,
|
||||||
hasChatReference: 0,
|
hasChatReference: typeMessage === 'edit' ? 1 : 0,
|
||||||
|
chatReference: chatReference,
|
||||||
message: messageText,
|
message: messageText,
|
||||||
lastReference: reference,
|
lastReference: reference,
|
||||||
proofOfWorkNonce: 0,
|
proofOfWorkNonce: 0,
|
||||||
@ -967,7 +1074,7 @@ class ChatPage extends LitElement {
|
|||||||
isText: 1
|
isText: 1
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
console.log({chatResponse})
|
||||||
_computePow(chatResponse)
|
_computePow(chatResponse)
|
||||||
} else {
|
} else {
|
||||||
let groupResponse = await parentEpml.request('chat', {
|
let groupResponse = await parentEpml.request('chat', {
|
||||||
|
@ -44,6 +44,7 @@ class ChatScroller extends LitElement {
|
|||||||
|
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
console.log({messages: this.messages})
|
||||||
return html`
|
return html`
|
||||||
<ul id="viewElement" class="chat-list clearfix">
|
<ul id="viewElement" class="chat-list clearfix">
|
||||||
<div id="upObserver"></div>
|
<div id="upObserver"></div>
|
||||||
@ -202,20 +203,7 @@ class MessageTemplate extends LitElement {
|
|||||||
try {
|
try {
|
||||||
const parsedMessageObj = JSON.parse(this.messageObj.decodedMessage)
|
const parsedMessageObj = JSON.parse(this.messageObj.decodedMessage)
|
||||||
message = parsedMessageObj.messageText
|
message = parsedMessageObj.messageText
|
||||||
repliedToData = {
|
repliedToData = this.messageObj.repliedToData
|
||||||
"timestamp": 1663419371885,
|
|
||||||
"txGroupId": 0,
|
|
||||||
"reference": "5LuncmE2RsGVdQizkZLnjgqU8QozR2hHhkiSujUgywEfqAvm6RW4xZ7c9XjuMnb76bNmX2ntRNhnBF4ErvawM1dW",
|
|
||||||
"senderPublicKey": "xmZXCYzGU2t3S6Ehm2zp4pVm83q9d143NKRgmiU1dXW",
|
|
||||||
"sender": "Qj9aLrdK2FLQY6YssRQUkDmXNJCko2zF7e",
|
|
||||||
"senderName": "GiseleH",
|
|
||||||
"data": "3JLP9vViLoRPJ1Pqt2uC6Ufqf7wgTrs4HuV4Ltgwdnf5ekcBCCf5MTm2Sg3sXHeuVnCpoJAyVdqgAbr7tcBoq3soNZTjteusXjjW3NSMNcJEAadaTYC68xGXGmvK1jRyioPqGaKiXKzR2jPPRV5SyiPd66788Z2Rqt3VQB98rvronX5w5tE9UUWRor6bmMeVL3dj7fHYhLPPE5VBpCS9Eskti7vnTgDUQxnjfr",
|
|
||||||
"isText": true,
|
|
||||||
"isEncrypted": false,
|
|
||||||
"signature": "3jWvhQKSDt4Zqeup5sLfyNksVVphFW5iF11PsTZzXQLCCPH9pDMqwNoKE2oe3DPYz47VbbLgJaAWMVA44z9dUr9U",
|
|
||||||
"decodedMessage": "for TrentB512 who computer crashed your registered name in qortal for your level 3 account was TrentB512 https://exqlorer.com/address/Qf58otnEXeoyvD7dvYmfEGpQ64oMD3uvwM"
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message = this.messageObj.decodedMessage
|
message = this.messageObj.decodedMessage
|
||||||
}
|
}
|
||||||
@ -238,7 +226,14 @@ class MessageTemplate extends LitElement {
|
|||||||
} else {
|
} else {
|
||||||
nameMenu = html`<span>${this.messageObj.senderName ? this.messageObj.senderName : this.messageObj.sender}</span>`
|
nameMenu = html`<span>${this.messageObj.senderName ? this.messageObj.senderName : this.messageObj.sender}</span>`
|
||||||
}
|
}
|
||||||
|
if(repliedToData){
|
||||||
|
try {
|
||||||
|
const parsedMsg = JSON.parse(repliedToData.decodedMessage)
|
||||||
|
repliedToData.decodedMessage = parsedMsg
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
return hideit ? html`<li class="clearfix"></li>` : html`
|
return hideit ? html`<li class="clearfix"></li>` : html`
|
||||||
<li class="clearfix message-parent">
|
<li class="clearfix message-parent">
|
||||||
<div class="message-data ${this.messageObj.sender === this.myAddress ? "" : ""}">
|
<div class="message-data ${this.messageObj.sender === this.myAddress ? "" : ""}">
|
||||||
@ -255,7 +250,7 @@ class MessageTemplate extends LitElement {
|
|||||||
class="original-message"
|
class="original-message"
|
||||||
style=${this.messageObj.sender === this.myAddress && "background-color: rgb(179 179 179 / 79%)"}>
|
style=${this.messageObj.sender === this.myAddress && "background-color: rgb(179 179 179 / 79%)"}>
|
||||||
<p class="original-message-sender">${repliedToData.sendName ?? repliedToData.sender}</p>
|
<p class="original-message-sender">${repliedToData.sendName ?? repliedToData.sender}</p>
|
||||||
<p class="replied-message">${repliedToData.decodedMessage}</p>
|
<p class="replied-message">${repliedToData.decodedMessage.messageText}</p>
|
||||||
</div>
|
</div>
|
||||||
`}
|
`}
|
||||||
<div id="messageContent" class="message">
|
<div id="messageContent" class="message">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user