Fix unfederated invite dialog (#9618)
* clarify error message for unfederated room invites * hide external user suggesetions * rename some descriptors * fix i18n * add warning for unfederated spaces * i18n Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Add tests Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
a306a08780
commit
4ff35f0471
6 changed files with 111 additions and 13 deletions
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import { mocked } from "jest-mock";
|
||||
import { MatrixClient, MatrixError, Room, RoomMember } from "matrix-js-sdk/src/matrix";
|
||||
import { EventType, MatrixClient, MatrixError, MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { MatrixClientPeg } from "../../src/MatrixClientPeg";
|
||||
import Modal, { ComponentType, ComponentProps } from "../../src/Modal";
|
||||
|
@ -187,5 +187,56 @@ describe("MultiInviter", () => {
|
|||
});
|
||||
expect(client.unban).toHaveBeenCalledWith(ROOMID, MXID1);
|
||||
});
|
||||
|
||||
it("should show sensible error when attempting to invite over federation with m.federate=false", async () => {
|
||||
mocked(client.invite).mockRejectedValueOnce(
|
||||
new MatrixError({
|
||||
errcode: "M_FORBIDDEN",
|
||||
}),
|
||||
);
|
||||
const room = new Room(ROOMID, client, client.getSafeUserId());
|
||||
room.currentState.setStateEvents([
|
||||
new MatrixEvent({
|
||||
type: EventType.RoomCreate,
|
||||
state_key: "",
|
||||
content: {
|
||||
"m.federate": false,
|
||||
},
|
||||
room_id: ROOMID,
|
||||
}),
|
||||
]);
|
||||
mocked(client.getRoom).mockReturnValue(room);
|
||||
|
||||
await inviter.invite(["@user:other_server"]);
|
||||
expect(inviter.getErrorText("@user:other_server")).toMatchInlineSnapshot(
|
||||
`"This room is unfederated. You cannot invite people from external servers."`,
|
||||
);
|
||||
});
|
||||
|
||||
it("should show sensible error when attempting to invite over federation with m.federate=false to space", async () => {
|
||||
mocked(client.invite).mockRejectedValueOnce(
|
||||
new MatrixError({
|
||||
errcode: "M_FORBIDDEN",
|
||||
}),
|
||||
);
|
||||
const room = new Room(ROOMID, client, client.getSafeUserId());
|
||||
room.currentState.setStateEvents([
|
||||
new MatrixEvent({
|
||||
type: EventType.RoomCreate,
|
||||
state_key: "",
|
||||
content: {
|
||||
"m.federate": false,
|
||||
"type": "m.space",
|
||||
},
|
||||
room_id: ROOMID,
|
||||
}),
|
||||
]);
|
||||
mocked(client.getRoom).mockReturnValue(room);
|
||||
|
||||
await inviter.invite(["@user:other_server"]);
|
||||
expect(inviter.getErrorText("@user:other_server")).toMatchInlineSnapshot(
|
||||
`"This space is unfederated. You cannot invite people from external servers."`,
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue