Separated the _processCommand and the joinRoom command

- renamed executeJoinCommand as joinRoom;
 - separated the joinRoom process and the parse and result process
This commit is contained in:
Kaki In 2022-07-27 15:18:32 +02:00
parent 550b9db4dc
commit ab64ce02b2

View file

@ -198,30 +198,23 @@ export class RoomViewModel extends ViewModel {
} }
} }
async executeJoinCommand(args) { async joinRoom(roomName) {
if (args.length == 1) {
let roomName = args[0];
try { try {
const roomId = await this._options.client.session.joinRoom(roomName); const roomId = await this._options.client.session.joinRoom(roomName);
await (await this._options.client.session.observeRoomStatus(roomId)).waitFor(status => status === RoomStatus.Joined); const roomStatusObserver = await this._options.client.session.observeRoomStatus(roomId);
await roomStatusObserver.waitFor(status => status === RoomStatus.Joined);
this.navigation.push("room", roomId); this.navigation.push("room", roomId);
return true;
} catch (exc) { } catch (exc) {
if ((exc.statusCode ?? exc.status) === 400) { if ((exc.statusCode ?? exc.status) === 400) {
this._sendError = new Error(`/join : '${roomName}' was not legal room ID or room alias`); return `'${roomName}' was not legal room ID or room alias`;
} else if ((exc.statusCode ?? exc.status) === 404 || (exc.statusCode ?? exc.status) === 502 || exc.message == "Internal Server Error") { } else if ((exc.statusCode ?? exc.status) === 404 || (exc.statusCode ?? exc.status) === 502 || exc.message == "Internal Server Error") {
this._sendError = new Error(`/join : room '${roomName}' not found`); return `room '${roomName}' not found`;
} else if ((exc.statusCode ?? exc.status) === 403) { } else if ((exc.statusCode ?? exc.status) === 403) {
this._sendError = new Error(`/join : you're not invited to join '${roomName}'`); return `you're not invited to join '${roomName}'`;
} else { } else {
this._sendError = exc; return exc;
} }
this._timelineError = null;
this.emitChange("error");
}
} else {
this._sendError = new Error("join syntax: /join <room-id>");
this._timelineError = null;
this.emitChange("error");
} }
} }
@ -234,7 +227,23 @@ export class RoomViewModel extends ViewModel {
msgtype = "m.emote"; msgtype = "m.emote";
break; break;
case "join": case "join":
await this.executeJoinCommand(args); if (args.length == 1) {
const roomName = args[0];
const exc = await this.joinRoom(roomName);
if (exc!==true) {
if (exc && exc.stack && exc.message) {
this._sendError = exc;
} else {
this._sendError = new Error("/join : " + exc);
}
this._timelineError = null;
this.emitChange("error");
}
} else {
this._sendError = new Error("join syntax: /join <room-id>");
this._timelineError = null;
this.emitChange("error");
}
break; break;
case "shrug": case "shrug":
message = "¯\\_(ツ)_/¯ " + args.join(" "); message = "¯\\_(ツ)_/¯ " + args.join(" ");