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."
|
||||
}
|
||||
|
||||
const CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP = 9999999999999
|
||||
const CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP = 0
|
||||
|
||||
const QORT_DECIMALS = 1e8
|
||||
|
||||
|
@ -82,16 +82,17 @@ export default class ChatTransaction extends ChatBase {
|
||||
this._isText,
|
||||
this._feeBytes
|
||||
)
|
||||
|
||||
console.log('updated test')
|
||||
// After the feature trigger timestamp we need to include chat reference
|
||||
if (new Date(this._timestamp).getTime() >= CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP) {
|
||||
params.push(this._hasChatReference)
|
||||
|
||||
if (this._hasChatReference[0] == 1) {
|
||||
console.log('past through', this._chatReference)
|
||||
params.push(this._chatReference)
|
||||
}
|
||||
}
|
||||
|
||||
console.log({params})
|
||||
return params;
|
||||
}
|
||||
}
|
||||
|
@ -503,9 +503,36 @@ class ChatPage extends LitElement {
|
||||
|
||||
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) {
|
||||
|
||||
this.messages = messages.map((eachMessage) => {
|
||||
const decodedMessages = updateMessages.map((eachMessage) => {
|
||||
|
||||
if (eachMessage.isText === true) {
|
||||
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
|
||||
- b.timestamp
|
||||
})
|
||||
@ -905,7 +986,8 @@ class ChatPage extends LitElement {
|
||||
// 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
|
||||
// find specific object property in local
|
||||
|
||||
let typeMessage = 'regular';
|
||||
|
||||
this.isLoading = true;
|
||||
this.chatEditor.disable();
|
||||
const messageText = this.mirrorChatInput.value;
|
||||
@ -914,6 +996,8 @@ class ChatPage extends LitElement {
|
||||
const sanitizedMessage = messageText.replace(/ /gi, ' ').replace(/<br\s*[\/]?>/gi, '\n');
|
||||
const trimmedMessage = sanitizedMessage.trim();
|
||||
|
||||
console.log('is replied', this.repliedToMessageObj)
|
||||
|
||||
if (/^\s*$/.test(trimmedMessage)) {
|
||||
this.isLoading = false;
|
||||
this.chatEditor.enable();
|
||||
@ -923,14 +1007,35 @@ class ChatPage extends LitElement {
|
||||
let err1string = get("chatpage.cchange24");
|
||||
parentEpml.request('showSnackBar', `${err1string}`);
|
||||
} else if (this.repliedToMessageObj) {
|
||||
let chatReference = this.repliedToMessageObj.reference
|
||||
|
||||
if(this.repliedToMessageObj.chatReference){
|
||||
chatReference = this.repliedToMessageObj.chatReference
|
||||
}
|
||||
typeMessage = 'reply'
|
||||
const messageObject = {
|
||||
messageText,
|
||||
images: [''],
|
||||
repliedTo: this.repliedToMessageObj.signature,
|
||||
repliedTo: chatReference,
|
||||
version: 1
|
||||
}
|
||||
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 {
|
||||
const messageObject = {
|
||||
messageText,
|
||||
@ -939,11 +1044,12 @@ class ChatPage extends LitElement {
|
||||
version: 1
|
||||
}
|
||||
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;
|
||||
|
||||
let _reference = new Uint8Array(64);
|
||||
@ -959,7 +1065,8 @@ class ChatPage extends LitElement {
|
||||
timestamp: Date.now(),
|
||||
recipient: this._chatId,
|
||||
recipientPublicKey: this._publicKey.key,
|
||||
hasChatReference: 0,
|
||||
hasChatReference: typeMessage === 'edit' ? 1 : 0,
|
||||
chatReference: chatReference,
|
||||
message: messageText,
|
||||
lastReference: reference,
|
||||
proofOfWorkNonce: 0,
|
||||
@ -967,7 +1074,7 @@ class ChatPage extends LitElement {
|
||||
isText: 1
|
||||
}
|
||||
});
|
||||
|
||||
console.log({chatResponse})
|
||||
_computePow(chatResponse)
|
||||
} else {
|
||||
let groupResponse = await parentEpml.request('chat', {
|
||||
|
@ -44,6 +44,7 @@ class ChatScroller extends LitElement {
|
||||
|
||||
|
||||
render() {
|
||||
console.log({messages: this.messages})
|
||||
return html`
|
||||
<ul id="viewElement" class="chat-list clearfix">
|
||||
<div id="upObserver"></div>
|
||||
@ -202,20 +203,7 @@ class MessageTemplate extends LitElement {
|
||||
try {
|
||||
const parsedMessageObj = JSON.parse(this.messageObj.decodedMessage)
|
||||
message = parsedMessageObj.messageText
|
||||
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"
|
||||
|
||||
}
|
||||
repliedToData = this.messageObj.repliedToData
|
||||
} catch (error) {
|
||||
message = this.messageObj.decodedMessage
|
||||
}
|
||||
@ -238,7 +226,14 @@ class MessageTemplate extends LitElement {
|
||||
} else {
|
||||
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`
|
||||
<li class="clearfix message-parent">
|
||||
<div class="message-data ${this.messageObj.sender === this.myAddress ? "" : ""}">
|
||||
@ -255,7 +250,7 @@ class MessageTemplate extends LitElement {
|
||||
class="original-message"
|
||||
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="replied-message">${repliedToData.decodedMessage}</p>
|
||||
<p class="replied-message">${repliedToData.decodedMessage.messageText}</p>
|
||||
</div>
|
||||
`}
|
||||
<div id="messageContent" class="message">
|
||||
|
Loading…
x
Reference in New Issue
Block a user