From d97abd9ea5424749564217e1a381592790fff35c Mon Sep 17 00:00:00 2001 From: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com> Date: Mon, 9 Jan 2023 14:53:13 +0100 Subject: [PATCH 1/3] should open new 1:1 chat room after leaving the old one Signed-off-by: Ahmad Kadri --- .../one-to-one-chat/one-to-one-chat.spec.ts | 60 +++++++++++++++++++ src/components/structures/MatrixChat.tsx | 8 +-- 2 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts diff --git a/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts b/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts new file mode 100644 index 00000000000..3cf73f0c2f9 --- /dev/null +++ b/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts @@ -0,0 +1,60 @@ +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/// + +import { SynapseInstance } from "../../plugins/synapsedocker"; +import type { Credentials } from "../../support/synapse"; + +describe("1:1 chat room", () => { + let synapse: SynapseInstance; + let user2: Credentials; + + const username = "user1234"; + const password = "p4s5W0rD"; + + beforeEach(() => { + cy.startSynapse("default").then((data) => { + synapse = data; + + cy.initTestUser(synapse, "Jeff"); + cy.registerUser(synapse, username, password).then((credentials) => { + user2 = credentials; + cy.visit(`/#/user/${user2.userId}?action=chat`); + }); + }); + }); + + afterEach(() => { + cy.stopSynapse(synapse); + }); + + it("should open new 1:1 chat room after leaving the old one", () => { + // leave 1:1 chat room + cy.contains(".mx_RoomHeader_nametext", username).click(); + cy.contains('[role="menuitem"]', "Leave").click(); + cy.get('[data-testid="dialog-primary-button"]').click(); + + // wait till the room was left + cy.get('[role="group"][aria-label="Historical"]').within(() => { + cy.contains(".mx_RoomTile", username); + }); + + // open new 1:1 chat room + cy.visit(`/#/user/${user2.userId}?action=chat`); + cy.contains(".mx_RoomHeader_nametext", username); + }); +}); diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 536626f2708..1ac44ecea77 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -138,6 +138,7 @@ import { VoiceBroadcastResumer } from "../../voice-broadcast"; import GenericToast from "../views/toasts/GenericToast"; import { Linkify } from "../views/elements/Linkify"; import RovingSpotlightDialog, { Filter } from "../views/dialogs/spotlight/SpotlightDialog"; +import { findDMForUser } from "../../utils/dm/findDMForUser"; // legacy export export { default as Views } from "../../Views"; @@ -1098,13 +1099,12 @@ export default class MatrixChat extends React.PureComponent { // TODO: Immutable DMs replaces this const client = MatrixClientPeg.get(); - const dmRoomMap = new DMRoomMap(client); - const dmRooms = dmRoomMap.getDMRoomsForUserId(userId); + const dmRoom = findDMForUser(client, userId); - if (dmRooms.length > 0) { + if (dmRoom) { dis.dispatch({ action: Action.ViewRoom, - room_id: dmRooms[0], + room_id: dmRoom.roomId, metricsTrigger: "MessageUser", }); } else { From 32df6a661a45f82d03e47cb3cfb96ce4e54413d2 Mon Sep 17 00:00:00 2001 From: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com> Date: Tue, 10 Jan 2023 13:05:57 +0100 Subject: [PATCH 2/3] change the copyright --- cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts b/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts index 3cf73f0c2f9..10d9c1313d6 100644 --- a/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts +++ b/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts @@ -1,5 +1,6 @@ /* -Copyright 2022 The Matrix.org Foundation C.I.C. +Copyright 2023 Ahmad Kadri +Copyright 2023 Nordeck IT + Consulting GmbH. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From e13d5cb9a59cbe728df64cfd8fa4ab5121705252 Mon Sep 17 00:00:00 2001 From: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com> Date: Thu, 19 Jan 2023 16:25:30 +0100 Subject: [PATCH 3/3] update the test Signed-off-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com> --- .../one-to-one-chat/one-to-one-chat.spec.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts b/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts index 10d9c1313d6..897b916105e 100644 --- a/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts +++ b/cypress/e2e/one-to-one-chat/one-to-one-chat.spec.ts @@ -17,30 +17,30 @@ limitations under the License. /// -import { SynapseInstance } from "../../plugins/synapsedocker"; -import type { Credentials } from "../../support/synapse"; +import { HomeserverInstance } from "../../plugins/utils/homeserver"; +import { Credentials } from "../../support/homeserver"; describe("1:1 chat room", () => { - let synapse: SynapseInstance; + let homeserver: HomeserverInstance; let user2: Credentials; const username = "user1234"; const password = "p4s5W0rD"; beforeEach(() => { - cy.startSynapse("default").then((data) => { - synapse = data; + cy.startHomeserver("default").then((data) => { + homeserver = data; - cy.initTestUser(synapse, "Jeff"); - cy.registerUser(synapse, username, password).then((credentials) => { - user2 = credentials; + cy.initTestUser(homeserver, "Jeff"); + cy.registerUser(homeserver, username, password).then((credential) => { + user2 = credential; cy.visit(`/#/user/${user2.userId}?action=chat`); }); }); }); afterEach(() => { - cy.stopSynapse(synapse); + cy.stopHomeserver(homeserver); }); it("should open new 1:1 chat room after leaving the old one", () => {