124 lines
4.8 KiB
TypeScript
124 lines
4.8 KiB
TypeScript
|
import { Group } from "tc-shared/permission/GroupManager";
|
||
|
import { ServerAddress, ServerEntry } from "./Server";
|
||
|
import { ChannelEntry, ChannelProperties } from "./Channel";
|
||
|
import { ClientEntry } from "./Client";
|
||
|
import { ChannelTreeEntry } from "./ChannelTreeEntry";
|
||
|
import { ConnectionHandler, ViewReasonId } from "tc-shared/ConnectionHandler";
|
||
|
import { Registry } from "tc-shared/events";
|
||
|
import { ChannelTreePopoutController } from "tc-shared/ui/tree/popout/Controller";
|
||
|
import "./EntryTagsHandler";
|
||
|
import { ChannelTreeUIEvents } from "tc-shared/ui/tree/Definitions";
|
||
|
export interface ChannelTreeEvents {
|
||
|
notify_tree_reset: {};
|
||
|
notify_query_view_state_changed: {
|
||
|
queries_shown: boolean;
|
||
|
};
|
||
|
notify_popout_state_changed: {
|
||
|
popoutShown: boolean;
|
||
|
};
|
||
|
notify_entry_move_begin: {};
|
||
|
notify_entry_move_end: {};
|
||
|
notify_channel_created: {
|
||
|
channel: ChannelEntry;
|
||
|
};
|
||
|
notify_channel_moved: {
|
||
|
channel: ChannelEntry;
|
||
|
previousParent: ChannelEntry | undefined;
|
||
|
previousOrder: ChannelEntry | undefined;
|
||
|
};
|
||
|
notify_channel_deleted: {
|
||
|
channel: ChannelEntry;
|
||
|
};
|
||
|
notify_channel_client_order_changed: {
|
||
|
channel: ChannelEntry;
|
||
|
};
|
||
|
notify_channel_updated: {
|
||
|
channel: ChannelEntry;
|
||
|
channelProperties: ChannelProperties;
|
||
|
updatedProperties: ChannelProperties;
|
||
|
};
|
||
|
notify_channel_list_received: {};
|
||
|
notify_client_enter_view: {
|
||
|
client: ClientEntry;
|
||
|
reason: ViewReasonId;
|
||
|
isServerJoin: boolean;
|
||
|
targetChannel: ChannelEntry;
|
||
|
};
|
||
|
notify_client_moved: {
|
||
|
client: ClientEntry;
|
||
|
oldChannel: ChannelEntry | undefined;
|
||
|
newChannel: ChannelEntry;
|
||
|
};
|
||
|
notify_client_leave_view: {
|
||
|
client: ClientEntry;
|
||
|
reason: ViewReasonId;
|
||
|
message?: string;
|
||
|
isServerLeave: boolean;
|
||
|
sourceChannel: ChannelEntry;
|
||
|
};
|
||
|
notify_selected_entry_changed: {
|
||
|
oldEntry: ChannelTreeEntry<any> | undefined;
|
||
|
newEntry: ChannelTreeEntry<any> | undefined;
|
||
|
};
|
||
|
}
|
||
|
export declare class ChannelTree {
|
||
|
readonly events: Registry<ChannelTreeEvents>;
|
||
|
client: ConnectionHandler;
|
||
|
server: ServerEntry;
|
||
|
channels: ChannelEntry[];
|
||
|
clients: ClientEntry[];
|
||
|
channelsInitialized: boolean;
|
||
|
readonly popoutController: ChannelTreePopoutController;
|
||
|
mainTreeUiEvents: Registry<ChannelTreeUIEvents>;
|
||
|
private selectedEntry;
|
||
|
private showQueries;
|
||
|
private channelLast?;
|
||
|
private channelFirst?;
|
||
|
constructor(client: ConnectionHandler);
|
||
|
channelsOrdered(): ChannelEntry[];
|
||
|
findEntryId(entryId: number): ServerEntry | ChannelEntry | ClientEntry;
|
||
|
getSelectedEntry(): ChannelTreeEntry<any> | undefined;
|
||
|
setSelectedEntry(entry: ChannelTreeEntry<any> | undefined): void;
|
||
|
destroy(): void;
|
||
|
initialiseHead(serverName: string, address: ServerAddress): void;
|
||
|
rootChannel(): ChannelEntry[];
|
||
|
deleteChannel(channel: ChannelEntry): void;
|
||
|
handleChannelCreated(previous: ChannelEntry, parent: ChannelEntry, channelId: number, channelName: string): ChannelEntry;
|
||
|
findChannel(channelId: number): ChannelEntry | undefined;
|
||
|
/**
|
||
|
* Resolve a channel by its path
|
||
|
*/
|
||
|
resolveChannelPath(target: string): ChannelEntry | undefined;
|
||
|
find_channel_by_name(name: string, parent?: ChannelEntry, force_parent?: boolean): ChannelEntry | undefined;
|
||
|
private unregisterChannelFromTree;
|
||
|
moveChannel(channel: ChannelEntry, channelPrevious: ChannelEntry, parent: ChannelEntry, isInsertMove: boolean): void;
|
||
|
deleteClient(client: ClientEntry, reason: {
|
||
|
reason: ViewReasonId;
|
||
|
message?: string;
|
||
|
serverLeave: boolean;
|
||
|
}): void;
|
||
|
registerClient(client: ClientEntry): void;
|
||
|
unregisterClient(client: ClientEntry): void;
|
||
|
insertClient(client: ClientEntry, channel: ChannelEntry, reason: {
|
||
|
reason: ViewReasonId;
|
||
|
isServerJoin: boolean;
|
||
|
}): ClientEntry;
|
||
|
moveClient(client: ClientEntry, targetChannel: ChannelEntry): void;
|
||
|
findClient?(clientId: number): ClientEntry;
|
||
|
find_client_by_dbid?(client_dbid: number): ClientEntry;
|
||
|
find_client_by_unique_id?(unique_id: string): ClientEntry;
|
||
|
showContextMenu(x: number, y: number, on_close?: () => void): void;
|
||
|
showMultiSelectContextMenu(entries: ChannelTreeEntry<any>[], x: number, y: number): void;
|
||
|
clientsByGroup(group: Group): ClientEntry[];
|
||
|
clientsByChannel(channel: ChannelEntry): ClientEntry[];
|
||
|
reset(): void;
|
||
|
spawnCreateChannel(parent?: ChannelEntry): void;
|
||
|
toggle_server_queries(flag: boolean): void;
|
||
|
areServerQueriesShown(): boolean;
|
||
|
get_first_channel?(): ChannelEntry;
|
||
|
unsubscribe_all_channels(): void;
|
||
|
subscribe_all_channels(): void;
|
||
|
expand_channels(root?: ChannelEntry): void;
|
||
|
collapse_channels(root?: ChannelEntry): void;
|
||
|
}
|