From 7d796c56c79d2d4e72f984d250e10f845f3a5231 Mon Sep 17 00:00:00 2001 From: gabriellsh Date: Tue, 4 Jul 2023 13:41:11 -0300 Subject: [PATCH 1/2] Run event every time a room opens --- apps/meteor/client/views/room/hooks/useOpenRoom.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/meteor/client/views/room/hooks/useOpenRoom.ts b/apps/meteor/client/views/room/hooks/useOpenRoom.ts index 8b9f5fcdf75ab..288767ccde532 100644 --- a/apps/meteor/client/views/room/hooks/useOpenRoom.ts +++ b/apps/meteor/client/views/room/hooks/useOpenRoom.ts @@ -1,6 +1,7 @@ import type { IRoom, RoomType } from '@rocket.chat/core-typings'; import { useMethod, useRoute, useSetting, useUser } from '@rocket.chat/ui-contexts'; import { useQuery } from '@tanstack/react-query'; +import { useRef } from 'react'; import { ChatRoom, ChatSubscription } from '../../../../app/models/client'; import { LegacyRoomManager } from '../../../../app/ui-utils/client'; @@ -20,6 +21,8 @@ export function useOpenRoom({ type, reference }: { type: RoomType; reference: st const openRoom = useMethod('openRoom'); const directRoute = useRoute('direct'); + const unsubscribeFromRoomOpenedEvent = useRef<() => void>(() => undefined); + return useQuery( // we need to add uid and username here because `user` is not loaded all at once (see UserProvider -> Meteor.user()) ['rooms', { type, reference }, { uid: user?._id, username: user?.username }] as const, @@ -63,14 +66,15 @@ export function useOpenRoom({ type, reference }: { type: RoomType; reference: st throw new RoomNotFoundError(undefined, { rid: room._id }); } + unsubscribeFromRoomOpenedEvent.current(); + unsubscribeFromRoomOpenedEvent.current = RoomManager.once('opened', () => fireGlobalEvent('room-opened', omit(room, 'usernames'))); + LegacyRoomManager.open({ typeName: type + reference, rid: room._id }); if (room._id === RoomManager.opened) { return { rid: room._id }; } - fireGlobalEvent('room-opened', omit(room, 'usernames')); - // update user's room subscription const sub = ChatSubscription.findOne({ rid: room._id }); if (sub && !sub.open) { From 8f3b18f97224720c3897df201386f9d2fe2af6aa Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Tue, 4 Jul 2023 13:44:36 -0300 Subject: [PATCH 2/2] add cs --- .changeset/hip-hornets-fail.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/hip-hornets-fail.md diff --git a/.changeset/hip-hornets-fail.md b/.changeset/hip-hornets-fail.md new file mode 100644 index 0000000000000..5bd0c0d15199b --- /dev/null +++ b/.changeset/hip-hornets-fail.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fixed `room-opened` event not dispatching when navigating cached rooms