diff --git a/packages/communication/src/NitroMessages.ts b/packages/communication/src/NitroMessages.ts index 0a6abc5..d9ae109 100644 --- a/packages/communication/src/NitroMessages.ts +++ b/packages/communication/src/NitroMessages.ts @@ -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; @@ -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 diff --git a/packages/communication/src/messages/incoming/IncomingHeader.ts b/packages/communication/src/messages/incoming/IncomingHeader.ts index 78db29a..9b25958 100644 --- a/packages/communication/src/messages/incoming/IncomingHeader.ts +++ b/packages/communication/src/messages/incoming/IncomingHeader.ts @@ -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; } diff --git a/packages/communication/src/messages/incoming/housekeeping/HousekeepingRoomDetailEvent.ts b/packages/communication/src/messages/incoming/housekeeping/HousekeepingRoomDetailEvent.ts new file mode 100644 index 0000000..2b5c766 --- /dev/null +++ b/packages/communication/src/messages/incoming/housekeeping/HousekeepingRoomDetailEvent.ts @@ -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; + } +} diff --git a/packages/communication/src/messages/incoming/housekeeping/HousekeepingRoomListEvent.ts b/packages/communication/src/messages/incoming/housekeeping/HousekeepingRoomListEvent.ts new file mode 100644 index 0000000..ecffe28 --- /dev/null +++ b/packages/communication/src/messages/incoming/housekeeping/HousekeepingRoomListEvent.ts @@ -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; + } +} diff --git a/packages/communication/src/messages/incoming/housekeeping/index.ts b/packages/communication/src/messages/incoming/housekeeping/index.ts index 0b9a86a..9d293d5 100644 --- a/packages/communication/src/messages/incoming/housekeeping/index.ts +++ b/packages/communication/src/messages/incoming/housekeeping/index.ts @@ -1,2 +1,4 @@ export * from './HousekeepingActionResultEvent'; +export * from './HousekeepingRoomDetailEvent'; +export * from './HousekeepingRoomListEvent'; export * from './HousekeepingUserDetailEvent'; diff --git a/packages/communication/src/messages/outgoing/OutgoingHeader.ts b/packages/communication/src/messages/outgoing/OutgoingHeader.ts index ee7e229..dacc8fb 100644 --- a/packages/communication/src/messages/outgoing/OutgoingHeader.ts +++ b/packages/communication/src/messages/outgoing/OutgoingHeader.ts @@ -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; } diff --git a/packages/communication/src/messages/outgoing/housekeeping/HousekeepingDeleteRoomComposer.ts b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingDeleteRoomComposer.ts new file mode 100644 index 0000000..9c22813 --- /dev/null +++ b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingDeleteRoomComposer.ts @@ -0,0 +1,11 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class HousekeepingDeleteRoomComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(roomId: number) { this._data = [roomId]; } + + public getMessageArray() { return this._data; } + public dispose(): void { return; } +} diff --git a/packages/communication/src/messages/outgoing/housekeeping/HousekeepingFindRoomByIdComposer.ts b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingFindRoomByIdComposer.ts new file mode 100644 index 0000000..83d46f8 --- /dev/null +++ b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingFindRoomByIdComposer.ts @@ -0,0 +1,11 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class HousekeepingFindRoomByIdComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(roomId: number) { this._data = [roomId]; } + + public getMessageArray() { return this._data; } + public dispose(): void { return; } +} diff --git a/packages/communication/src/messages/outgoing/housekeeping/HousekeepingKickAllFromRoomComposer.ts b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingKickAllFromRoomComposer.ts new file mode 100644 index 0000000..2f635d0 --- /dev/null +++ b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingKickAllFromRoomComposer.ts @@ -0,0 +1,11 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class HousekeepingKickAllFromRoomComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(roomId: number) { this._data = [roomId]; } + + public getMessageArray() { return this._data; } + public dispose(): void { return; } +} diff --git a/packages/communication/src/messages/outgoing/housekeeping/HousekeepingMuteRoomComposer.ts b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingMuteRoomComposer.ts new file mode 100644 index 0000000..df3efc2 --- /dev/null +++ b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingMuteRoomComposer.ts @@ -0,0 +1,11 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class HousekeepingMuteRoomComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(roomId: number, minutes: number) { this._data = [roomId, minutes]; } + + public getMessageArray() { return this._data; } + public dispose(): void { return; } +} diff --git a/packages/communication/src/messages/outgoing/housekeeping/HousekeepingRoomStateComposer.ts b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingRoomStateComposer.ts new file mode 100644 index 0000000..b375ccb --- /dev/null +++ b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingRoomStateComposer.ts @@ -0,0 +1,11 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class HousekeepingRoomStateComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(roomId: number, open: boolean) { this._data = [roomId, open]; } + + public getMessageArray() { return this._data; } + public dispose(): void { return; } +} diff --git a/packages/communication/src/messages/outgoing/housekeeping/HousekeepingSearchRoomsComposer.ts b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingSearchRoomsComposer.ts new file mode 100644 index 0000000..39977d0 --- /dev/null +++ b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingSearchRoomsComposer.ts @@ -0,0 +1,11 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class HousekeepingSearchRoomsComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(query: string, exactMatch: boolean, limit: number) { this._data = [query, exactMatch, limit]; } + + public getMessageArray() { return this._data; } + public dispose(): void { return; } +} diff --git a/packages/communication/src/messages/outgoing/housekeeping/HousekeepingTransferRoomOwnershipComposer.ts b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingTransferRoomOwnershipComposer.ts new file mode 100644 index 0000000..1a01f0d --- /dev/null +++ b/packages/communication/src/messages/outgoing/housekeeping/HousekeepingTransferRoomOwnershipComposer.ts @@ -0,0 +1,11 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class HousekeepingTransferRoomOwnershipComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(roomId: number, newOwnerId: number) { this._data = [roomId, newOwnerId]; } + + public getMessageArray() { return this._data; } + public dispose(): void { return; } +} diff --git a/packages/communication/src/messages/outgoing/housekeeping/index.ts b/packages/communication/src/messages/outgoing/housekeeping/index.ts index d70d508..5fed902 100644 --- a/packages/communication/src/messages/outgoing/housekeeping/index.ts +++ b/packages/communication/src/messages/outgoing/housekeeping/index.ts @@ -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'; diff --git a/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomData.ts b/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomData.ts new file mode 100644 index 0000000..97c0d68 --- /dev/null +++ b/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomData.ts @@ -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; } +} diff --git a/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomDetailParser.ts b/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomDetailParser.ts new file mode 100644 index 0000000..dfebd6a --- /dev/null +++ b/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomDetailParser.ts @@ -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; } +} diff --git a/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomListParser.ts b/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomListParser.ts new file mode 100644 index 0000000..de81ac2 --- /dev/null +++ b/packages/communication/src/messages/parser/housekeeping/HousekeepingRoomListParser.ts @@ -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; } +} diff --git a/packages/communication/src/messages/parser/housekeeping/index.ts b/packages/communication/src/messages/parser/housekeeping/index.ts index 6dbabb1..8767e59 100644 --- a/packages/communication/src/messages/parser/housekeeping/index.ts +++ b/packages/communication/src/messages/parser/housekeeping/index.ts @@ -1,3 +1,6 @@ export * from './HousekeepingActionResultParser'; +export * from './HousekeepingRoomData'; +export * from './HousekeepingRoomDetailParser'; +export * from './HousekeepingRoomListParser'; export * from './HousekeepingUserDetailData'; export * from './HousekeepingUserDetailParser';