Browse Source

Merge pull request #15703 from nextcloud/fix/noid/chat-blocks-fixups

pull/15708/head
Maksim Sukharev 2 months ago
committed by GitHub
parent
commit
1e3fa38073
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 7
      src/components/LeftSidebar/LeftSidebar.vue
  2. 4
      src/composables/useGetMessages.ts
  3. 2
      src/composables/useTemporaryMessage.ts
  4. 4
      src/services/__tests__/messagesService.spec.js
  5. 1
      src/services/messagesService.ts
  6. 1
      src/store/messagesStore.js
  7. 2
      src/stores/__tests__/chat.spec.js
  8. 12
      src/stores/chat.ts

7
src/components/LeftSidebar/LeftSidebar.vue

@ -149,7 +149,7 @@
<NcAppNavigationItem v-if="!isSearching"
class="navigation-item"
:name="showThreadsList ? t('spreed', 'Back to conversations') : t('spreed', 'Followed threads')"
@click="showThreadsList = !showThreadsList">
@click.prevent="showThreadsList = !showThreadsList">
<template #icon>
<IconArrowLeft v-if="showThreadsList" class="bidirectional-icon" :size="20" />
<IconForumOutline v-else :size="20" />
@ -158,7 +158,7 @@
<NcAppNavigationItem v-if="pendingInvitationsCount"
class="navigation-item"
:name="t('spreed', 'Pending invitations')"
@click="showInvitationHandler">
@click.prevent="showInvitationHandler">
<template #icon>
<IconAccountMultiplePlusOutline :size="20" />
</template>
@ -975,7 +975,7 @@ export default {
}
},
refreshTalkDashboard() {
refreshTalkDashboard(event) {
// Throttle click and keyboard events
if (actualizeDataTimeout) {
return
@ -985,6 +985,7 @@ export default {
}, 5_000)
if (this.$route.name === 'root') {
event.preventDefault()
EventBus.emit('refresh-talk-dashboard')
}
},

4
src/composables/useGetMessages.ts

@ -255,7 +255,7 @@ export function useGetMessagesProvider() {
// need some delay (next tick is too short) to be able to run
// after the browser's native "scroll to anchor" from the hash
window.setTimeout(() => {
EventBus.emit('focus-message', contextMessageId.value)
EventBus.emit('focus-message', messageId)
}, 2)
}
@ -301,6 +301,8 @@ export function useGetMessagesProvider() {
console.debug(exception)
return
}
} else {
await checkContextAndFocusMessage(token, contextMessageId.value, contextThreadId.value)
}
isInitialisingMessages.value = false

2
src/composables/useTemporaryMessage.ts

@ -29,7 +29,7 @@ export function useTemporaryMessage(context: Store<unknown>) {
const parentId = chatExtrasStore.getParentIdToReply(payload.token)
const parent = parentId
? store.getters.message(payload.token, parentId)
: (threadId.value ? store.getters.message(payload.token, threadId.value) : undefined)
: (threadId.value ? chatExtrasStore.getThread(payload.token, threadId.value)?.first : undefined)
return prepareTemporaryMessage({
...payload,

4
src/services/__tests__/messagesService.spec.js

@ -57,6 +57,7 @@ describe('messagesService', () => {
lastKnownMessageId: 1234,
limit: CHAT.FETCH_LIMIT,
includeLastKnown: 0,
timeout: 0,
},
},
)
@ -67,6 +68,7 @@ describe('messagesService', () => {
token: 'XXTOKENXX',
lastKnownMessageId: 1234,
includeLastKnown: 1,
threadId: 1111,
}, {
dummyOption: true,
})
@ -81,6 +83,8 @@ describe('messagesService', () => {
lastKnownMessageId: 1234,
limit: CHAT.FETCH_LIMIT,
includeLastKnown: 1,
threadId: 1111,
timeout: 0,
},
},
)

1
src/services/messagesService.ts

@ -71,6 +71,7 @@ async function fetchMessages({
lastKnownMessageId,
threadId,
limit,
timeout: 0,
includeLastKnown: includeLastKnown ? 1 : 0,
} as receiveMessagesParams,
})

1
src/store/messagesStore.js

@ -1240,6 +1240,7 @@ const actions = {
actorDisplayName: temporaryMessage.actorDisplayName,
referenceId: temporaryMessage.referenceId,
replyTo: temporaryMessage.parent?.id,
// FIXME threadId: temporaryMessage.threadId, PR #15645
silent: temporaryMessage.silent,
threadTitle,
}, options)

2
src/stores/__tests__/chat.spec.js

@ -113,7 +113,7 @@ describe('chatStore', () => {
processMessages(TOKEN, chatBlockE)
// Assert
expect(chatStore.getMessagesList(TOKEN, { threadId: 101 })).toEqual([mockMessages[106]])
expect(chatStore.getMessagesList(TOKEN, { messageId: 106, threadId: 101 })).toEqual([mockMessages[106]])
expect(chatStore.getMessagesList(TOKEN, { messageId: 101, threadId: 101 })).toEqual([mockMessages[101], mockMessages[103]])
})

12
src/stores/chat.ts

@ -68,8 +68,8 @@ export const useChatStore = defineStore('chat', () => {
if (threadId) {
// FIXME temporary show all messages for given thread from all chat blocks - no behaviour change
const contextBlock = (messageId <= 0)
? chatBlocks[token][0]
const contextBlock = (messageId <= 0 || store.state.messagesStore.messages[token][messageId]?.threadId !== threadId)
? new Set([...chatBlocks[token].flatMap((set) => [...set])])
: chatBlocks[token].find((set) => set.has(messageId)) ?? chatBlocks[token][0]
return prepareMessagesList(token, contextBlock).filter((message) => {
return message.threadId === threadId
@ -135,8 +135,8 @@ export const useChatStore = defineStore('chat', () => {
return threadId
}
// FIXME temporary check all messages for given thread from all chat blocks
const contextBlock = (messageId <= 0)
? chatBlocks[token][0]
const contextBlock = (messageId <= 0 || store.state.messagesStore.messages[token][messageId]?.threadId !== threadId)
? new Set([...chatBlocks[token].flatMap((set) => [...set])])
: chatBlocks[token].find((set) => set.has(messageId)) ?? chatBlocks[token][0]
const threadMessagesList = prepareMessagesList(token, contextBlock).filter((message) => {
return message.threadId === threadId && Number.isInteger(message.id)
@ -163,8 +163,8 @@ export const useChatStore = defineStore('chat', () => {
if (threadId) {
// FIXME temporary check all messages for given thread from all chat blocks
const contextBlock = (messageId <= 0)
? chatBlocks[token][0]
const contextBlock = (messageId <= 0 || store.state.messagesStore.messages[token][messageId]?.threadId !== threadId)
? new Set([...chatBlocks[token].flatMap((set) => [...set])])
: chatBlocks[token].find((set) => set.has(messageId)) ?? chatBlocks[token][0]
const threadMessagesList = prepareMessagesList(token, contextBlock).filter((message) => {
return message.threadId === threadId && Number.isInteger(message.id)

Loading…
Cancel
Save