From 3de18c882e559ead35b97f2bda50d52d0f608daf Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Tue, 14 Jan 2025 09:24:40 +0100 Subject: [PATCH 1/3] fix(types): add typings for EventBus Signed-off-by: Maksim Sukharev --- src/services/EventBus.ts | 43 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/services/EventBus.ts b/src/services/EventBus.ts index 6d9ac15fc7c..0c35c99c8f8 100644 --- a/src/services/EventBus.ts +++ b/src/services/EventBus.ts @@ -5,8 +5,49 @@ import mitt from 'mitt' import type { Emitter, EventType, Handler, WildcardHandler } from 'mitt' +import type { Route } from 'vue-router' -type Events = Record +import type { ChatMessage, Conversation, Participant } from '../types/index.ts' +import type { components } from '../types/openapi/openapi-full.ts' + +// List of used events across the app +type Events = Record & { + 'audio-player-ended': number, + 'conversations-received': { singleConversation: boolean }, + 'deleted-session-detected': void, + 'duplicate-session-detected': void, + 'editing-message': void, + 'editing-message-processing': { messageId: number, value: boolean }, + 'focus-chat-input': void, + 'focus-message': number, // TODO: listener method can receive ...[messageId, smooth, highlightAnimation] + 'forbidden-route': { error: string }, + 'joined-conversation': { token: string }, + 'message-height-changed': { heightDiff: number }, + 'poll-drafts-open': void, + 'poll-editor-open': number, + 'refresh-peer-list': void, + 'retry-message': number, + 'route-change': { from: Route, to: Route }, + 'scroll-chat-to-bottom': { smooth?: boolean, force?: boolean }, + 'should-refresh-chat-messages': void, + 'should-refresh-conversations': { token: string, properties: Partial } | { all: true } | void, + 'signaling-join-call': [string, number], + 'signaling-join-call-failed': [string, { meta: components['schemas']['OCSMeta'], data: { error: string } }], + 'signaling-join-room': [string], + 'signaling-participant-list-changed': void, + 'signaling-recording-status-changed': string, + 'signaling-servers-updated': { server: string, verify: boolean }[], + 'signaling-users-changed': [(Partial & ({ sessionId: string } | { nextcloudSessionId: string }))[]], + 'signaling-users-in-room': [{ sessionId: string, userId: string }[]], + 'smart-picker-open': void, + 'switch-to-conversation': { token: string }, + 'talk:poll-added': { token: string, message: ChatMessage }, + 'upload-discard': void, + 'upload-finished': void, + 'upload-start': void, +} + +// Extended types for mitt() library type GenericEventHandler = Handler | WildcardHandler type ExtendedEmitter = Emitter & { once(type: Key, handler: Handler): void From 15d24d0040366e346bfd3db008e20e6fc1460569 Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Tue, 14 Jan 2025 09:25:29 +0100 Subject: [PATCH 2/3] fix(recording): adjust event payload Signed-off-by: Maksim Sukharev --- src/init.js | 2 +- src/services/EventBus.ts | 2 +- src/utils/signaling.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/init.js b/src/init.js index cd8b5c01adc..318db19c6ca 100644 --- a/src/init.js +++ b/src/init.js @@ -57,7 +57,7 @@ EventBus.on('signaling-join-room', (payload) => { store.dispatch('updateLastJoinedConversationToken', token) }) -EventBus.on('signaling-recording-status-changed', (token, status) => { +EventBus.on('signaling-recording-status-changed', ([token, status]) => { store.dispatch('setConversationProperties', { token, properties: { callRecording: status } }) if (status !== CALL.RECORDING.FAILED) { diff --git a/src/services/EventBus.ts b/src/services/EventBus.ts index 0c35c99c8f8..d43f551c71b 100644 --- a/src/services/EventBus.ts +++ b/src/services/EventBus.ts @@ -35,7 +35,7 @@ type Events = Record & { 'signaling-join-call-failed': [string, { meta: components['schemas']['OCSMeta'], data: { error: string } }], 'signaling-join-room': [string], 'signaling-participant-list-changed': void, - 'signaling-recording-status-changed': string, + 'signaling-recording-status-changed': [string, number], 'signaling-servers-updated': { server: string, verify: boolean }[], 'signaling-users-changed': [(Partial & ({ sessionId: string } | { nextcloudSessionId: string }))[]], 'signaling-users-in-room': [{ sessionId: string, userId: string }[]], diff --git a/src/utils/signaling.js b/src/utils/signaling.js index ff146a6d202..44eb9197e18 100644 --- a/src/utils/signaling.js +++ b/src/utils/signaling.js @@ -1417,7 +1417,7 @@ Signaling.Standalone.prototype.processRoomMessageEvent = function(token, data) { EventBus.emit('should-refresh-chat-messages') break case 'recording': - EventBus.emit('signaling-recording-status-changed', token, data.recording.status) + EventBus.emit('signaling-recording-status-changed', [token, data.recording.status]) break default: console.error('Unknown room message event', data) From 2de55d195be38bba279e6b1fc4f3146c381754d9 Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Tue, 14 Jan 2025 09:32:03 +0100 Subject: [PATCH 3/3] fix(poll): adjust event payload Signed-off-by: Maksim Sukharev --- src/components/PollViewer/PollDraftHandler.vue | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/PollViewer/PollDraftHandler.vue b/src/components/PollViewer/PollDraftHandler.vue index bec69f26fe7..fecae58c618 100644 --- a/src/components/PollViewer/PollDraftHandler.vue +++ b/src/components/PollViewer/PollDraftHandler.vue @@ -48,7 +48,6 @@ import NcDialog from '@nextcloud/vue/dist/Components/NcDialog.js' import EmptyView from '../EmptyView.vue' import Poll from '../MessagesList/MessagesGroup/Message/MessagePart/Poll.vue' -import { useStore } from '../../composables/useStore.js' import { EventBus } from '../../services/EventBus.ts' import { usePollsStore } from '../../stores/polls.ts' @@ -60,7 +59,6 @@ const emit = defineEmits<{ (event: 'close'): void, }>() -const store = useStore() const pollsStore = usePollsStore() /** * Receive poll drafts for the current conversation as owner/moderator @@ -72,7 +70,7 @@ const pollDrafts = computed(() => pollsStore.getDrafts(props.token)) * Opens poll editor pre-filled from the draft * @param id poll draft ID */ -function openPollEditor(id) { +function openPollEditor(id: number) { EventBus.emit('poll-editor-open', id) }