Add types for Moderator commands (#5084)

* Add types for Moderator commands

* Support User Priv Level & userLevel
This commit is contained in:
Zach H
2024-07-29 01:16:29 +00:00
committed by GitHub
parent 9f515fc804
commit c5bb38e907
10 changed files with 51 additions and 34 deletions

View File

@@ -1,4 +1,4 @@
import { Log, SortBy, User, UserSortField, WebSocketConnectOptions } from 'types';
import { LogItem, SortBy, User, UserSortField, WebSocketConnectOptions } from 'types';
export interface ServerConnectParams {
host: string;
@@ -63,9 +63,9 @@ export interface ServerStateInfo {
}
export interface ServerStateLogs {
room: Log[];
game: Log[];
chat: Log[];
room: LogItem[];
game: LogItem[];
chat: LogItem[];
}
export interface ServerStateSortUsersBy extends SortBy {

View File

@@ -15,3 +15,4 @@ export * from './languages';
export * from './logs';
export * from './session';
export * from './deckList';
export * from './moderator';

View File

@@ -0,0 +1,21 @@
export interface BanHistoryItem {
adminId: string;
adminName: string;
banTime: string;
banLength: string;
banReason: string;
visibleReason: string;
}
export interface WarnHistoryItem {
userName: string;
adminName: string;
reason: string;
timeOf: string;
}
export interface WarnListItem {
warning: string;
userName: string;
userClientid: string;
}

View File

@@ -109,7 +109,7 @@ export const KnownHosts = {
[KnownHost.TETRARCH]: { port: 443, host: 'mtg.tetrarch.co/servatrice' },
}
export interface Log {
export interface LogItem {
message: string;
senderId: string;
senderIp: string;
@@ -121,7 +121,7 @@ export interface Log {
}
export interface LogGroups {
room: Log[];
game: Log[];
chat: Log[];
room: LogItem[];
game: LogItem[];
chat: LogItem[];
}

View File

@@ -1,22 +1,17 @@
export interface User {
accountageSecs: number;
name: string;
privlevel: UserAccessLevel;
userLevel: UserPrivLevel;
privlevel: UserPrivLevel;
userLevel: number;
realName?: string;
country?: string;
avatarBmp?: Uint8Array;
}
export enum UserAccessLevel {
'NONE'
}
export enum UserPrivLevel {
'unknown 1',
'unknown 2',
'unknown 3',
'unknown 4'
NONE = 0,
VIP = 1,
DONOR = 2
}
export enum UserSortField {

View File

@@ -13,7 +13,7 @@ export function getBanHistory(userName: string): void {
switch (responseCode) {
case webClient.protobuf.controller.Response.ResponseCode.RespOk:
const { banList } = raw['.Response_BanHistory.ext'];
ModeratorPersistence.banHistory(banList);
ModeratorPersistence.banHistory(userName, banList);
return;
default:
error = 'Failed to get ban history.';

View File

@@ -13,7 +13,7 @@ export function getWarnHistory(userName: string): void {
switch (responseCode) {
case webClient.protobuf.controller.Response.ResponseCode.RespOk:
const { warnList } = raw['.Response_WarnHistory.ext'];
ModeratorPersistence.warnHistory(warnList);
ModeratorPersistence.warnHistory(userName, warnList);
return;
default:
error = 'Failed to get warn history.';

View File

@@ -2,7 +2,7 @@ import webClient from '../../WebClient';
import { ModeratorPersistence } from '../../persistence';
export function warnUser(userName: string, reason: string, clientid?: string, removeMessage?: boolean): void {
const command = webClient.protobuf.controller.Command_BanFromServer.create({ userName, reason, clientid, removeMessage });
const command = webClient.protobuf.controller.Command_WarnUser.create({ userName, reason, clientid, removeMessage });
const sc = webClient.protobuf.controller.ModeratorCommand.create({ '.Command_WarnUser.ext': command });
webClient.protobuf.sendModeratorCommand(sc, (raw) => {

View File

@@ -1,30 +1,30 @@
import { ServerDispatch } from 'store';
import { Log } from 'types';
import { BanHistoryItem, LogItem, WarnHistoryItem, WarnListItem } from 'types';
import NormalizeService from '../utils/NormalizeService';
export class ModeratorPersistence {
static banFromServer(userName: any) {
static banFromServer(userName: string): void {
console.log(userName);
}
static banHistory(banHistory: any) {
console.log(banHistory);
static banHistory(userName: string, banHistory: BanHistoryItem[]): void {
console.log(userName, banHistory);
}
static viewLogs(logs: Log[]) {
static viewLogs(logs: LogItem[]): void {
ServerDispatch.viewLogs(NormalizeService.normalizeLogs(logs));
}
static warnHistory(warnList: any) {
static warnHistory(userName: string, warnHistory: WarnHistoryItem[]): void {
console.log(userName, warnHistory);
}
static warnList(warnList: WarnListItem[]): void {
console.log(warnList);
}
static warnList(warning: any) {
console.log(warning);
}
static warnUser(userName: any) {
static warnUser(userName: string): void {
console.log(userName);
}
}

View File

@@ -1,4 +1,4 @@
import { Game, GametypeMap, Log, LogGroups, Message, Room } from 'types';
import { Game, GametypeMap, LogItem, LogGroups, Message, Room } from 'types';
export default class NormalizeService {
// Flatten room gameTypes into map object
@@ -26,7 +26,7 @@ export default class NormalizeService {
}
// Flatten logs[] into object mapped by targetType (room, game, chat)
static normalizeLogs(logs: Log[]): LogGroups {
static normalizeLogs(logs: LogItem[]): LogGroups {
return logs.reduce((obj, log) => {
const { targetType } = log;
obj[targetType] = obj[targetType] || [];