Fix reply action in message context menu notif & file panels (#9895)
parent
098ba1465a
commit
0c30b577e0
|
@ -335,10 +335,11 @@ export class RoomViewStore extends EventEmitter {
|
|||
this.reset();
|
||||
break;
|
||||
case "reply_to_event":
|
||||
// If currently viewed room does not match the room in which we wish to reply then change rooms
|
||||
// this can happen when performing a search across all rooms. Persist the data from this event for
|
||||
// both room and search timeline rendering types, search will get auto-closed by RoomView at this time.
|
||||
if ([TimelineRenderingType.Room, TimelineRenderingType.Search].includes(payload.context)) {
|
||||
// Thread timeline view handles its own reply-to-state
|
||||
if (TimelineRenderingType.Thread !== payload.context) {
|
||||
// If currently viewed room does not match the room in which we wish to reply then change rooms this
|
||||
// can happen when performing a search across all rooms. Persist the data from this event for both
|
||||
// room and search timeline rendering types, search will get auto-closed by RoomView at this time.
|
||||
if (payload.event && payload.event.getRoomId() !== this.state.roomId) {
|
||||
this.dis.dispatch<ViewRoomPayload>({
|
||||
action: Action.ViewRoom,
|
||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import { Room } from "matrix-js-sdk/src/matrix";
|
||||
import { sleep } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { RoomViewStore } from "../../src/stores/RoomViewStore";
|
||||
import { Action } from "../../src/dispatcher/actions";
|
||||
|
@ -245,6 +246,28 @@ describe("RoomViewStore", function () {
|
|||
expect(roomViewStore.getRoomId()).toEqual(roomId2);
|
||||
});
|
||||
|
||||
it("should ignore reply_to_event for Thread panels", async () => {
|
||||
expect(roomViewStore.getQuotingEvent()).toBeFalsy();
|
||||
const replyToEvent = {
|
||||
getRoomId: () => roomId2,
|
||||
};
|
||||
dis.dispatch({ action: "reply_to_event", event: replyToEvent, context: TimelineRenderingType.Thread });
|
||||
await sleep(100);
|
||||
expect(roomViewStore.getQuotingEvent()).toBeFalsy();
|
||||
});
|
||||
|
||||
it.each([TimelineRenderingType.Room, TimelineRenderingType.File, TimelineRenderingType.Notification])(
|
||||
"Should respect reply_to_event for %s rendering context",
|
||||
async (context) => {
|
||||
const replyToEvent = {
|
||||
getRoomId: () => roomId,
|
||||
};
|
||||
dis.dispatch({ action: "reply_to_event", event: replyToEvent, context });
|
||||
await untilDispatch(Action.ViewRoom, dis);
|
||||
expect(roomViewStore.getQuotingEvent()).toEqual(replyToEvent);
|
||||
},
|
||||
);
|
||||
|
||||
it("removes the roomId on ViewHomePage", async () => {
|
||||
dis.dispatch({ action: Action.ViewRoom, room_id: roomId });
|
||||
await untilDispatch(Action.ActiveRoomChanged, dis);
|
||||
|
|
Loading…
Reference in New Issue