From ec9e0935a9ad08a03a9cf88de9b0be3fdbac113e Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Tue, 30 Jul 2024 14:11:52 -0300 Subject: [PATCH 01/18] fix: Mark as unread not working --- .../client/actionButton.ts | 51 ------------------- .../message-mark-as-unread/client/index.ts | 1 - apps/meteor/client/importPackages.ts | 1 - .../RoomList/SideBarItemTemplateWithData.tsx | 2 +- apps/meteor/client/sidebar/RoomMenu.tsx | 14 +++-- .../RoomList/SideBarItemTemplateWithData.tsx | 2 +- apps/meteor/client/sidebarv2/RoomMenu.tsx | 10 ++-- 7 files changed, 18 insertions(+), 63 deletions(-) delete mode 100644 apps/meteor/app/message-mark-as-unread/client/actionButton.ts delete mode 100644 apps/meteor/app/message-mark-as-unread/client/index.ts diff --git a/apps/meteor/app/message-mark-as-unread/client/actionButton.ts b/apps/meteor/app/message-mark-as-unread/client/actionButton.ts deleted file mode 100644 index fc4a9d80c43c..000000000000 --- a/apps/meteor/app/message-mark-as-unread/client/actionButton.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Meteor } from 'meteor/meteor'; - -import { roomCoordinator } from '../../../client/lib/rooms/roomCoordinator'; -import { dispatchToastMessage } from '../../../client/lib/toast'; -import { messageArgs } from '../../../client/lib/utils/messageArgs'; -import { router } from '../../../client/providers/RouterProvider'; -import { ChatSubscription } from '../../models/client'; -import { LegacyRoomManager, MessageAction } from '../../ui-utils/client'; -import { sdk } from '../../utils/client/lib/SDKClient'; - -Meteor.startup(() => { - MessageAction.addButton({ - id: 'mark-message-as-unread', - icon: 'flag', - label: 'Mark_unread', - context: ['message', 'message-mobile', 'threads'], - type: 'interaction', - async action(_, props) { - const { message = messageArgs(this).msg } = props; - - try { - await sdk.call('unreadMessages', message); - const subscription = ChatSubscription.findOne({ - rid: message.rid, - }); - - if (subscription == null) { - return; - } - await LegacyRoomManager.close(subscription.t + subscription.name); - return router.navigate('/home'); - } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); - } - }, - condition({ message, user, room }) { - const isLivechatRoom = roomCoordinator.isLivechatRoom(room.t); - if (isLivechatRoom) { - return false; - } - - if (!user) { - return false; - } - - return message.u._id !== user._id; - }, - order: 4, - group: 'menu', - }); -}); diff --git a/apps/meteor/app/message-mark-as-unread/client/index.ts b/apps/meteor/app/message-mark-as-unread/client/index.ts deleted file mode 100644 index 4a15cde3d04c..000000000000 --- a/apps/meteor/app/message-mark-as-unread/client/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './actionButton'; diff --git a/apps/meteor/client/importPackages.ts b/apps/meteor/client/importPackages.ts index ddc173e63116..9bb1244562a9 100644 --- a/apps/meteor/client/importPackages.ts +++ b/apps/meteor/client/importPackages.ts @@ -16,7 +16,6 @@ import '../app/iframe-login/client'; import '../app/license/client'; import '../app/lib/client'; import '../app/livechat-enterprise/client'; -import '../app/message-mark-as-unread/client'; import '../app/nextcloud/client'; import '../app/notifications/client'; import '../app/otr/client'; diff --git a/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx b/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx index cc7cdfbe7761..b86e718fd1ce 100644 --- a/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx +++ b/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx @@ -205,7 +205,7 @@ function SideBarItemTemplateWithData({ threadUnread={threadUnread} rid={rid} unread={!!unread} - roomOpen={false} + roomOpen={selected} type={type} cl={cl} name={title} diff --git a/apps/meteor/client/sidebar/RoomMenu.tsx b/apps/meteor/client/sidebar/RoomMenu.tsx index 06b1352d2803..7cb07cd4805f 100644 --- a/apps/meteor/client/sidebar/RoomMenu.tsx +++ b/apps/meteor/client/sidebar/RoomMenu.tsx @@ -1,6 +1,6 @@ import type { RoomType } from '@rocket.chat/core-typings'; import { Option, Menu } from '@rocket.chat/fuselage'; -import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; +import { useEffectEvent, useMutableCallback } from '@rocket.chat/fuselage-hooks'; import type { TranslationKey, Fields } from '@rocket.chat/ui-contexts'; import { useRouter, @@ -171,19 +171,23 @@ const RoomMenu = ({ ); }); - const handleToggleRead = useMutableCallback(async () => { + const handleToggleRead = useEffectEvent(async () => { try { if (isUnread) { await readMessages({ rid, readThreads: true }); return; } - await unreadMessages(undefined, rid); + if (subscription == null) { return; } - LegacyRoomManager.close(subscription.t + subscription.name); - router.navigate('/home'); + if (roomOpen) { + router.navigate('/home'); + } + + await unreadMessages(undefined, rid); + LegacyRoomManager.close(subscription.t + subscription.name); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } diff --git a/apps/meteor/client/sidebarv2/RoomList/SideBarItemTemplateWithData.tsx b/apps/meteor/client/sidebarv2/RoomList/SideBarItemTemplateWithData.tsx index 4eaba8cc37f0..72fe083f84ce 100644 --- a/apps/meteor/client/sidebarv2/RoomList/SideBarItemTemplateWithData.tsx +++ b/apps/meteor/client/sidebarv2/RoomList/SideBarItemTemplateWithData.tsx @@ -205,7 +205,7 @@ const SideBarItemTemplateWithData = ({ threadUnread={threadUnread} rid={rid} unread={!!unread} - roomOpen={false} + roomOpen={selected} type={type} cl={cl} name={title} diff --git a/apps/meteor/client/sidebarv2/RoomMenu.tsx b/apps/meteor/client/sidebarv2/RoomMenu.tsx index e88225df40ca..3f839d0288fd 100644 --- a/apps/meteor/client/sidebarv2/RoomMenu.tsx +++ b/apps/meteor/client/sidebarv2/RoomMenu.tsx @@ -177,13 +177,17 @@ const RoomMenu = ({ await readMessages({ rid, readThreads: true }); return; } - await unreadMessages(undefined, rid); + if (subscription == null) { return; } - LegacyRoomManager.close(subscription.t + subscription.name); - router.navigate('/home'); + if (roomOpen) { + router.navigate('/home'); + } + + await unreadMessages(undefined, rid); + LegacyRoomManager.close(subscription.t + subscription.name); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } From f8c672f5f07ebe58615ef009dbab4186d43ad1ac Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Tue, 30 Jul 2024 14:18:05 -0300 Subject: [PATCH 02/18] Create hot-balloons-travel.md --- .changeset/hot-balloons-travel.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/hot-balloons-travel.md diff --git a/.changeset/hot-balloons-travel.md b/.changeset/hot-balloons-travel.md new file mode 100644 index 000000000000..f4b2a0ca91c1 --- /dev/null +++ b/.changeset/hot-balloons-travel.md @@ -0,0 +1,6 @@ +--- +"@rocket.chat/meteor": patch +--- + +Fixed issue where when you marked a room as read and you were part of it, sometimes it would mark it as read right after +Fixed issue where you were redirected to /home even if you don't have the room open From e1edd8452c19c8b143f9a95118b8d5d87a96285f Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Wed, 31 Jul 2024 17:10:02 -0300 Subject: [PATCH 03/18] test: Mark as unread not working --- .../meteor/tests/e2e/channels-sidebar.spec.ts | 38 +++++++++++++++++++ .../page-objects/fragments/home-sidenav.ts | 8 ++++ 2 files changed, 46 insertions(+) create mode 100644 apps/meteor/tests/e2e/channels-sidebar.spec.ts diff --git a/apps/meteor/tests/e2e/channels-sidebar.spec.ts b/apps/meteor/tests/e2e/channels-sidebar.spec.ts new file mode 100644 index 000000000000..6e7202e57c83 --- /dev/null +++ b/apps/meteor/tests/e2e/channels-sidebar.spec.ts @@ -0,0 +1,38 @@ +import { Users } from './fixtures/userStates'; +import { HomeChannel } from './page-objects'; +import { createTargetChannel } from './utils'; +import { test, expect } from './utils/test'; + +test.use({ storageState: Users.admin.state }); + +test.describe.serial('Channels - Sidebar Actions', () => { + let poHomeChannel: HomeChannel; + let targetChannel: string; + + test.beforeEach(async ({ page, api }) => { + poHomeChannel = new HomeChannel(page); + await page.emulateMedia({ reducedMotion: 'reduce' }); + + targetChannel = await createTargetChannel(api); + + await page.goto('/home'); + }); + + test.afterEach(async ({ api }) => { + await api.post('/channels.delete', { roomName: targetChannel }); + }); + + test('should not mark empty room as unread', async () => { + // focus should be on the next item + const sidebarItem = await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); + await expect(sidebarItem.locator('.rcx-badge')).not.toBeVisible(); + }); + + test('should mark a populated room as unread', async () => { + // focus should be on the next item + await poHomeChannel.sidenav.openChat(targetChannel); + await poHomeChannel.content.sendMessage('this is a message for reply'); + const sidebarItem = await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); + await expect(sidebarItem.locator('.rcx-badge')).toBeVisible(); + }); +}); diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index f8002ed450f5..259b9611399b 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -68,6 +68,14 @@ export class HomeSidenav { return this.page.locator(`[data-qa="sidebar-item"][aria-label="${name}"]`); } + async selectMarkAsUnread(name: string) { + const sidebarItem = this.getSidebarItemByName(name); + await sidebarItem.focus(); + await sidebarItem.locator('.rcx-sidebar-item__menu').click(); + await this.page.getByRole('option', { name: 'Mark Unread' }).click(); + return sidebarItem; + } + async selectPriority(name: string, priority: string) { const sidebarItem = this.getSidebarItemByName(name); await sidebarItem.focus(); From 15003142681a981496298daa6a92ad70d05fa517 Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Thu, 1 Aug 2024 10:29:03 -0300 Subject: [PATCH 04/18] Fix order --- apps/meteor/client/sidebar/RoomMenu.tsx | 3 ++- apps/meteor/client/sidebarv2/RoomMenu.tsx | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/meteor/client/sidebar/RoomMenu.tsx b/apps/meteor/client/sidebar/RoomMenu.tsx index 7cb07cd4805f..5197a063b24e 100644 --- a/apps/meteor/client/sidebar/RoomMenu.tsx +++ b/apps/meteor/client/sidebar/RoomMenu.tsx @@ -182,12 +182,13 @@ const RoomMenu = ({ return; } + LegacyRoomManager.close(subscription.t + subscription.name); + if (roomOpen) { router.navigate('/home'); } await unreadMessages(undefined, rid); - LegacyRoomManager.close(subscription.t + subscription.name); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } diff --git a/apps/meteor/client/sidebarv2/RoomMenu.tsx b/apps/meteor/client/sidebarv2/RoomMenu.tsx index 3f839d0288fd..8d1f114da61c 100644 --- a/apps/meteor/client/sidebarv2/RoomMenu.tsx +++ b/apps/meteor/client/sidebarv2/RoomMenu.tsx @@ -182,12 +182,13 @@ const RoomMenu = ({ return; } + LegacyRoomManager.close(subscription.t + subscription.name); + if (roomOpen) { router.navigate('/home'); } await unreadMessages(undefined, rid); - LegacyRoomManager.close(subscription.t + subscription.name); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } From 39655aac38bcdbb92b1e9ca7419687f83e2b61c8 Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Fri, 2 Aug 2024 15:00:37 -0300 Subject: [PATCH 05/18] revert package removal --- .../client/actionButton.ts | 51 +++++++++++++++++++ .../message-mark-as-unread/client/index.ts | 1 + apps/meteor/client/importPackages.ts | 1 + 3 files changed, 53 insertions(+) create mode 100644 apps/meteor/app/message-mark-as-unread/client/actionButton.ts create mode 100644 apps/meteor/app/message-mark-as-unread/client/index.ts diff --git a/apps/meteor/app/message-mark-as-unread/client/actionButton.ts b/apps/meteor/app/message-mark-as-unread/client/actionButton.ts new file mode 100644 index 000000000000..fc4a9d80c43c --- /dev/null +++ b/apps/meteor/app/message-mark-as-unread/client/actionButton.ts @@ -0,0 +1,51 @@ +import { Meteor } from 'meteor/meteor'; + +import { roomCoordinator } from '../../../client/lib/rooms/roomCoordinator'; +import { dispatchToastMessage } from '../../../client/lib/toast'; +import { messageArgs } from '../../../client/lib/utils/messageArgs'; +import { router } from '../../../client/providers/RouterProvider'; +import { ChatSubscription } from '../../models/client'; +import { LegacyRoomManager, MessageAction } from '../../ui-utils/client'; +import { sdk } from '../../utils/client/lib/SDKClient'; + +Meteor.startup(() => { + MessageAction.addButton({ + id: 'mark-message-as-unread', + icon: 'flag', + label: 'Mark_unread', + context: ['message', 'message-mobile', 'threads'], + type: 'interaction', + async action(_, props) { + const { message = messageArgs(this).msg } = props; + + try { + await sdk.call('unreadMessages', message); + const subscription = ChatSubscription.findOne({ + rid: message.rid, + }); + + if (subscription == null) { + return; + } + await LegacyRoomManager.close(subscription.t + subscription.name); + return router.navigate('/home'); + } catch (error) { + dispatchToastMessage({ type: 'error', message: error }); + } + }, + condition({ message, user, room }) { + const isLivechatRoom = roomCoordinator.isLivechatRoom(room.t); + if (isLivechatRoom) { + return false; + } + + if (!user) { + return false; + } + + return message.u._id !== user._id; + }, + order: 4, + group: 'menu', + }); +}); diff --git a/apps/meteor/app/message-mark-as-unread/client/index.ts b/apps/meteor/app/message-mark-as-unread/client/index.ts new file mode 100644 index 000000000000..4a15cde3d04c --- /dev/null +++ b/apps/meteor/app/message-mark-as-unread/client/index.ts @@ -0,0 +1 @@ +import './actionButton'; diff --git a/apps/meteor/client/importPackages.ts b/apps/meteor/client/importPackages.ts index 9bb1244562a9..ddc173e63116 100644 --- a/apps/meteor/client/importPackages.ts +++ b/apps/meteor/client/importPackages.ts @@ -16,6 +16,7 @@ import '../app/iframe-login/client'; import '../app/license/client'; import '../app/lib/client'; import '../app/livechat-enterprise/client'; +import '../app/message-mark-as-unread/client'; import '../app/nextcloud/client'; import '../app/notifications/client'; import '../app/otr/client'; From 6036d882eb1dbdcf5335c38694a4639f7f0e7845 Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Fri, 2 Aug 2024 15:06:03 -0300 Subject: [PATCH 06/18] revert rerouting --- apps/meteor/client/sidebar/RoomMenu.tsx | 4 +--- apps/meteor/client/sidebarv2/RoomMenu.tsx | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/apps/meteor/client/sidebar/RoomMenu.tsx b/apps/meteor/client/sidebar/RoomMenu.tsx index 5197a063b24e..53881baa64db 100644 --- a/apps/meteor/client/sidebar/RoomMenu.tsx +++ b/apps/meteor/client/sidebar/RoomMenu.tsx @@ -184,9 +184,7 @@ const RoomMenu = ({ LegacyRoomManager.close(subscription.t + subscription.name); - if (roomOpen) { - router.navigate('/home'); - } + router.navigate('/home'); await unreadMessages(undefined, rid); } catch (error) { diff --git a/apps/meteor/client/sidebarv2/RoomMenu.tsx b/apps/meteor/client/sidebarv2/RoomMenu.tsx index 8d1f114da61c..a7a7295485a6 100644 --- a/apps/meteor/client/sidebarv2/RoomMenu.tsx +++ b/apps/meteor/client/sidebarv2/RoomMenu.tsx @@ -184,9 +184,7 @@ const RoomMenu = ({ LegacyRoomManager.close(subscription.t + subscription.name); - if (roomOpen) { - router.navigate('/home'); - } + router.navigate('/home'); await unreadMessages(undefined, rid); } catch (error) { From d974788bf56f9f928185ef3ebbec6b2bde45aa5c Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Fri, 2 Aug 2024 15:43:45 -0300 Subject: [PATCH 07/18] more tests --- ...ls-sidebar.spec.ts => mark-unread.spec.ts} | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) rename apps/meteor/tests/e2e/{channels-sidebar.spec.ts => mark-unread.spec.ts} (51%) diff --git a/apps/meteor/tests/e2e/channels-sidebar.spec.ts b/apps/meteor/tests/e2e/mark-unread.spec.ts similarity index 51% rename from apps/meteor/tests/e2e/channels-sidebar.spec.ts rename to apps/meteor/tests/e2e/mark-unread.spec.ts index 6e7202e57c83..18898f6ab884 100644 --- a/apps/meteor/tests/e2e/channels-sidebar.spec.ts +++ b/apps/meteor/tests/e2e/mark-unread.spec.ts @@ -1,3 +1,4 @@ +import { createAuxContext } from './fixtures/createAuxContext'; import { Users } from './fixtures/userStates'; import { HomeChannel } from './page-objects'; import { createTargetChannel } from './utils'; @@ -5,7 +6,7 @@ import { test, expect } from './utils/test'; test.use({ storageState: Users.admin.state }); -test.describe.serial('Channels - Sidebar Actions', () => { +test.describe('Mark Unread - Sidebar Action', () => { let poHomeChannel: HomeChannel; let targetChannel: string; @@ -13,7 +14,7 @@ test.describe.serial('Channels - Sidebar Actions', () => { poHomeChannel = new HomeChannel(page); await page.emulateMedia({ reducedMotion: 'reduce' }); - targetChannel = await createTargetChannel(api); + targetChannel = await createTargetChannel(api, { members: ['user2'] }); await page.goto('/home'); }); @@ -23,16 +24,39 @@ test.describe.serial('Channels - Sidebar Actions', () => { }); test('should not mark empty room as unread', async () => { - // focus should be on the next item const sidebarItem = await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); await expect(sidebarItem.locator('.rcx-badge')).not.toBeVisible(); }); test('should mark a populated room as unread', async () => { - // focus should be on the next item await poHomeChannel.sidenav.openChat(targetChannel); await poHomeChannel.content.sendMessage('this is a message for reply'); const sidebarItem = await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); await expect(sidebarItem.locator('.rcx-badge')).toBeVisible(); }); + + test.describe('Mark Unread - Message Action', () => { + let poHomeChannelUser2: HomeChannel; + + test.beforeEach(async ({ browser }) => { + const { page: user2Page } = await createAuxContext(browser, Users.user2); + poHomeChannelUser2 = new HomeChannel(user2Page); + + await poHomeChannelUser2.sidenav.openChat(targetChannel); + await poHomeChannelUser2.content.sendMessage('this is a message for reply'); + }); + + test('should mark a populated room as unread', async () => { + await poHomeChannel.sidenav.openChat(targetChannel); + + await poHomeChannel.content.openLastMessageMenu(); + await poHomeChannel.page.locator('role=menuitem[name="Mark Unread"]').click(); + const sidebarItem = poHomeChannel.sidenav.getSidebarItemByName(targetChannel); + await expect(sidebarItem.locator('.rcx-badge')).toBeVisible(); + }); + + test.afterAll(async () => { + await poHomeChannelUser2.page.close(); + }); + }); }); From 68b55c3935b4dd41338d6ebd05bf0d498ee82b67 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Fri, 2 Aug 2024 15:45:47 -0300 Subject: [PATCH 08/18] Update hot-balloons-travel.md --- .changeset/hot-balloons-travel.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.changeset/hot-balloons-travel.md b/.changeset/hot-balloons-travel.md index f4b2a0ca91c1..f95a60512bdb 100644 --- a/.changeset/hot-balloons-travel.md +++ b/.changeset/hot-balloons-travel.md @@ -3,4 +3,3 @@ --- Fixed issue where when you marked a room as read and you were part of it, sometimes it would mark it as read right after -Fixed issue where you were redirected to /home even if you don't have the room open From 44f6da68a896e60f63854418a02b4f0f01a976c0 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Fri, 2 Aug 2024 15:51:29 -0300 Subject: [PATCH 09/18] Update mark-unread.spec.ts --- apps/meteor/tests/e2e/mark-unread.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/tests/e2e/mark-unread.spec.ts b/apps/meteor/tests/e2e/mark-unread.spec.ts index 18898f6ab884..19bc8355ff26 100644 --- a/apps/meteor/tests/e2e/mark-unread.spec.ts +++ b/apps/meteor/tests/e2e/mark-unread.spec.ts @@ -55,7 +55,7 @@ test.describe('Mark Unread - Sidebar Action', () => { await expect(sidebarItem.locator('.rcx-badge')).toBeVisible(); }); - test.afterAll(async () => { + test.afterEach(async () => { await poHomeChannelUser2.page.close(); }); }); From 617d0aa8aeefa23e303c6c485207aae00a2f91c8 Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Mon, 5 Aug 2024 14:44:27 -0300 Subject: [PATCH 10/18] reviews --- apps/meteor/tests/e2e/mark-unread.spec.ts | 14 ++++++++------ .../e2e/page-objects/fragments/home-sidenav.ts | 5 ++++- apps/meteor/tests/e2e/page-objects/home-channel.ts | 4 ++++ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/apps/meteor/tests/e2e/mark-unread.spec.ts b/apps/meteor/tests/e2e/mark-unread.spec.ts index 19bc8355ff26..a1dc2d6aa477 100644 --- a/apps/meteor/tests/e2e/mark-unread.spec.ts +++ b/apps/meteor/tests/e2e/mark-unread.spec.ts @@ -24,15 +24,17 @@ test.describe('Mark Unread - Sidebar Action', () => { }); test('should not mark empty room as unread', async () => { - const sidebarItem = await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); - await expect(sidebarItem.locator('.rcx-badge')).not.toBeVisible(); + const sidebarItem = poHomeChannel.sidenav.getSidebarItemByName(targetChannel); + await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); + await expect(poHomeChannel.sidenav.getChannelBadge(sidebarItem)).not.toBeVisible(); }); test('should mark a populated room as unread', async () => { await poHomeChannel.sidenav.openChat(targetChannel); await poHomeChannel.content.sendMessage('this is a message for reply'); - const sidebarItem = await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); - await expect(sidebarItem.locator('.rcx-badge')).toBeVisible(); + const sidebarItem = poHomeChannel.sidenav.getSidebarItemByName(targetChannel); + await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); + await expect(poHomeChannel.sidenav.getChannelBadge(sidebarItem)).toBeVisible(); }); test.describe('Mark Unread - Message Action', () => { @@ -50,9 +52,9 @@ test.describe('Mark Unread - Sidebar Action', () => { await poHomeChannel.sidenav.openChat(targetChannel); await poHomeChannel.content.openLastMessageMenu(); - await poHomeChannel.page.locator('role=menuitem[name="Mark Unread"]').click(); + await poHomeChannel.markUnread.click(); const sidebarItem = poHomeChannel.sidenav.getSidebarItemByName(targetChannel); - await expect(sidebarItem.locator('.rcx-badge')).toBeVisible(); + await expect(poHomeChannel.sidenav.getChannelBadge(sidebarItem)).toBeVisible(); }); test.afterEach(async () => { diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index 259b9611399b..6612a6181fdc 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -73,7 +73,6 @@ export class HomeSidenav { await sidebarItem.focus(); await sidebarItem.locator('.rcx-sidebar-item__menu').click(); await this.page.getByRole('option', { name: 'Mark Unread' }).click(); - return sidebarItem; } async selectPriority(name: string, priority: string) { @@ -165,4 +164,8 @@ export class HomeSidenav { await this.checkboxEncryption.click(); await this.btnCreate.click(); } + + getChannelBadge(sidebarItem: Locator): Locator { + return sidebarItem.locator('.rcx-badge'); + } } diff --git a/apps/meteor/tests/e2e/page-objects/home-channel.ts b/apps/meteor/tests/e2e/page-objects/home-channel.ts index 7b3c0d093ddc..dd7fe0fe5708 100644 --- a/apps/meteor/tests/e2e/page-objects/home-channel.ts +++ b/apps/meteor/tests/e2e/page-objects/home-channel.ts @@ -72,4 +72,8 @@ export class HomeChannel { getSystemMessageByText(text: string): Locator { return this.page.locator('[aria-roledescription="system message"]', { hasText: text }); } + + get markUnread(): Locator { + return this.page.locator('role=menuitem[name="Mark Unread"]'); + } } From 088c96716c4455efcf77bff09d3bf1f61cacc945 Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Thu, 29 Aug 2024 16:28:22 -0300 Subject: [PATCH 11/18] invalidate sidebar query --- apps/meteor/client/sidebar/RoomMenu.tsx | 10 ++++++++-- apps/meteor/client/sidebarv2/RoomMenu.tsx | 9 ++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/meteor/client/sidebar/RoomMenu.tsx b/apps/meteor/client/sidebar/RoomMenu.tsx index 53881baa64db..e4df6c64d309 100644 --- a/apps/meteor/client/sidebar/RoomMenu.tsx +++ b/apps/meteor/client/sidebar/RoomMenu.tsx @@ -13,6 +13,7 @@ import { useTranslation, useEndpoint, } from '@rocket.chat/ui-contexts'; +import { useQueryClient } from '@tanstack/react-query'; import type { ReactElement } from 'react'; import React, { memo, useMemo } from 'react'; @@ -100,6 +101,8 @@ const RoomMenu = ({ const isOmnichannelRoom = type === 'l'; const prioritiesMenu = useOmnichannelPrioritiesMenu(rid); + const queryClient = useQueryClient(); + const canLeave = ((): boolean => { if (type === 'c' && !canLeaveChannel) { return false; @@ -173,6 +176,8 @@ const RoomMenu = ({ const handleToggleRead = useEffectEvent(async () => { try { + queryClient.invalidateQueries(['sidebar/search/spotlight']); + if (isUnread) { await readMessages({ rid, readThreads: true }); return; @@ -184,8 +189,9 @@ const RoomMenu = ({ LegacyRoomManager.close(subscription.t + subscription.name); - router.navigate('/home'); - + if (roomOpen) { + router.navigate('/home'); + } await unreadMessages(undefined, rid); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); diff --git a/apps/meteor/client/sidebarv2/RoomMenu.tsx b/apps/meteor/client/sidebarv2/RoomMenu.tsx index a7a7295485a6..1b8f2d9392c6 100644 --- a/apps/meteor/client/sidebarv2/RoomMenu.tsx +++ b/apps/meteor/client/sidebarv2/RoomMenu.tsx @@ -13,6 +13,7 @@ import { useTranslation, useEndpoint, } from '@rocket.chat/ui-contexts'; +import { useQueryClient } from '@tanstack/react-query'; import type { ReactElement } from 'react'; import React, { memo, useMemo } from 'react'; @@ -100,6 +101,8 @@ const RoomMenu = ({ const isOmnichannelRoom = type === 'l'; const prioritiesMenu = useOmnichannelPrioritiesMenu(rid); + const queryClient = useQueryClient(); + const canLeave = ((): boolean => { if (type === 'c' && !canLeaveChannel) { return false; @@ -173,6 +176,8 @@ const RoomMenu = ({ const handleToggleRead = useEffectEvent(async () => { try { + queryClient.invalidateQueries(['sidebar/search/spotlight']); + if (isUnread) { await readMessages({ rid, readThreads: true }); return; @@ -184,7 +189,9 @@ const RoomMenu = ({ LegacyRoomManager.close(subscription.t + subscription.name); - router.navigate('/home'); + if (roomOpen) { + router.navigate('/home'); + } await unreadMessages(undefined, rid); } catch (error) { From 28216090995441506be6123a00a78cb2894c0b29 Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Thu, 29 Aug 2024 17:17:41 -0300 Subject: [PATCH 12/18] test --- apps/meteor/tests/e2e/mark-unread.spec.ts | 8 ++++++++ .../tests/e2e/page-objects/fragments/home-sidenav.ts | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/apps/meteor/tests/e2e/mark-unread.spec.ts b/apps/meteor/tests/e2e/mark-unread.spec.ts index a1dc2d6aa477..602720b34f70 100644 --- a/apps/meteor/tests/e2e/mark-unread.spec.ts +++ b/apps/meteor/tests/e2e/mark-unread.spec.ts @@ -37,6 +37,14 @@ test.describe('Mark Unread - Sidebar Action', () => { await expect(poHomeChannel.sidenav.getChannelBadge(sidebarItem)).toBeVisible(); }); + test('should mark a populated room as unread - search', async () => { + await poHomeChannel.sidenav.openChat(targetChannel); + await poHomeChannel.content.sendMessage('this is a message for reply'); + await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); + await poHomeChannel.sidenav.searchChat(targetChannel); + await expect(poHomeChannel.sidenav.getSearchChannelBadge(targetChannel)).toBeVisible(); + }); + test.describe('Mark Unread - Message Action', () => { let poHomeChannelUser2: HomeChannel; diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index 98e21fff1074..b2d592026a83 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -122,6 +122,12 @@ export class HomeSidenav { await this.waitForChannel(); } + async searchChat(name: string): Promise { + await this.page.locator('role=navigation >> role=button[name=Search]').click(); + await this.page.locator('role=search >> role=searchbox').fill(name); + await expect(this.page.locator(`[data-qa="sidebar-item"][aria-label="${name}"]`).first()).toBeVisible(); + } + async waitForChannel(): Promise { await this.page.locator('role=main').waitFor(); await this.page.locator('role=main >> role=heading[level=1]').waitFor(); @@ -173,4 +179,8 @@ export class HomeSidenav { getChannelBadge(sidebarItem: Locator): Locator { return sidebarItem.locator('.rcx-badge'); } + + getSearchChannelBadge(name: string): Locator { + return this.page.locator(`[data-qa="sidebar-item"][aria-label="${name}"]`).first().locator('.rcx-badge'); + } } From 6450e28d63b28bb89c57aef60e91bbac9dc740e6 Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Thu, 29 Aug 2024 17:19:49 -0300 Subject: [PATCH 13/18] reveiew --- apps/meteor/client/sidebar/RoomMenu.tsx | 5 ++--- apps/meteor/client/sidebarv2/RoomMenu.tsx | 4 +--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/apps/meteor/client/sidebar/RoomMenu.tsx b/apps/meteor/client/sidebar/RoomMenu.tsx index e4df6c64d309..433335cc8d05 100644 --- a/apps/meteor/client/sidebar/RoomMenu.tsx +++ b/apps/meteor/client/sidebar/RoomMenu.tsx @@ -189,9 +189,8 @@ const RoomMenu = ({ LegacyRoomManager.close(subscription.t + subscription.name); - if (roomOpen) { - router.navigate('/home'); - } + router.navigate('/home'); + await unreadMessages(undefined, rid); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); diff --git a/apps/meteor/client/sidebarv2/RoomMenu.tsx b/apps/meteor/client/sidebarv2/RoomMenu.tsx index 1b8f2d9392c6..aac68b9ef79e 100644 --- a/apps/meteor/client/sidebarv2/RoomMenu.tsx +++ b/apps/meteor/client/sidebarv2/RoomMenu.tsx @@ -189,9 +189,7 @@ const RoomMenu = ({ LegacyRoomManager.close(subscription.t + subscription.name); - if (roomOpen) { - router.navigate('/home'); - } + router.navigate('/home'); await unreadMessages(undefined, rid); } catch (error) { From e5c54dbce0496857ad45c5c38b5a7e81104d130b Mon Sep 17 00:00:00 2001 From: dougfabris Date: Mon, 2 Sep 2024 18:46:03 -0300 Subject: [PATCH 14/18] fix: review --- .../RoomList/SideBarItemTemplateWithData.tsx | 2 +- apps/meteor/tests/e2e/mark-unread.spec.ts | 58 +++++++++---------- .../page-objects/fragments/home-sidenav.ts | 13 ++--- 3 files changed, 33 insertions(+), 40 deletions(-) diff --git a/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx b/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx index b86e718fd1ce..80dfce550742 100644 --- a/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx +++ b/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx @@ -167,7 +167,7 @@ function SideBarItemTemplateWithData({ const badges = ( {showBadge && isUnread && ( - + {unread + tunread?.length} )} diff --git a/apps/meteor/tests/e2e/mark-unread.spec.ts b/apps/meteor/tests/e2e/mark-unread.spec.ts index 602720b34f70..50b55ea4cc94 100644 --- a/apps/meteor/tests/e2e/mark-unread.spec.ts +++ b/apps/meteor/tests/e2e/mark-unread.spec.ts @@ -6,16 +6,15 @@ import { test, expect } from './utils/test'; test.use({ storageState: Users.admin.state }); -test.describe('Mark Unread - Sidebar Action', () => { +test.describe.serial('mark-unread', () => { let poHomeChannel: HomeChannel; let targetChannel: string; test.beforeEach(async ({ page, api }) => { poHomeChannel = new HomeChannel(page); - await page.emulateMedia({ reducedMotion: 'reduce' }); - targetChannel = await createTargetChannel(api, { members: ['user2'] }); + await page.emulateMedia({ reducedMotion: 'reduce' }); await page.goto('/home'); }); @@ -23,50 +22,49 @@ test.describe('Mark Unread - Sidebar Action', () => { await api.post('/channels.delete', { roomName: targetChannel }); }); - test('should not mark empty room as unread', async () => { - const sidebarItem = poHomeChannel.sidenav.getSidebarItemByName(targetChannel); - await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); - await expect(poHomeChannel.sidenav.getChannelBadge(sidebarItem)).not.toBeVisible(); - }); + test.describe('Mark Unread - Sidebar Action', () => { + test('should not mark empty room as unread', async () => { + await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); - test('should mark a populated room as unread', async () => { - await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.content.sendMessage('this is a message for reply'); - const sidebarItem = poHomeChannel.sidenav.getSidebarItemByName(targetChannel); - await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); - await expect(poHomeChannel.sidenav.getChannelBadge(sidebarItem)).toBeVisible(); - }); + await expect(poHomeChannel.sidenav.getRoomBadge(targetChannel)).not.toBeVisible(); + }); + + test('should mark a populated room as unread', async () => { + await poHomeChannel.sidenav.openChat(targetChannel); + await poHomeChannel.content.sendMessage('this is a message for reply'); + await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); - test('should mark a populated room as unread - search', async () => { - await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.content.sendMessage('this is a message for reply'); - await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); - await poHomeChannel.sidenav.searchChat(targetChannel); - await expect(poHomeChannel.sidenav.getSearchChannelBadge(targetChannel)).toBeVisible(); + await expect(poHomeChannel.sidenav.getRoomBadge(targetChannel)).toBeVisible(); + }); + + test('should mark a populated room as unread - search', async () => { + await poHomeChannel.sidenav.openChat(targetChannel); + await poHomeChannel.content.sendMessage('this is a message for reply'); + await poHomeChannel.sidenav.selectMarkAsUnread(targetChannel); + await poHomeChannel.sidenav.searchRoom(targetChannel); + + await expect(poHomeChannel.sidenav.getSearchChannelBadge(targetChannel)).toBeVisible(); + }); }); test.describe('Mark Unread - Message Action', () => { let poHomeChannelUser2: HomeChannel; - test.beforeEach(async ({ browser }) => { + test('should mark a populated room as unread', async ({ page, browser }) => { const { page: user2Page } = await createAuxContext(browser, Users.user2); poHomeChannelUser2 = new HomeChannel(user2Page); await poHomeChannelUser2.sidenav.openChat(targetChannel); await poHomeChannelUser2.content.sendMessage('this is a message for reply'); - }); + await user2Page.close(); - test('should mark a populated room as unread', async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.content.openLastMessageMenu(); await poHomeChannel.markUnread.click(); - const sidebarItem = poHomeChannel.sidenav.getSidebarItemByName(targetChannel); - await expect(poHomeChannel.sidenav.getChannelBadge(sidebarItem)).toBeVisible(); - }); + await page.waitForURL('/home'); - test.afterEach(async () => { - await poHomeChannelUser2.page.close(); + await expect(page.locator('role=main >> role=heading[level=1]')).toBeVisible(); + await expect(poHomeChannel.sidenav.getRoomBadge(targetChannel)).toBeVisible(); }); }); }); diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index e2fce22f5fc3..b9cb98dcbe5a 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -68,6 +68,7 @@ export class HomeSidenav { return this.page.locator('role=menuitemcheckbox[name="Profile"]'); } + // TODO: refactor getSidebarItemByName to not use data-qa getSidebarItemByName(name: string): Locator { return this.page.locator(`[data-qa="sidebar-item"][aria-label="${name}"]`); } @@ -130,12 +131,6 @@ export class HomeSidenav { await this.waitForChannel(); } - async searchChat(name: string): Promise { - await this.page.locator('role=navigation >> role=button[name=Search]').click(); - await this.page.locator('role=search >> role=searchbox').fill(name); - await expect(this.page.locator(`[data-qa="sidebar-item"][aria-label="${name}"]`).first()).toBeVisible(); - } - async waitForChannel(): Promise { await this.page.locator('role=main').waitFor(); await this.page.locator('role=main >> role=heading[level=1]').waitFor(); @@ -184,11 +179,11 @@ export class HomeSidenav { await this.btnCreate.click(); } - getChannelBadge(sidebarItem: Locator): Locator { - return sidebarItem.locator('.rcx-badge'); + getRoomBadge(roomName: string): Locator { + return this.getSidebarItemByName(roomName).getByRole('status', { exact: true }); } getSearchChannelBadge(name: string): Locator { - return this.page.locator(`[data-qa="sidebar-item"][aria-label="${name}"]`).first().locator('.rcx-badge'); + return this.page.locator(`[data-qa="sidebar-item"][aria-label="${name}"]`).first().getByRole('status', { exact: true }); } } From 34060e0c82bfb3367c4db5619e696940502c911c Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Tue, 3 Sep 2024 10:58:37 -0300 Subject: [PATCH 15/18] fix: action button --- apps/meteor/app/message-mark-as-unread/client/actionButton.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/meteor/app/message-mark-as-unread/client/actionButton.ts b/apps/meteor/app/message-mark-as-unread/client/actionButton.ts index fc4a9d80c43c..e1e35d216029 100644 --- a/apps/meteor/app/message-mark-as-unread/client/actionButton.ts +++ b/apps/meteor/app/message-mark-as-unread/client/actionButton.ts @@ -19,7 +19,6 @@ Meteor.startup(() => { const { message = messageArgs(this).msg } = props; try { - await sdk.call('unreadMessages', message); const subscription = ChatSubscription.findOne({ rid: message.rid, }); @@ -27,8 +26,9 @@ Meteor.startup(() => { if (subscription == null) { return; } + router.navigate('/home'); await LegacyRoomManager.close(subscription.t + subscription.name); - return router.navigate('/home'); + await sdk.call('unreadMessages', message); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } From 809a8a8ea1f1f71413ad49972d6cb32a1a92fae4 Mon Sep 17 00:00:00 2001 From: dougfabris Date: Tue, 3 Sep 2024 15:13:13 -0300 Subject: [PATCH 16/18] fix: e2e test --- .../sidebar/RoomList/SideBarItemTemplateWithData.tsx | 1 + .../sidebarv2/RoomList/SideBarItemTemplateWithData.tsx | 1 + apps/meteor/tests/e2e/mark-unread.spec.ts | 7 ++++--- .../tests/e2e/page-objects/fragments/home-sidenav.ts | 6 ++++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx b/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx index 80dfce550742..35d098151204 100644 --- a/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx +++ b/apps/meteor/client/sidebar/RoomList/SideBarItemTemplateWithData.tsx @@ -180,6 +180,7 @@ function SideBarItemTemplateWithData({ is='a' id={id} data-qa='sidebar-item' + data-unread={highlighted} unread={highlighted} selected={selected} href={href} diff --git a/apps/meteor/client/sidebarv2/RoomList/SideBarItemTemplateWithData.tsx b/apps/meteor/client/sidebarv2/RoomList/SideBarItemTemplateWithData.tsx index 72fe083f84ce..60ad4002d038 100644 --- a/apps/meteor/client/sidebarv2/RoomList/SideBarItemTemplateWithData.tsx +++ b/apps/meteor/client/sidebarv2/RoomList/SideBarItemTemplateWithData.tsx @@ -180,6 +180,7 @@ const SideBarItemTemplateWithData = ({ is='a' id={id} data-qa='sidebar-item' + data-unread={highlighted} unread={highlighted} selected={selected} href={href} diff --git a/apps/meteor/tests/e2e/mark-unread.spec.ts b/apps/meteor/tests/e2e/mark-unread.spec.ts index 50b55ea4cc94..81ae93965856 100644 --- a/apps/meteor/tests/e2e/mark-unread.spec.ts +++ b/apps/meteor/tests/e2e/mark-unread.spec.ts @@ -50,7 +50,7 @@ test.describe.serial('mark-unread', () => { test.describe('Mark Unread - Message Action', () => { let poHomeChannelUser2: HomeChannel; - test('should mark a populated room as unread', async ({ page, browser }) => { + test('should mark a populated room as unread', async ({ browser }) => { const { page: user2Page } = await createAuxContext(browser, Users.user2); poHomeChannelUser2 = new HomeChannel(user2Page); @@ -59,11 +59,12 @@ test.describe.serial('mark-unread', () => { await user2Page.close(); await poHomeChannel.sidenav.openChat(targetChannel); + + // wait for the sidebar item to be read + await poHomeChannel.sidenav.getSidebarItemByName(targetChannel, true).waitFor(); await poHomeChannel.content.openLastMessageMenu(); await poHomeChannel.markUnread.click(); - await page.waitForURL('/home'); - await expect(page.locator('role=main >> role=heading[level=1]')).toBeVisible(); await expect(poHomeChannel.sidenav.getRoomBadge(targetChannel)).toBeVisible(); }); }); diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index b9cb98dcbe5a..823469d02a96 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -69,8 +69,10 @@ export class HomeSidenav { } // TODO: refactor getSidebarItemByName to not use data-qa - getSidebarItemByName(name: string): Locator { - return this.page.locator(`[data-qa="sidebar-item"][aria-label="${name}"]`); + getSidebarItemByName(name: string, isRead?: boolean): Locator { + return this.page.locator( + ['[data-qa="sidebar-item"]', `[aria-label="${name}"]`, isRead && '[data-unread="false"]'].filter(Boolean).join(''), + ); } async selectMarkAsUnread(name: string) { From e406ac6d1a4a17f02929085680ccff8e2d1acc09 Mon Sep 17 00:00:00 2001 From: MartinSchoeler Date: Tue, 3 Sep 2024 16:03:37 -0300 Subject: [PATCH 17/18] fix: [gazzo: Gazzo] --- apps/meteor/client/sidebar/RoomMenu.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/meteor/client/sidebar/RoomMenu.tsx b/apps/meteor/client/sidebar/RoomMenu.tsx index 433335cc8d05..05f02220104b 100644 --- a/apps/meteor/client/sidebar/RoomMenu.tsx +++ b/apps/meteor/client/sidebar/RoomMenu.tsx @@ -1,6 +1,6 @@ import type { RoomType } from '@rocket.chat/core-typings'; import { Option, Menu } from '@rocket.chat/fuselage'; -import { useEffectEvent, useMutableCallback } from '@rocket.chat/fuselage-hooks'; +import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; import type { TranslationKey, Fields } from '@rocket.chat/ui-contexts'; import { useRouter, @@ -174,7 +174,7 @@ const RoomMenu = ({ ); }); - const handleToggleRead = useEffectEvent(async () => { + const handleToggleRead = useMutableCallback(async () => { try { queryClient.invalidateQueries(['sidebar/search/spotlight']); From f07fcc5401f0a8c231f690a40a95924db3bb7bd3 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Tue, 3 Sep 2024 16:36:35 -0300 Subject: [PATCH 18/18] Update hot-balloons-travel.md --- .changeset/hot-balloons-travel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/hot-balloons-travel.md b/.changeset/hot-balloons-travel.md index f95a60512bdb..d6154babc49d 100644 --- a/.changeset/hot-balloons-travel.md +++ b/.changeset/hot-balloons-travel.md @@ -2,4 +2,4 @@ "@rocket.chat/meteor": patch --- -Fixed issue where when you marked a room as read and you were part of it, sometimes it would mark it as read right after +Fixed issue where when you marked a room as unread and you were part of it, sometimes it would mark it as read right after