From f030328cd108a47a49a622b1b4c2b6fdbce8682f Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 25 Aug 2026 21:09:05 +0300 Subject: [PATCH] fix chats --- src/components/chat_view/chat_view.js | 19 ++++++++++++++----- src/stores/chats.js | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/components/chat_view/chat_view.js b/src/components/chat_view/chat_view.js index 44eaf57cf..149bded2a 100644 --- a/src/components/chat_view/chat_view.js +++ b/src/components/chat_view/chat_view.js @@ -89,14 +89,15 @@ const Chat = { fetcher: null, socket: null, streaming: false, + fetching: true, errorLoadingChat: false, messageRetriers: {}, idempotencyKeyIndex: {}, } }, - created() { + async created() { if (this.testMode) return - this.activate() + await this.activate() this.attachSocket() }, mounted() { @@ -243,8 +244,8 @@ const Chat = { accountId: this.chatUserId, credentials: useOAuthStore().token, }) - useUsersStore().addNewUsers(result) const { data } = result + useUsersStore().addNewUsers({ ...result, data: data.account }) data.account = useUsersStore().findUser(data.account.id) this.chat = data } catch (e) { @@ -262,8 +263,8 @@ const Chat = { }, deactivate() { this.clear() - if (!this.streaming) { - this.stopFetching() + if (this.fetching) { + this.stopFetching('Chat deactivated') } }, attachSocket() { @@ -274,6 +275,7 @@ const Chat = { } et.addEventListener('update', this.onStreamMessage) + et.addEventListener('pleroma:chat_update', this.onChatUpdate) et.addEventListener('open', this.onStreamConnect) et.addEventListener('close', this.onStreamDisconnect) @@ -284,6 +286,7 @@ const Chat = { const { et } = this.socket et.removeEventListener('update', this.onStreamMessage) + et.removeEventListener('pleroma:chat_update', this.onChatUpdate) et.removeEventListener('open', this.onStreamConnect) et.removeEventListener('close', this.onStreamDisconnect) @@ -306,11 +309,13 @@ const Chat = { 5000, ) this.fetchChat({ isFirstFetch }) + this.fetching = true }, stopFetching(reason) { console.debug('[Chat View] Stopped fetching', 'Reason:', reason) this.fetcher.stop() this.fetcher = null + this.fetching = false }, // Actions @@ -440,6 +445,10 @@ const Chat = { ) this.addMessages({ messages }) }, + onChatUpdate({ data: { chatUpdate } }) { + const messages = [chatUpdate.lastMessage] + this.addMessages({ messages }) + }, addMessages({ messages: newMessages }) { for (let i = 0; i < newMessages.length; i++) { const message = newMessages[i] diff --git a/src/stores/chats.js b/src/stores/chats.js index 66e483b18..47e08b738 100644 --- a/src/stores/chats.js +++ b/src/stores/chats.js @@ -101,7 +101,7 @@ export const useChatsStore = defineStore('chats', { chat.unread = 0 } }, - updateChat({ chat: updatedChat }) { + updateChat({ data: { chatUpdate: updatedChat } }) { const chat = getChatById(this, updatedChat.id) if (chat) { chat.lastMessage = updatedChat.lastMessage