You've already forked Nitro_Render_V3
mirror of
https://github.com/duckietm/Nitro_Render_V3.git
synced 2026-06-19 15:06:20 +00:00
feat(communication): housekeeping rooms domain — 7 composers + 2 events
* Outgoing 9110-9116: find-room-by-id, search-rooms (exact|prefix), room-state (open|close toggle), mute-room, kick-all-from-room, transfer-room-ownership, delete-room. * Incoming 9202 HousekeepingRoomDetailEvent + 9203 RoomListEvent. * HousekeepingRoomData parser data class with the 11 IHousekeepingRoom fields. Single-room and list events share the same data class via composition. `yarn compile:fast` clean.
This commit is contained in:
@@ -7,7 +7,7 @@ import { ConfInvisStateMessageEvent } from './messages';
|
||||
import { HanditemBlockStateMessageEvent } from './messages';
|
||||
import { TranslationLanguagesEvent, TranslationLanguagesRequestComposer, TranslationResultEvent, TranslationTextRequestComposer } from './messages';
|
||||
import { YouTubeRoomBroadcastEvent, YouTubeRoomPlayComposer, YouTubeRoomSettingsComposer, YouTubeRoomSettingsEvent, YouTubeRoomWatchersEvent, YouTubeRoomWatchingComposer } from './messages';
|
||||
import { HousekeepingActionResultEvent, HousekeepingBanUserComposer, HousekeepingFindUserByIdComposer, HousekeepingFindUserByNameComposer, HousekeepingForceDisconnectUserComposer, HousekeepingKickUserComposer, HousekeepingMuteUserComposer, HousekeepingResetUserPasswordComposer, HousekeepingSetUserRankComposer, HousekeepingTradeLockUserComposer, HousekeepingUnbanUserComposer, HousekeepingUserDetailEvent } from './messages';
|
||||
import { HousekeepingActionResultEvent, HousekeepingBanUserComposer, HousekeepingDeleteRoomComposer, HousekeepingFindRoomByIdComposer, HousekeepingFindUserByIdComposer, HousekeepingFindUserByNameComposer, HousekeepingForceDisconnectUserComposer, HousekeepingKickAllFromRoomComposer, HousekeepingKickUserComposer, HousekeepingMuteRoomComposer, HousekeepingMuteUserComposer, HousekeepingResetUserPasswordComposer, HousekeepingRoomDetailEvent, HousekeepingRoomListEvent, HousekeepingRoomStateComposer, HousekeepingSearchRoomsComposer, HousekeepingSetUserRankComposer, HousekeepingTradeLockUserComposer, HousekeepingTransferRoomOwnershipComposer, HousekeepingUnbanUserComposer, HousekeepingUserDetailEvent } from './messages';
|
||||
export class NitroMessages implements IMessageConfiguration
|
||||
{
|
||||
private _events: Map<number, Function>;
|
||||
@@ -510,6 +510,8 @@ export class NitroMessages implements IMessageConfiguration
|
||||
// Housekeeping (in-client admin panel)
|
||||
this._events.set(IncomingHeader.HOUSEKEEPING_USER_DETAIL, HousekeepingUserDetailEvent);
|
||||
this._events.set(IncomingHeader.HOUSEKEEPING_ACTION_RESULT, HousekeepingActionResultEvent);
|
||||
this._events.set(IncomingHeader.HOUSEKEEPING_ROOM_DETAIL, HousekeepingRoomDetailEvent);
|
||||
this._events.set(IncomingHeader.HOUSEKEEPING_ROOM_LIST, HousekeepingRoomListEvent);
|
||||
this._events.set(IncomingHeader.WIRED_REWARD, WiredRewardResultMessageEvent);
|
||||
this._events.set(IncomingHeader.WIRED_SAVE, WiredSaveSuccessEvent);
|
||||
this._events.set(IncomingHeader.WIRED_ERROR, WiredValidationErrorEvent);
|
||||
@@ -1272,6 +1274,13 @@ export class NitroMessages implements IMessageConfiguration
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_SET_USER_RANK, HousekeepingSetUserRankComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_TRADE_LOCK_USER, HousekeepingTradeLockUserComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_RESET_USER_PASSWORD, HousekeepingResetUserPasswordComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_FIND_ROOM_BY_ID, HousekeepingFindRoomByIdComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_SEARCH_ROOMS, HousekeepingSearchRoomsComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_ROOM_STATE, HousekeepingRoomStateComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_MUTE_ROOM, HousekeepingMuteRoomComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_KICK_ALL_FROM_ROOM, HousekeepingKickAllFromRoomComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_TRANSFER_ROOM_OWNERSHIP, HousekeepingTransferRoomOwnershipComposer);
|
||||
this._composers.set(OutgoingHeader.HOUSEKEEPING_DELETE_ROOM, HousekeepingDeleteRoomComposer);
|
||||
}
|
||||
|
||||
public get events(): Map<number, Function>
|
||||
|
||||
@@ -507,4 +507,6 @@ export class IncomingHeader
|
||||
// Housekeeping (in-client admin panel) — IDs 9200..9299 reserved
|
||||
public static HOUSEKEEPING_USER_DETAIL = 9200;
|
||||
public static HOUSEKEEPING_ACTION_RESULT = 9201;
|
||||
public static HOUSEKEEPING_ROOM_DETAIL = 9202;
|
||||
public static HOUSEKEEPING_ROOM_LIST = 9203;
|
||||
}
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
import { IMessageEvent } from '@nitrots/api';
|
||||
import { MessageEvent } from '@nitrots/events';
|
||||
import { HousekeepingRoomDetailParser } from '../../parser';
|
||||
|
||||
export class HousekeepingRoomDetailEvent extends MessageEvent implements IMessageEvent
|
||||
{
|
||||
constructor(callBack: Function)
|
||||
{
|
||||
super(callBack, HousekeepingRoomDetailParser);
|
||||
}
|
||||
|
||||
public getParser(): HousekeepingRoomDetailParser
|
||||
{
|
||||
return this.parser as HousekeepingRoomDetailParser;
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
import { IMessageEvent } from '@nitrots/api';
|
||||
import { MessageEvent } from '@nitrots/events';
|
||||
import { HousekeepingRoomListParser } from '../../parser';
|
||||
|
||||
export class HousekeepingRoomListEvent extends MessageEvent implements IMessageEvent
|
||||
{
|
||||
constructor(callBack: Function)
|
||||
{
|
||||
super(callBack, HousekeepingRoomListParser);
|
||||
}
|
||||
|
||||
public getParser(): HousekeepingRoomListParser
|
||||
{
|
||||
return this.parser as HousekeepingRoomListParser;
|
||||
}
|
||||
}
|
||||
@@ -1,2 +1,4 @@
|
||||
export * from './HousekeepingActionResultEvent';
|
||||
export * from './HousekeepingRoomDetailEvent';
|
||||
export * from './HousekeepingRoomListEvent';
|
||||
export * from './HousekeepingUserDetailEvent';
|
||||
|
||||
@@ -534,4 +534,11 @@ export class OutgoingHeader
|
||||
public static HOUSEKEEPING_SET_USER_RANK = 9107;
|
||||
public static HOUSEKEEPING_TRADE_LOCK_USER = 9108;
|
||||
public static HOUSEKEEPING_RESET_USER_PASSWORD = 9109;
|
||||
public static HOUSEKEEPING_FIND_ROOM_BY_ID = 9110;
|
||||
public static HOUSEKEEPING_SEARCH_ROOMS = 9111;
|
||||
public static HOUSEKEEPING_ROOM_STATE = 9112;
|
||||
public static HOUSEKEEPING_MUTE_ROOM = 9113;
|
||||
public static HOUSEKEEPING_KICK_ALL_FROM_ROOM = 9114;
|
||||
public static HOUSEKEEPING_TRANSFER_ROOM_OWNERSHIP = 9115;
|
||||
public static HOUSEKEEPING_DELETE_ROOM = 9116;
|
||||
}
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { IMessageComposer } from '@nitrots/api';
|
||||
|
||||
export class HousekeepingDeleteRoomComposer implements IMessageComposer<ConstructorParameters<typeof HousekeepingDeleteRoomComposer>>
|
||||
{
|
||||
private _data: ConstructorParameters<typeof HousekeepingDeleteRoomComposer>;
|
||||
|
||||
constructor(roomId: number) { this._data = [roomId]; }
|
||||
|
||||
public getMessageArray() { return this._data; }
|
||||
public dispose(): void { return; }
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { IMessageComposer } from '@nitrots/api';
|
||||
|
||||
export class HousekeepingFindRoomByIdComposer implements IMessageComposer<ConstructorParameters<typeof HousekeepingFindRoomByIdComposer>>
|
||||
{
|
||||
private _data: ConstructorParameters<typeof HousekeepingFindRoomByIdComposer>;
|
||||
|
||||
constructor(roomId: number) { this._data = [roomId]; }
|
||||
|
||||
public getMessageArray() { return this._data; }
|
||||
public dispose(): void { return; }
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { IMessageComposer } from '@nitrots/api';
|
||||
|
||||
export class HousekeepingKickAllFromRoomComposer implements IMessageComposer<ConstructorParameters<typeof HousekeepingKickAllFromRoomComposer>>
|
||||
{
|
||||
private _data: ConstructorParameters<typeof HousekeepingKickAllFromRoomComposer>;
|
||||
|
||||
constructor(roomId: number) { this._data = [roomId]; }
|
||||
|
||||
public getMessageArray() { return this._data; }
|
||||
public dispose(): void { return; }
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { IMessageComposer } from '@nitrots/api';
|
||||
|
||||
export class HousekeepingMuteRoomComposer implements IMessageComposer<ConstructorParameters<typeof HousekeepingMuteRoomComposer>>
|
||||
{
|
||||
private _data: ConstructorParameters<typeof HousekeepingMuteRoomComposer>;
|
||||
|
||||
constructor(roomId: number, minutes: number) { this._data = [roomId, minutes]; }
|
||||
|
||||
public getMessageArray() { return this._data; }
|
||||
public dispose(): void { return; }
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { IMessageComposer } from '@nitrots/api';
|
||||
|
||||
export class HousekeepingRoomStateComposer implements IMessageComposer<ConstructorParameters<typeof HousekeepingRoomStateComposer>>
|
||||
{
|
||||
private _data: ConstructorParameters<typeof HousekeepingRoomStateComposer>;
|
||||
|
||||
constructor(roomId: number, open: boolean) { this._data = [roomId, open]; }
|
||||
|
||||
public getMessageArray() { return this._data; }
|
||||
public dispose(): void { return; }
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { IMessageComposer } from '@nitrots/api';
|
||||
|
||||
export class HousekeepingSearchRoomsComposer implements IMessageComposer<ConstructorParameters<typeof HousekeepingSearchRoomsComposer>>
|
||||
{
|
||||
private _data: ConstructorParameters<typeof HousekeepingSearchRoomsComposer>;
|
||||
|
||||
constructor(query: string, exactMatch: boolean, limit: number) { this._data = [query, exactMatch, limit]; }
|
||||
|
||||
public getMessageArray() { return this._data; }
|
||||
public dispose(): void { return; }
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { IMessageComposer } from '@nitrots/api';
|
||||
|
||||
export class HousekeepingTransferRoomOwnershipComposer implements IMessageComposer<ConstructorParameters<typeof HousekeepingTransferRoomOwnershipComposer>>
|
||||
{
|
||||
private _data: ConstructorParameters<typeof HousekeepingTransferRoomOwnershipComposer>;
|
||||
|
||||
constructor(roomId: number, newOwnerId: number) { this._data = [roomId, newOwnerId]; }
|
||||
|
||||
public getMessageArray() { return this._data; }
|
||||
public dispose(): void { return; }
|
||||
}
|
||||
@@ -1,10 +1,17 @@
|
||||
export * from './HousekeepingBanUserComposer';
|
||||
export * from './HousekeepingDeleteRoomComposer';
|
||||
export * from './HousekeepingFindRoomByIdComposer';
|
||||
export * from './HousekeepingFindUserByIdComposer';
|
||||
export * from './HousekeepingFindUserByNameComposer';
|
||||
export * from './HousekeepingForceDisconnectUserComposer';
|
||||
export * from './HousekeepingKickAllFromRoomComposer';
|
||||
export * from './HousekeepingKickUserComposer';
|
||||
export * from './HousekeepingMuteRoomComposer';
|
||||
export * from './HousekeepingMuteUserComposer';
|
||||
export * from './HousekeepingResetUserPasswordComposer';
|
||||
export * from './HousekeepingRoomStateComposer';
|
||||
export * from './HousekeepingSearchRoomsComposer';
|
||||
export * from './HousekeepingSetUserRankComposer';
|
||||
export * from './HousekeepingTradeLockUserComposer';
|
||||
export * from './HousekeepingTransferRoomOwnershipComposer';
|
||||
export * from './HousekeepingUnbanUserComposer';
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
import { IMessageDataWrapper } from '@nitrots/api';
|
||||
|
||||
export class HousekeepingRoomData
|
||||
{
|
||||
private _id: number = 0;
|
||||
private _name: string = '';
|
||||
private _description: string = '';
|
||||
private _ownerId: number = 0;
|
||||
private _ownerName: string = '';
|
||||
private _userCount: number = 0;
|
||||
private _maxUsers: number = 0;
|
||||
private _isLocked: boolean = false;
|
||||
private _isMuted: boolean = false;
|
||||
private _isPublic: boolean = false;
|
||||
private _createdAt: number = 0;
|
||||
|
||||
constructor(wrapper: IMessageDataWrapper)
|
||||
{
|
||||
if(!wrapper) throw new Error('invalid_wrapper');
|
||||
|
||||
this._id = wrapper.readInt();
|
||||
this._name = wrapper.readString();
|
||||
this._description = wrapper.readString();
|
||||
this._ownerId = wrapper.readInt();
|
||||
this._ownerName = wrapper.readString();
|
||||
this._userCount = wrapper.readInt();
|
||||
this._maxUsers = wrapper.readInt();
|
||||
this._isLocked = wrapper.readBoolean();
|
||||
this._isMuted = wrapper.readBoolean();
|
||||
this._isPublic = wrapper.readBoolean();
|
||||
this._createdAt = wrapper.readInt();
|
||||
}
|
||||
|
||||
public get id(): number { return this._id; }
|
||||
public get name(): string { return this._name; }
|
||||
public get description(): string { return this._description; }
|
||||
public get ownerId(): number { return this._ownerId; }
|
||||
public get ownerName(): string { return this._ownerName; }
|
||||
public get userCount(): number { return this._userCount; }
|
||||
public get maxUsers(): number { return this._maxUsers; }
|
||||
public get isLocked(): boolean { return this._isLocked; }
|
||||
public get isMuted(): boolean { return this._isMuted; }
|
||||
public get isPublic(): boolean { return this._isPublic; }
|
||||
public get createdAt(): number { return this._createdAt; }
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
import { IMessageDataWrapper, IMessageParser } from '@nitrots/api';
|
||||
import { HousekeepingRoomData } from './HousekeepingRoomData';
|
||||
|
||||
export class HousekeepingRoomDetailParser implements IMessageParser
|
||||
{
|
||||
private _found: boolean = false;
|
||||
private _room: HousekeepingRoomData | null = null;
|
||||
|
||||
public flush(): boolean
|
||||
{
|
||||
this._found = false;
|
||||
this._room = null;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public parse(wrapper: IMessageDataWrapper): boolean
|
||||
{
|
||||
if(!wrapper) return false;
|
||||
|
||||
this._found = wrapper.readBoolean();
|
||||
|
||||
if(this._found) this._room = new HousekeepingRoomData(wrapper);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public get found(): boolean { return this._found; }
|
||||
public get room(): HousekeepingRoomData | null { return this._room; }
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { IMessageDataWrapper, IMessageParser } from '@nitrots/api';
|
||||
import { HousekeepingRoomData } from './HousekeepingRoomData';
|
||||
|
||||
export class HousekeepingRoomListParser implements IMessageParser
|
||||
{
|
||||
private _rooms: HousekeepingRoomData[] = [];
|
||||
|
||||
public flush(): boolean
|
||||
{
|
||||
this._rooms = [];
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public parse(wrapper: IMessageDataWrapper): boolean
|
||||
{
|
||||
if(!wrapper) return false;
|
||||
|
||||
const count = wrapper.readInt();
|
||||
|
||||
for(let i = 0; i < count; i++) this._rooms.push(new HousekeepingRoomData(wrapper));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public get rooms(): HousekeepingRoomData[] { return this._rooms; }
|
||||
}
|
||||
@@ -1,3 +1,6 @@
|
||||
export * from './HousekeepingActionResultParser';
|
||||
export * from './HousekeepingRoomData';
|
||||
export * from './HousekeepingRoomDetailParser';
|
||||
export * from './HousekeepingRoomListParser';
|
||||
export * from './HousekeepingUserDetailData';
|
||||
export * from './HousekeepingUserDetailParser';
|
||||
|
||||
Reference in New Issue
Block a user