mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-10 00:04:48 -07:00
Webatrice P.O.C. (#3854)
* 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>
This commit is contained in:
parent
d5b36e8b8a
commit
0457e65751
152 changed files with 19573 additions and 1071 deletions
3
webclient/src/types/game.tsx
Normal file
3
webclient/src/types/game.tsx
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
export enum GameSortField {
|
||||
START_TIME = "startTime"
|
||||
}
|
||||
5
webclient/src/types/index.ts
Normal file
5
webclient/src/types/index.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
export * from "./game";
|
||||
export * from "./room";
|
||||
export * from "./server";
|
||||
export * from "./sort";
|
||||
export * from "./user";
|
||||
21
webclient/src/types/room.tsx
Normal file
21
webclient/src/types/room.tsx
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import { User } from "./user";
|
||||
|
||||
export interface Room {
|
||||
autoJoin: boolean
|
||||
description: string;
|
||||
gameCount: number;
|
||||
gameList: any[];
|
||||
gametypeList: any[];
|
||||
gametypeMap: { [index: number]: string; };
|
||||
name: string;
|
||||
permissionlevel: RoomAccessLevel;
|
||||
playerCount: number;
|
||||
privilegelevel: RoomAccessLevel;
|
||||
roomId: number;
|
||||
userList: User[];
|
||||
order: number;
|
||||
}
|
||||
|
||||
export enum RoomAccessLevel {
|
||||
"none"
|
||||
}
|
||||
36
webclient/src/types/server.tsx
Normal file
36
webclient/src/types/server.tsx
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
export enum StatusEnum {
|
||||
DISCONNECTED = 0,
|
||||
CONNECTING = 1,
|
||||
CONNECTED = 2,
|
||||
LOGGINGIN = 3,
|
||||
LOGGEDIN = 4,
|
||||
DISCONNECTING = 99
|
||||
}
|
||||
|
||||
export enum StatusEnumLabel {
|
||||
"Disconnected" = 0,
|
||||
"Connecting" = 1,
|
||||
"Connected" = 2,
|
||||
"Loggingin" = 3,
|
||||
"Loggedin" = 4,
|
||||
"Disconnecting" = 99
|
||||
}
|
||||
|
||||
export const getStatusEnumLabel = (statusEnum: number) => {
|
||||
if (StatusEnumLabel[statusEnum] !== undefined) {
|
||||
return StatusEnumLabel[statusEnum];
|
||||
}
|
||||
|
||||
return "Unknown";
|
||||
};
|
||||
|
||||
export interface Log {
|
||||
message: string;
|
||||
senderId: string;
|
||||
senderIp: string;
|
||||
senderName: string;
|
||||
targetId: string;
|
||||
targetName: string;
|
||||
targetType: string;
|
||||
time: string;
|
||||
}
|
||||
9
webclient/src/types/sort.tsx
Normal file
9
webclient/src/types/sort.tsx
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
export enum SortDirection {
|
||||
ASC = "ASC",
|
||||
DESC = "DESC"
|
||||
}
|
||||
|
||||
export interface SortBy {
|
||||
field: string;
|
||||
order: SortDirection;
|
||||
}
|
||||
25
webclient/src/types/user.tsx
Normal file
25
webclient/src/types/user.tsx
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
export interface User {
|
||||
accountageSecs: number;
|
||||
avatarBmp: Uint8Array;
|
||||
country: string;
|
||||
gender: number;
|
||||
name: string;
|
||||
privlevel: UserAccessLevel;
|
||||
realName: string;
|
||||
userLevel: UserPrivLevel;
|
||||
}
|
||||
|
||||
export enum UserAccessLevel {
|
||||
"NONE"
|
||||
}
|
||||
|
||||
export enum UserPrivLevel {
|
||||
"unknown 1",
|
||||
"unknown 2",
|
||||
"unknown 3",
|
||||
"unknown 4"
|
||||
}
|
||||
|
||||
export enum UserSortField {
|
||||
NAME = "name"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue