mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
import webClient from '../../WebClient';
|
|
import { RoomPersistence } from '../../persistence';
|
|
|
|
export function joinRoom(roomId: number): void {
|
|
const command = webClient.protobuf.controller.Command_JoinRoom.create({ roomId });
|
|
const sc = webClient.protobuf.controller.SessionCommand.create({ '.Command_JoinRoom.ext': command });
|
|
|
|
webClient.protobuf.sendSessionCommand(sc, (raw) => {
|
|
const { responseCode } = raw;
|
|
|
|
let error: string;
|
|
|
|
switch (responseCode) {
|
|
case webClient.protobuf.controller.Response.ResponseCode.RespOk:
|
|
const { roomInfo } = raw['.Response_JoinRoom.ext'];
|
|
|
|
RoomPersistence.joinRoom(roomInfo);
|
|
return;
|
|
case webClient.protobuf.controller.Response.ResponseCode.RespNameNotFound:
|
|
error = 'Failed to join the room: it doesn\'t exist on the server.';
|
|
break;
|
|
case webClient.protobuf.controller.Response.ResponseCode.RespContextError:
|
|
error = 'The server thinks you are in the room but Cockatrice is unable to display it. Try restarting Cockatrice.';
|
|
break;
|
|
case webClient.protobuf.controller.Response.ResponseCode.RespUserLevelTooLow:
|
|
error = 'You do not have the required permission to join this room.';
|
|
break;
|
|
default:
|
|
error = 'Failed to join the room due to an unknown error.';
|
|
break;
|
|
}
|
|
|
|
if (error) {
|
|
console.error(responseCode, error);
|
|
}
|
|
});
|
|
}
|