Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/store/messagesStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,12 @@ const actions = {
* @param {boolean} [payload.fromRealtime] whether the message comes from realtime (polling or signaling)
*/
processMessage(context, { token, message, fromRealtime = false }) {
if (message.token !== token) {
// FIXME Unresolved issue: https://github.com/nextcloud/spreed/issues/15668#issuecomment-3743283784
console.error('processMessage: message token "%s" mismatch called token "%s" \n If you see this, please report issue to developers on Github', message.token, token)
return
}

const sharedItemsStore = useSharedItemsStore()
const actorStore = useActorStore()
const chatExtrasStore = useChatExtrasStore()
Expand Down
24 changes: 12 additions & 12 deletions src/stores/__tests__/chat.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,16 @@ describe('chatStore', () => {
*/

const mockMessages = {
101: { id: 101, threadId: 101, isThread: true, message: 'Hello' },
102: { id: 102, threadId: 102, isThread: false, message: 'World' },
103: { id: 103, threadId: 101, isThread: true, message: '!' },
104: { id: 104, threadId: 104, isThread: true, message: 'Lorem ipsum' },
105: { id: 105, threadId: 105, isThread: false, message: 'dolor sit amet' },
106: { id: 106, threadId: 101, isThread: true, message: 'consectetur adipiscing elit' },
107: { id: 107, threadId: 104, isThread: true, message: 'Vestibulum quis' },
108: { id: 108, threadId: 108, isThread: false, message: 'sed diam nonumy' },
109: { id: 109, threadId: 104, isThread: true, message: 'eirmod tempor invidunt' },
110: { id: 110, threadId: 110, isThread: false, message: 'ut labore et dolore' },
101: { token: TOKEN, id: 101, threadId: 101, isThread: true, message: 'Hello' },
102: { token: TOKEN, id: 102, threadId: 102, isThread: false, message: 'World' },
103: { token: TOKEN, id: 103, threadId: 101, isThread: true, message: '!' },
104: { token: TOKEN, id: 104, threadId: 104, isThread: true, message: 'Lorem ipsum' },
105: { token: TOKEN, id: 105, threadId: 105, isThread: false, message: 'dolor sit amet' },
106: { token: TOKEN, id: 106, threadId: 101, isThread: true, message: 'consectetur adipiscing elit' },
107: { token: TOKEN, id: 107, threadId: 104, isThread: true, message: 'Vestibulum quis' },
108: { token: TOKEN, id: 108, threadId: 108, isThread: false, message: 'sed diam nonumy' },
109: { token: TOKEN, id: 109, threadId: 104, isThread: true, message: 'eirmod tempor invidunt' },
110: { token: TOKEN, id: 110, threadId: 110, isThread: false, message: 'ut labore et dolore' },
}

const chatBlockA = [mockMessages[109], mockMessages[108]]
Expand Down Expand Up @@ -150,8 +150,8 @@ describe('chatStore', () => {

it('returns an empty array if no messages or blocks present', () => {
// Arrange
vuexStore.dispatch('processMessage', { token: 'token1', message: mockMessages[109] })
chatStore.processChatBlocks('token2', [mockMessages[110]])
vuexStore.dispatch('processMessage', { token: 'token1', message: { token: 'token1', id: 109, threadId: 104, isThread: true, message: 'eirmod tempor invidunt' } })
chatStore.processChatBlocks('token2', [{ token: 'token2', id: 110, threadId: 110, isThread: false, message: 'ut labore et dolore' }])

// Assert
expect(chatStore.getMessagesList('token1')).toEqual([]) // No chat blocks
Expand Down
6 changes: 6 additions & 0 deletions src/stores/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,12 @@ export const useChatStore = defineStore('chat', () => {
function processChatBlocks(token: string, messages: ChatMessage[], options?: ProcessChatBlocksOptions): void {
const threadIdSetsToUpdate: IdMap<Set<number>> = {}
const newMessageIdsSet = messages.reduce((acc, message) => {
if (message.token !== token) {
// FIXME Unresolved issue: https://github.com/nextcloud/spreed/issues/15668#issuecomment-3743283784
console.error('processChatBlocks: message token "%s" mismatch called token "%s" \n If you see this, please report issue to developers on Github', message.token, token)
return acc
}

acc.add(message.id)
if (message.isThread && message.threadId) {
if (!threadIdSetsToUpdate[message.threadId]) {
Expand Down