provide nicer error for no known servers error when accepting an invite

This commit is contained in:
Bruno Windels 2020-07-29 16:51:37 +02:00
parent 4f55ef685d
commit d8baad31da
2 changed files with 25 additions and 3 deletions

View file

@ -265,10 +265,20 @@ class RoomViewStore extends Store {
});
let msg = err.message ? err.message : JSON.stringify(err);
console.log("Failed to join room:", msg);
if (err.name === "ConnectionError") {
if (err.httpStatus === 404) {
const invitingUserId = this._getInvitingUserId(this._state.roomId);
// only provide a better error message for invites
if (invitingUserId) {
// if the inviting user is on the same HS, there can only be one cause: they left.
if (invitingUserId.endsWith(`:${MatrixClientPeg.get().getDomain()}`)) {
msg = _t("The person who invited you already left the room.");
} else {
msg = _t("The person who invited you already left the room, or their server is offline.");
}
}
} else if (err.name === "ConnectionError") {
msg = _t("There was an error joining the room");
}
if (err.errcode === 'M_INCOMPATIBLE_ROOM_VERSION') {
} else if (err.errcode === 'M_INCOMPATIBLE_ROOM_VERSION') {
msg = <div>
{_t("Sorry, your homeserver is too old to participate in this room.")}<br />
{_t("Please contact your homeserver administrator.")}
@ -282,6 +292,16 @@ class RoomViewStore extends Store {
});
}
_getInvitingUserId(roomId) {
const cli = MatrixClientPeg.get();
const room = cli.getRoom(roomId);
if (room && room.getMyMembership() === "invite") {
const myMember = room.getMember(cli.getUserId());
const inviteEvent = myMember ? myMember.events.member : null;
return inviteEvent && inviteEvent.getSender();
}
}
_joinRoomError(payload) {
this._setState({
joining: false,