import Packet from "../packet"; import Stream from "../stream"; export enum GroupStatus { JOINED = 0, INVALID = 1, NOT_JOINED = 2, BANNED = 3 } export class PacketGroupJoin extends Packet { private groupId: string = ""; private groupStatus: GroupStatus = GroupStatus.NOT_JOINED; /** * Строка группы, которая содержит информацию о группе, такую как ее название, описание и ключ * Строка зашифрована обратимым шифрованием, где ключом выступает - реальный приватный ключ * входящего в группу клиента. Нужно это для будущей синхронзации, так как клиенту на его другом * устройстве нужно получить ключ группы и ее информацию. Сервер расшифровать эту строку не может. Эту * строку может расшифровать только клиент, так как она зашифрована его приватным ключом */ private groupString: string = ""; public getPacketId(): number { return 0x14; } public _receive(stream: Stream): void { this.groupId = stream.readString(); this.groupStatus = stream.readInt8(); this.groupString = stream.readString(); } public _send(): Promise | Stream { const stream = new Stream(); stream.writeInt16(this.getPacketId()); stream.writeString(this.groupId); stream.writeInt8(this.groupStatus); stream.writeString(this.groupString); return stream; } public setGroupId(groupId: string) { this.groupId = groupId; } public getGroupId(): string { return this.groupId; } public setGroupStatus(groupStatus: GroupStatus) { this.groupStatus = groupStatus; } public getGroupStatus(): GroupStatus { return this.groupStatus; } public setGroupString(groupString: string) { this.groupString = groupString; } public getGroupString(): string { return this.groupString; } }