Browse Source

fix double websocket

resolve-20231003
PhilReact 1 year ago
parent
commit
5a9b92744a
  1. 28
      plugins/plugins/core/components/ChatPage.js
  2. 3
      plugins/plugins/core/components/ChatScroller.js

28
plugins/plugins/core/components/ChatPage.js

@ -2347,6 +2347,7 @@ class ChatPage extends LitElement {
this.webSocket.close(1000, 'switch chat')
this.webSocket = ''
}
console.log('this.webSocket', this.webSocket)
this.pageNumber = 1
const getAddressPublicKey = () => {
@ -2489,6 +2490,7 @@ class ChatPage extends LitElement {
}
async updated(changedProperties) {
console.log({changedProperties})
if (changedProperties && changedProperties.has('userLanguage')) {
const userLang = changedProperties.get('userLanguage')
if (userLang) {
@ -2505,7 +2507,7 @@ class ChatPage extends LitElement {
this.editor.setEditable(true)
}
}
if(changedProperties && changedProperties.has('chatId')){
if(changedProperties && changedProperties.has('chatId') && this.webSocket){
this.isLoadingMessages = true
this.initUpdate()
@ -3146,7 +3148,7 @@ class ChatPage extends LitElement {
setTimeout(() => this.downElementObserver(), 500)
} else {
console.log('decodedmsg', decodedMessages)
queue.push(() => replaceMessagesEdited({
decodedMessages: decodedMessages,
@ -3212,6 +3214,7 @@ class ChatPage extends LitElement {
*/
async renderNewMessage(newMessage) {
console.log('newMessage', newMessage)
if (newMessage.chatReference) {
// const findOriginalMessageIndex = this.messagesRendered.findIndex(msg => msg.signature === newMessage.chatReference || (msg.chatReference && msg.chatReference === newMessage.chatReference))
// if (findOriginalMessageIndex !== -1 && this.messagesRendered[findOriginalMessageIndex].sender === newMessage.sender) {
@ -3230,7 +3233,12 @@ class ChatPage extends LitElement {
return
}
const viewElement = this.shadowRoot.querySelector('chat-scroller').shadowRoot.getElementById('viewElement')
let viewElement = this.shadowRoot.querySelector('chat-scroller')
if(viewElement){
viewElement = viewElement.shadowRoot.getElementById('viewElement')
} else {
viewElement = null
}
if (newMessage.sender === this.selectedAddress.address) {
@ -3251,8 +3259,10 @@ class ChatPage extends LitElement {
// Append the message and scroll to the bottom if user is down the page
// this.messagesRendered = [...this.messagesRendered, newMessage]
await this.getUpdateComplete()
viewElement.scrollTop = viewElement.scrollHeight
if(viewElement){
viewElement.scrollTop = viewElement.scrollHeight
}
} else {
this.messagesRendered = {
@ -3320,7 +3330,9 @@ class ChatPage extends LitElement {
} else {
// Fallback to http
directSocketLink = `ws://${nodeUrl}/websockets/chat/messages?involving=${window.parent.reduxStore.getState().app.selectedAddress.address}&involving=${cid}&encoding=BASE64&limit=1`
}
}
this.webSocket = new WebSocket(directSocketLink)
// Open Connection
@ -3389,7 +3401,9 @@ class ChatPage extends LitElement {
// Closed Event
this.webSocket.onclose = (e) => {
clearTimeout(directSocketTimeout)
console.log('e', e)
if (e.reason === 'switch chat') return
console.log('not coming in')
restartDirectWebSocket()
}
@ -3437,7 +3451,7 @@ class ChatPage extends LitElement {
// Fallback to http
groupSocketLink = `ws://${nodeUrl}/websockets/chat/messages?txGroupId=${groupId}&encoding=BASE64&limit=1`
}
this.webSocket = new WebSocket(groupSocketLink)
// Open Connection

3
plugins/plugins/core/components/ChatScroller.js

@ -559,6 +559,7 @@ class ChatScroller extends LitElement {
async replaceMessagesWithUpdateByArray(updatedMessagesArray) {
console.log({updatedMessagesArray, messages: this.messagesToRender})
let previousScrollTop;
let previousScrollHeight;
@ -567,7 +568,7 @@ class ChatScroller extends LitElement {
previousScrollHeight = viewElement.scrollHeight;
for (let group of this.messagesToRender) {
for (let i = 0; i < group.messages.length; i++) {
const update = updatedMessagesArray.find(updatedMessage => ((updatedMessage.chatReference === group.messages[i].signature) || (updatedMessage.chatReference === group.messages[i].originalSignature)));
const update = updatedMessagesArray.find(updatedMessage => ((updatedMessage.chatReference === group.messages[i].signature) || (updatedMessage.chatReference === group.messages[i].originalSignature) || (updatedMessage.chatReference === group.messages[i].chatReference)));
if (update) {
Object.assign(group.messages[i], update);
}

Loading…
Cancel
Save