mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-10 00:04:48 -07:00
* port webclient POC into react shell * Abstract websocket messaging behind redux store * refactor architecture * add rooms store * introduce application service layer and login form * display room messages * implement roomSay * improve Room view styling * display room games * improve gameList update logic * hide protected games * improve game update logic * move mapping to earlier lifecycle hook * add autoscroll to bottom * tabs to spaces, refresh guard * implement server joins/leaves * show users in room * add material-ui to build * refactor, add room joins/leaves to store and render * begin using Material UI components * fix spectatorsCount * remove unused package * improve Server and Room styling * fix scroll context * route on room join * refactor room path * add auth guard * refactor authGuard export * add missing files * clear store on disconnect, add logout button to Account view * fix disconnect handling * Safari fixes * organize current todos * improve login page and server status tracking * improve login page * introduce sorting arch, refine reducers, begin viewLogHistory * audit fix for handlebars * implement moderator log view * comply with code style rules * remove original POC from codebase * add missing semi * minor improvements, begin registration functionality * retry as ws when wss fails additionally, dont mutate the default options when connecting * retain user/pass in WebClient.options for login * take protocol off of options, make it a connect param that defaults to wss * cleanup server page styling * match wss logic with desktop client * add virtual scroll component, add context menu to UserDisplay * revert VirtualTable on messages * improve styling for Room view * add routing to Player view * increase tooltip delay * begin implementing Account view * disable app level contextMenu * implement buddy/ignore list management * fix gitignore Co-authored-by: Jay Letto <jeremy.letto@merrillcorp.com> Co-authored-by: skwerlman <skwerlman@users.noreply.github.com> Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
import { Dispatch, Selectors } from "store/rooms";
|
|
import { store } from "store";
|
|
|
|
|
|
import { WebClient } from "../WebClient";
|
|
|
|
import { NormalizeService } from "./NormalizeService";
|
|
|
|
export class RoomService {
|
|
webClient: WebClient;
|
|
|
|
constructor(webClient) {
|
|
this.webClient = webClient;
|
|
}
|
|
|
|
clearStore() {
|
|
Dispatch.clearStore();
|
|
}
|
|
|
|
joinRoom(roomInfo) {
|
|
NormalizeService.normalizeRoomInfo(roomInfo);
|
|
Dispatch.joinRoom(roomInfo);
|
|
}
|
|
|
|
updateRooms(rooms) {
|
|
Dispatch.updateRooms(rooms);
|
|
}
|
|
|
|
updateGames(roomId, gameList) {
|
|
const game = gameList[0];
|
|
|
|
if (!game.gameType) {
|
|
const { gametypeMap } = Selectors.getRoom(store.getState(), roomId);
|
|
NormalizeService.normalizeGameObject(game, gametypeMap);
|
|
}
|
|
|
|
Dispatch.updateGames(roomId, gameList);
|
|
}
|
|
|
|
addMessage(roomId, message) {
|
|
NormalizeService.normalizeUserMessage(message);
|
|
|
|
Dispatch.addMessage(roomId, message);
|
|
}
|
|
|
|
userJoined(roomId, user) {
|
|
Dispatch.userJoined(roomId, user);
|
|
}
|
|
|
|
userLeft(roomId, name) {
|
|
Dispatch.userLeft(roomId, name);
|
|
}
|
|
}
|