provide nicer error for no known servers error when accepting an invite
This commit is contained in:
parent
4f55ef685d
commit
d8baad31da
2 changed files with 25 additions and 3 deletions
src
|
@ -423,6 +423,8 @@
|
||||||
"Upgrade your %(brand)s": "Upgrade your %(brand)s",
|
"Upgrade your %(brand)s": "Upgrade your %(brand)s",
|
||||||
"A new version of %(brand)s is available!": "A new version of %(brand)s is available!",
|
"A new version of %(brand)s is available!": "A new version of %(brand)s is available!",
|
||||||
"Guest": "Guest",
|
"Guest": "Guest",
|
||||||
|
"The person who invited you already left the room.": "The person who invited you already left the room.",
|
||||||
|
"The person who invited you already left the room, or their server is offline.": "The person who invited you already left the room, or their server is offline.",
|
||||||
"There was an error joining the room": "There was an error joining the room",
|
"There was an error joining the room": "There was an error joining the room",
|
||||||
"Sorry, your homeserver is too old to participate in this room.": "Sorry, your homeserver is too old to participate in this room.",
|
"Sorry, your homeserver is too old to participate in this room.": "Sorry, your homeserver is too old to participate in this room.",
|
||||||
"Please contact your homeserver administrator.": "Please contact your homeserver administrator.",
|
"Please contact your homeserver administrator.": "Please contact your homeserver administrator.",
|
||||||
|
|
|
@ -265,10 +265,20 @@ class RoomViewStore extends Store {
|
||||||
});
|
});
|
||||||
let msg = err.message ? err.message : JSON.stringify(err);
|
let msg = err.message ? err.message : JSON.stringify(err);
|
||||||
console.log("Failed to join room:", msg);
|
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");
|
msg = _t("There was an error joining the room");
|
||||||
}
|
} else if (err.errcode === 'M_INCOMPATIBLE_ROOM_VERSION') {
|
||||||
if (err.errcode === 'M_INCOMPATIBLE_ROOM_VERSION') {
|
|
||||||
msg = <div>
|
msg = <div>
|
||||||
{_t("Sorry, your homeserver is too old to participate in this room.")}<br />
|
{_t("Sorry, your homeserver is too old to participate in this room.")}<br />
|
||||||
{_t("Please contact your homeserver administrator.")}
|
{_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) {
|
_joinRoomError(payload) {
|
||||||
this._setState({
|
this._setState({
|
||||||
joining: false,
|
joining: false,
|
||||||
|
|
Loading…
Reference in a new issue