Files
desktop/app/providers/ProtocolProvider/protocol/packets/packet.search.ts
rosetta 83f38dc63f 'init'
2026-01-30 05:01:05 +02:00

77 lines
2.1 KiB
TypeScript

import Packet from "../packet";
import Stream from "../stream";
import { OnlineState } from "./packet.onlinestate";
export interface PacketSearchUser {
username: string;
title: string;
publicKey: string;
verified: number;
online: OnlineState;
}
export class PacketSearch extends Packet {
private privateKey : string = "";
private search : string = "";
private users : PacketSearchUser[] = [];
public getPacketId(): number {
return 0x03;
}
public _receive(stream: Stream): void {
this.privateKey = stream.readString();
this.search = stream.readString();
const userCount = stream.readInt16();
for (let i = 0; i < userCount; i++) {
const username = stream.readString();
const title = stream.readString();
const publicKey = stream.readString();
const verified = stream.readInt8();
const online = stream.readInt8();
this.users.push({ username, title, publicKey, online, verified });
}
}
public _send(): Stream {
const stream = new Stream();
stream.writeInt16(this.getPacketId());
stream.writeString(this.privateKey);
stream.writeString(this.search);
stream.writeInt16(this.users.length);
for (const user of this.users) {
stream.writeString(user.username);
stream.writeString(user.title);
stream.writeString(user.publicKey);
stream.writeInt8(user.verified);
stream.writeInt8(user.online);
}
return stream;
}
public getPrivateKey(): string {
return this.privateKey;
}
public setPrivateKey(privateKey: string): void {
this.privateKey = privateKey;
}
public getSearch(): string {
return this.search;
}
public setSearch(search: string): void {
this.search = search;
}
public addUser(searchUser: PacketSearchUser): void {
this.users.push(searchUser);
}
public getUsers(): PacketSearchUser[] {
return this.users;
}
}