New room list: fix outdated message preview when space or filter change (#29925)

* fix(new room list): fix outdated message preview when space change

* test(new room list): verify that message preview is check when room change
This commit is contained in:
Florian Duros 2025-05-13 09:57:02 +02:00 committed by GitHub
parent 0d5a8aafbd
commit 64047b0702
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 1 deletions

View File

@ -220,7 +220,7 @@ function useRoomMessagePreview(room: Room): string | undefined {
room,
roomIsDM ? DefaultTagID.DM : DefaultTagID.Untagged,
);
if (messagePreview) setPreviewText(messagePreview.text);
setPreviewText(messagePreview?.text);
}, [room, shouldShowMessagePreview]);
// MessagePreviewStore and the other AsyncStores need to be converted to TypedEventEmitter

View File

@ -138,6 +138,28 @@ describe("RoomListItemViewModel", () => {
expect(vm.current.messagePreview).toBe(undefined);
});
it("should check message preview when room change", async () => {
const otherRoom = mkStubRoom("roomId2", "roomName2", room.client);
jest.spyOn(MessagePreviewStore.instance, "getPreviewForRoom").mockResolvedValue({
text: "Message look like this",
} as MessagePreview);
mocked(useMessagePreviewToggle).mockReturnValue({
shouldShowMessagePreview: true,
toggleMessagePreview: jest.fn(),
});
const { result: vm, rerender } = renderHook((props) => useRoomListItemViewModel(props), {
initialProps: room,
...withClientContextRenderOptions(room.client),
});
await waitFor(() => expect(vm.current.messagePreview).toBe("Message look like this"));
jest.spyOn(MessagePreviewStore.instance, "getPreviewForRoom").mockResolvedValue(null);
rerender(otherRoom);
await waitFor(() => expect(vm.current.messagePreview).toBe(undefined));
});
describe("notification", () => {
let notificationState: RoomNotificationState;
beforeEach(() => {