Support dynamic room predecessors in ForwardDialog (#10344)

This commit is contained in:
Andy Balaam 2023-03-10 09:41:30 +00:00 committed by GitHub
parent 42abfb1fac
commit 2e064e57a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 2 deletions

View file

@ -227,11 +227,16 @@ const ForwardDialog: React.FC<IProps> = ({ matrixClient: cli, event, permalinkCr
const lcQuery = query.toLowerCase();
const previewLayout = useSettingValue<Layout>("layout");
const msc3946DynamicRoomPredecessors = useSettingValue<boolean>("feature_dynamic_room_predecessors");
let rooms = useMemo(
() =>
sortRooms(cli.getVisibleRooms().filter((room) => room.getMyMembership() === "join" && !room.isSpaceRoom())),
[cli],
sortRooms(
cli
.getVisibleRooms(msc3946DynamicRoomPredecessors)
.filter((room) => room.getMyMembership() === "join" && !room.isSpaceRoom()),
),
[cli, msc3946DynamicRoomPredecessors],
);
if (lcQuery) {

View file

@ -36,6 +36,7 @@ import {
mockPlatformPeg,
} from "../../../test-utils";
import { TILE_SERVER_WK_KEY } from "../../../../src/utils/WellKnownUtils";
import SettingsStore from "../../../../src/settings/SettingsStore";
describe("ForwardDialog", () => {
const sourceRoom = "!111111111111111111:example.org";
@ -325,4 +326,31 @@ describe("ForwardDialog", () => {
);
});
});
describe("If the feature_dynamic_room_predecessors is not enabled", () => {
beforeEach(() => {
jest.spyOn(SettingsStore, "getValue").mockReturnValue(false);
});
it("Passes through the dynamic predecessor setting", async () => {
mockClient.getVisibleRooms.mockClear();
mountForwardDialog();
expect(mockClient.getVisibleRooms).toHaveBeenCalledWith(false);
});
});
describe("If the feature_dynamic_room_predecessors is enabled", () => {
beforeEach(() => {
// Turn on feature_dynamic_room_predecessors setting
jest.spyOn(SettingsStore, "getValue").mockImplementation(
(settingName) => settingName === "feature_dynamic_room_predecessors",
);
});
it("Passes through the dynamic predecessor setting", async () => {
mockClient.getVisibleRooms.mockClear();
mountForwardDialog();
expect(mockClient.getVisibleRooms).toHaveBeenCalledWith(true);
});
});
});