diff --git a/modules/renderer/imports/.copy_imports_shared.d.ts b/modules/renderer/imports/.copy_imports_shared.d.ts index e537540..00b95ed 100644 --- a/modules/renderer/imports/.copy_imports_shared.d.ts +++ b/modules/renderer/imports/.copy_imports_shared.d.ts @@ -1,5 +1,5 @@ -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/audio/audio.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\audio\audio.ts */ declare namespace audio { export namespace player { export interface Device { @@ -10,7 +10,7 @@ declare namespace audio { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/bookmarks.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\bookmarks.ts */ declare namespace bookmarks { export const boorkmak_connect; export interface ServerProperties { @@ -56,7 +56,7 @@ declare namespace bookmarks { export function add_current_server(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/BrowserIPC.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\BrowserIPC.ts */ declare interface Window { BroadcastChannel: BroadcastChannel; } @@ -179,7 +179,7 @@ declare namespace bipc { export function supported(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/CommandHandler.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\connection\CommandHandler.ts */ declare namespace connection { export class ServerConnectionCommandBoss extends AbstractCommandHandlerBoss { constructor(connection: AbstractServerConnection); @@ -188,6 +188,7 @@ declare namespace connection { readonly connection: AbstractServerConnection; readonly connection_handler: ConnectionHandler; constructor(connection: AbstractServerConnection); + private loggable_invoker(unique_id, client_id, name): log.server.base.Client | undefined; proxy_command_promise(promise: Promise, options: connection.CommandOptions); handle_command(command: ServerCommand): boolean; set_handler(command: string, handler: any); @@ -229,7 +230,7 @@ declare namespace connection { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/CommandHelper.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\connection\CommandHelper.ts */ declare namespace connection { export class CommandHelper extends AbstractCommandHandler { private _who_am_i: any; @@ -259,7 +260,7 @@ declare namespace connection { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/ConnectionBase.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\connection\ConnectionBase.ts */ declare namespace connection { export interface CommandOptions { flagset?: string[]; @@ -320,6 +321,8 @@ declare namespace connection { abstract unregister_client(client: VoiceClient): Promise; abstract voice_recorder(): RecorderProfile; abstract acquire_voice_recorder(recorder: RecorderProfile | undefined): Promise; + abstract get_encoder_codec(): number; + abstract set_encoder_codec(codec: number); } } export class ServerCommand { @@ -360,7 +363,7 @@ declare namespace connection { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/HandshakeHandler.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\connection\HandshakeHandler.ts */ declare namespace connection { export interface HandshakeIdentityHandler { connection: AbstractServerConnection; @@ -384,8 +387,10 @@ declare namespace connection { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/ServerConnectionDeclaration.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\connection\ServerConnectionDeclaration.ts */ declare enum ErrorID { + NOT_IMPLEMENTED = 0x2, + COMMAND_NOT_FOUND = 0x100, PERMISSION_ERROR = 2568, EMPTY_RESULT = 0x0501, PLAYLIST_IS_IN_USE = 0x2103, @@ -465,7 +470,7 @@ declare interface PlaylistSong { song_metadata: string; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ConnectionHandler.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ConnectionHandler.ts */ declare enum DisconnectReason { HANDLER_DESTROYED, REQUESTED, @@ -529,6 +534,7 @@ declare interface ConnectParameters { password: string; hashed: boolean; }; + auto_reconnect_attempt?: boolean; } declare class ConnectionHandler { channelTree: ChannelTree; @@ -582,7 +588,7 @@ declare class ConnectionHandler { destroy(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/crypto/asn1.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\crypto\asn1.ts */ declare namespace asn1 { export class Int10 { constructor(value?: any); @@ -674,7 +680,7 @@ declare namespace asn1 { export function decode(stream: string | ArrayBuffer); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/crypto/crc32.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\crypto\crc32.ts */ declare class Crc32 { private static readonly lookup; private crc: number; @@ -683,12 +689,12 @@ declare class Crc32 { digest(radix: number); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/crypto/hex.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\crypto\hex.ts */ declare namespace hex { export function encode(buffer); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/crypto/sha.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\crypto\sha.ts */ declare function define($); declare function unescape(string: string): string; declare class _sha1 { @@ -699,7 +705,7 @@ declare namespace sha { export function sha1(message: string | ArrayBuffer): PromiseLike; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/dns.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\dns.ts */ declare namespace dns { export interface AddressTarget { target_ip: string; @@ -717,15 +723,15 @@ declare namespace dns { } export const default_options: ResolveOptions; export function supported(); - export function resolve_address(address: string, options?: ResolveOptions): Promise; + export function resolve_address(address: ServerAddress, options?: ResolveOptions): Promise; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/events.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\events.ts */ declare namespace event { namespace global { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/FileManager.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\FileManager.ts */ declare class FileEntry { name: string; datetime: number; @@ -868,7 +874,7 @@ declare class IconManager { private _load_icon(id: number): Promise; download_icon(id: number): Promise; resolve_icon(id: number): Promise; - static generate_tag(icon: Promise | Icon, options?: { + static generate_tag(icon: Promise | Icon | undefined, options?: { animate?: boolean; }): JQuery; generateTag(id: number, options?: { @@ -912,12 +918,12 @@ declare class AvatarManager { }, client_unique_id: string, callback_loaded?: (successfully: boolean, error?: any) => any): JQuery; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/i18n/country.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\i18n\country.ts */ declare namespace i18n { export function country_name(alpha_code: string, fallback?: string); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/i18n/localize.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\i18n\localize.ts */ declare function guid(); declare namespace i18n { export interface TranslationKey { @@ -963,8 +969,8 @@ declare namespace i18n { export interface TranslationConfig { current_repository_url?: string; current_language?: string; - current_translation_url: string; - current_translation_path: string; + current_translation_url?: string; + current_translation_path?: string; } export interface RepositoryConfig { repositories?: { @@ -982,12 +988,13 @@ declare namespace i18n { export function delete_repository(repository: TranslationRepository); export function iterate_repositories(callback_entry: (repository: TranslationRepository) => any): Promise; export function select_translation(repository: TranslationRepository, entry: RepositoryTranslation); + /* ATTENTION: This method is called before most other library inizialisations! */ export function initialize(): Promise; } declare const tr: typeof i18n.tr; declare const tra: typeof i18n.tra; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/log.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\log.ts */ declare enum LogCategory { CHANNEL, CHANNEL_PROPERTIES, @@ -998,6 +1005,7 @@ declare enum LogCategory { GENERAL, NETWORKING, VOICE, + CHAT, AUDIO, I18N, IPC, @@ -1054,7 +1062,7 @@ declare namespace log { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/main.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\main.ts */ declare const js_render; declare const native_client; declare function getUserMediaFunctionPromise(): (constraints: MediaStreamConstraints) => Promise; @@ -1069,11 +1077,12 @@ declare function initialize_app(): Promise; declare function str2ab8(str); declare function arrayBufferBase64(base64: string); declare function base64_encode_ab(source: ArrayBufferLike); +declare function execute_default_connect(); declare function main(); declare const task_teaweb_starter: loader.Task; declare const task_certificate_callback: loader.Task; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/permission/GroupManager.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\permission\GroupManager.ts */ declare enum GroupType { QUERY, TEMPLATE, @@ -1123,7 +1132,7 @@ declare class GroupManager extends connection.AbstractCommandHandler { private handle_group_permission_list(json: any[]); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/permission/PermissionManager.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\permission\PermissionManager.ts */ declare enum PermissionType { B_SERVERINSTANCE_HELP_VIEW = "b_serverinstance_help_view", B_SERVERINSTANCE_VERSION_VIEW = "b_serverinstance_version_view", @@ -1557,7 +1566,7 @@ declare class PermissionManager extends connection.AbstractCommandHandler { export_permission_types(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/PPTListener.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\PPTListener.ts */ declare enum KeyCode { KEY_CANCEL = 3, KEY_HELP = 6, @@ -1708,7 +1717,7 @@ declare namespace ppt { export function key_description(key: KeyDescriptor); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/ConnectionProfile.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\profiles\ConnectionProfile.ts */ declare namespace profiles { export class ConnectionProfile { id: string; @@ -1720,6 +1729,7 @@ declare namespace profiles { [key: string]: identities.Identity; }; constructor(id: string); + connect_username(): string; selected_identity(current_type?: identities.IdentitifyType): identities.Identity; selected_type?(): identities.IdentitifyType; set_identity(type: identities.IdentitifyType, identity: identities.Identity); @@ -1740,7 +1750,7 @@ declare namespace profiles { export function delete_profile(profile: ConnectionProfile); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/identities/NameIdentity.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\profiles\identities\NameIdentity.ts */ declare namespace profiles.identities { export class NameHandshakeHandler extends AbstractHandshakeIdentityHandler { readonly identity: NameIdentity; @@ -1755,6 +1765,7 @@ declare namespace profiles.identities { constructor(name?: string); set_name(name: string); name(): string; + fallback_name(): string | undefined; uid(): string; type(): IdentitifyType; valid(): boolean; @@ -1764,7 +1775,7 @@ declare namespace profiles.identities { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/identities/TeaForumIdentity.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\profiles\identities\TeaForumIdentity.ts */ declare namespace profiles.identities { export class TeaForumHandshakeHandler extends AbstractHandshakeIdentityHandler { readonly identity: TeaForumIdentity; @@ -1783,7 +1794,7 @@ declare namespace profiles.identities { decode(data): Promise; encode(): string; spawn_identity_handshake_handler(connection: connection.AbstractServerConnection): connection.HandshakeIdentityHandler; - name(): string; + fallback_name(): string | undefined; type(): profiles.identities.IdentitifyType; uid(): string; } @@ -1793,7 +1804,7 @@ declare namespace profiles.identities { export function static_forum_identity(): TeaForumIdentity | undefined; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/identities/TeamSpeakIdentity.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\profiles\identities\TeamSpeakIdentity.ts */ declare namespace profiles.identities { export namespace CryptoHelper { export function base64_url_encode(str); @@ -1839,7 +1850,7 @@ declare namespace profiles.identities { private _crypto_key_sign: CryptoKey; private _unique_id: string; constructor(private_key?: string, hash?: string, name?: string, initialize?: boolean); - name(): string; + fallback_name(): string | undefined; uid(): string; type(): IdentitifyType; valid(): boolean; @@ -1861,7 +1872,7 @@ declare namespace profiles.identities { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/identities/teaspeak-forum.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\profiles\identities\teaspeak-forum.ts */ declare interface Window { grecaptcha: GReCaptcha; } @@ -1921,7 +1932,7 @@ declare namespace forum { export function logout(): Promise; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/Identity.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\profiles\Identity.ts */ declare namespace profiles.identities { export enum IdentitifyType { TEAFORO, @@ -1929,7 +1940,7 @@ declare namespace profiles.identities { NICKNAME } export interface Identity { - name(): string; + fallback_name(): string | undefined; uid(): string; type(): IdentitifyType; valid(): boolean; @@ -1955,15 +1966,15 @@ declare namespace profiles.identities { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/proto.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\proto.ts */ declare interface Array { remove(elem?: T): boolean; last?(): T; pop_front(): T | undefined; } declare interface JSON { - map_to(object: T, json: any, variables?: string | string[], validator?: (map_field: string, map_value: string) => boolean, variable_direction?: number): T; - map_field_to(object: T, value: any, field: string): T; + map_to(object: T, json: any, variables?: string | string[], validator?: (map_field: string, map_value: string) => boolean, variable_direction?: number): number; + map_field_to(object: T, value: any, field: string): boolean; } declare type JQueryScrollType = "height" | "width"; declare interface JQuery { @@ -2039,7 +2050,7 @@ declare interface Navigator { webkitGetUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/settings.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\settings.ts */ declare interface SettingsKey { key: string; fallback_keys?: string | string[]; @@ -2105,6 +2116,9 @@ declare class Settings extends StaticSettings { static readonly KEY_CHANNEL_EDIT_ADVANCED: SettingsKey; static readonly KEY_TEAFORO_URL: SettingsKey; static readonly KEY_FONT_SIZE: SettingsKey; + static readonly KEY_ICON_SIZE: SettingsKey; + static readonly KEY_LAST_INVITE_LINK_TYPE: SettingsKey; + static readonly FN_INVITE_LINK_SETTING: (name: string) => SettingsKey; static readonly FN_SERVER_CHANNEL_SUBSCRIBE_MODE: (channel_id: number) => SettingsKey; static readonly FN_PROFILE_RECORD: (name: string) => SettingsKey; static readonly KEYS; @@ -2133,7 +2147,7 @@ declare class ServerSettings extends SettingsBase { } declare let settings: Settings; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/sound/Sounds.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\sound\Sounds.ts */ declare enum Sound { SOUND_TEST = "sound.test", SOUND_EGG = "sound.egg", @@ -2222,7 +2236,7 @@ declare namespace sound { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/stats.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\stats.ts */ declare namespace stats { export enum CloseCodes { UNSET = 3000, @@ -2270,7 +2284,7 @@ declare namespace stats { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/channel.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\channel.ts */ declare enum ChannelType { PERMANENT, SEMI_PERMANENT, @@ -2308,6 +2322,7 @@ declare class ChannelProperties { //Only after request channel_description: string; channel_flag_conversation_private: boolean; + channel_conversation_history_length: number; } declare class ChannelEntry { channelTree: ChannelTree; @@ -2350,7 +2365,8 @@ declare class ChannelEntry { channelTag(): JQuery; siblingTag(): JQuery; clientTag(): JQuery; - reorderClients(); + private _reorder_timer: number; + reorderClients(sync?: boolean); initializeListener(); showContextMenu(x: number, y: number, on_close?: () => void); handle_frame_resized(); @@ -2382,7 +2398,7 @@ declare class ChannelEntry { log_data(): log.server.base.Channel; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/client_move.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\client_move.ts */ declare class ClientMover { static readonly listener_root; static readonly move_element; @@ -2408,7 +2424,7 @@ declare class ClientMover { deactivate(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/client.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\client.ts */ declare enum ClientType { CLIENT_VOICE, CLIENT_QUERY, @@ -2527,6 +2543,7 @@ declare class ClientEntry { protected initializeListener(); protected contextmenu_info(): contextmenu.MenuEntry[]; protected assignment_context(): contextmenu.MenuEntry[]; + open_assignment_modal(); open_text_chat(); showContextMenu(x: number, y: number, on_close?: () => void); // @ts-ignore @@ -2560,6 +2577,8 @@ declare class ClientEntry { /* max 1s ago, so we could update every second */ request_connection_info(): Promise; set_connection_info(info: ClientConnectionInfo); + // @ts-ignore + set flag_text_unread(flag: boolean); } declare class LocalClientEntry extends ClientEntry { handle: ConnectionHandler; @@ -2607,12 +2626,12 @@ declare class MusicClientEntry extends ClientEntry { requestPlayerInfo(max_age?: number): Promise; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/context_divider.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\elements\context_divider.ts */ declare interface JQuery { dividerfy(): this; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/context_menu.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\elements\context_menu.ts */ declare namespace contextmenu { export interface MenuEntry { callback?: () => void; @@ -2663,7 +2682,7 @@ declare class HTMLContextMenuProvider implements contextmenu.ContextMenuProvider html_format_enabled(): boolean; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/modal.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\elements\modal.ts */ declare enum ElementType { HEADER, BODY, @@ -2725,12 +2744,13 @@ declare interface JQuery { modalize(entry_callback?: (header: JQuery, body: JQuery, footer: JQuery) => ModalElements | void, properties?: ModalProperties | any): Modal; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/net_graph.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\elements\net_graph.ts */ declare namespace net.graph { export type Entry = { timestamp: number; upload: number; download: number; + highlight?: boolean; }; export type Style = { background_color: string; @@ -2783,8 +2803,13 @@ declare namespace net.graph { private _entry_max; private _max_space; private _max_gap; + private _listener_mouse_move; + private _listener_mouse_out; private _animate_loop; - private _time_span: TimeSpan; + _time_span: TimeSpan; + private _detailed_shown; + callback_detailed_info: (upload: number, download: number, timestamp: number, event: MouseEvent) => any; + callback_detailed_hide: () => any; constructor(canvas: HTMLCanvasElement); initialize(); terminate(); @@ -2794,15 +2819,17 @@ declare namespace net.graph { insert_entries(entries: Entry[]); resize(); cleanup(); - private calculate_time_span(): { + calculate_time_span(): { begin: number; end: number; }; draw(); + private on_mouse_move(event: MouseEvent); + private on_mouse_leave(event: MouseEvent); } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/slider.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\elements\slider.ts */ declare interface SliderOptions { min_value?: number; max_value?: number; @@ -2816,7 +2843,7 @@ declare interface Slider { } declare function sliderfy(slider: JQuery, options?: SliderOptions): Slider; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/tab.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\elements\tab.ts */ declare interface JQuery { asTabWidget(copy?: boolean): JQuery; tabify(copy?: boolean): this; @@ -2824,7 +2851,7 @@ declare interface JQuery { } declare var TabFunctions; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/tooltip.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\elements\tooltip.ts */ declare function tooltip(entry: JQuery); declare namespace tooltip { export type Handle = { @@ -2836,7 +2863,7 @@ declare namespace tooltip { export function initialize(entry: JQuery): Handle; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/chat_frame.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\frames\chat_frame.ts */ declare namespace chat { export enum InfoFrameMode { NONE = "none", @@ -2850,6 +2877,8 @@ declare namespace chat { private _mode: InfoFrameMode; private _value_ping: JQuery; private _ping_updater: number; + private _channel_text: ChannelEntry; + private _channel_voice: ChannelEntry; private _button_conversation: HTMLElement; constructor(handle: Frame); html_tag(): JQuery; @@ -2858,6 +2887,8 @@ declare namespace chat { update_ping(); update_channel_talk(); update_channel_text(); + update_channel_client_count(channel: ChannelEntry); + private update_channel_limit(channel: ChannelEntry, tag: JQuery); update_chat_counter(); current_mode(): InfoFrameMode; set_mode(mode: InfoFrameMode); @@ -2868,9 +2899,13 @@ declare namespace chat { private _enabled: boolean; private __callback_text_changed; private __callback_key_down; + private __callback_key_up; private __callback_paste; private _typing_timeout: number; private _typing_last_event: number; + private _message_history: string[]; + private _message_history_length; + private _message_history_index; typing_interval: number; callback_typing: () => any; callback_text: (text: string) => any; @@ -2885,6 +2920,8 @@ declare namespace chat { private _callback_paste(event: ClipboardEvent); private test_message(message: string): boolean; private _callback_key_down(event: KeyboardEvent); + private _callback_key_up(event: KeyboardEvent); + private _context_task: number; set_enabled(flag: boolean); is_enabled(); focus_input(); @@ -2969,7 +3006,8 @@ declare namespace chat { export enum PrivateConversationState { OPEN, CLOSED, - DISCONNECTED + DISCONNECTED, + DISCONNECTED_SELF } export type DisplayedMessage = { timestamp: number; @@ -3023,8 +3061,8 @@ declare namespace chat { private _update_message_timestamp(); private _destroy_message(message: PrivateConversationViewMessage); private _build_message(message: PrivateConversationMessageData): PrivateConversationViewMessage; - private _build_spacer(message: string, type: "date" | "new" | "disconnect" | "reconnect" | "closed" | "error"): PrivateConversationViewSpacer; - private _register_displayed_message(message: DisplayedMessage); + private _build_spacer(message: string, type: "date" | "new" | "disconnect" | "disconnect_self" | "reconnect" | "closed" | "error"): PrivateConversationViewSpacer; + private _register_displayed_message(message: DisplayedMessage, update_new: boolean); private _destroy_view_entry(entry: PrivateConversationViewEntry); private _build_entry_tag(); update_avatar(); @@ -3032,7 +3070,7 @@ declare namespace chat { set_client_name(name: string); set_unread_flag(flag: boolean, update_chat_counter?: boolean); is_unread(): boolean; - private _append_state_change(state: "disconnect" | "reconnect" | "closed"); + private _append_state_change(state: "disconnect" | "disconnect_self" | "reconnect" | "closed"); state(): PrivateConversationState; set_state(state: PrivateConversationState); set_text_callback(callback: (text: string) => any, update_enabled_state?: boolean); @@ -3100,7 +3138,11 @@ declare namespace chat { private _container_messages: JQuery; private _container_new_message: JQuery; private _container_no_permissions: JQuery; + private _container_no_permissions_shown: boolean; private _container_is_private: JQuery; + private _container_is_private_shown: boolean; + private _container_no_support: JQuery; + private _container_no_support_shown: boolean; private _view_max_messages; private _view_older_messages: ViewEntry; private _has_older_messages: boolean; @@ -3123,6 +3165,9 @@ declare namespace chat { fetch_last_messages(); fetch_older_messages(); register_new_message(message: MessageData, update_view?: boolean); + /* using a timeout here to not cause a force style recalculation */ + private _scroll_fix_timer: number; + private _scroll_animate: boolean; fix_scroll(animate: boolean); fix_view_size(); chat_available(): boolean; @@ -3202,7 +3247,7 @@ declare namespace chat { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/chat.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\frames\chat.ts */ declare enum ChatType { GENERAL, SERVER, @@ -3240,9 +3285,10 @@ declare namespace MessageHelper { export const TIME_DAY; export const TIME_WEEK; export function format_time(time: number, default_value: string); + export function set_icon_size(size: string); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/connection_handlers.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\frames\connection_handlers.ts */ declare let server_connections: ServerConnectionManager; declare class ServerConnectionManager { private connection_handlers: ConnectionHandler[]; @@ -3269,7 +3315,7 @@ declare class ServerConnectionManager { private _update_scroll_buttons(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/ControlBar.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\frames\ControlBar.ts */ declare let control_bar: ControlBar; declare type MicrophoneState = "disabled" | "muted" | "enabled"; declare type HeadphoneState = "muted" | "enabled"; @@ -3332,7 +3378,7 @@ declare class ControlBar { private on_open_playlist_manage(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/hostbanner.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\frames\hostbanner.ts */ declare class Hostbanner { readonly html_tag: JQuery; readonly client: ConnectionHandler; @@ -3345,7 +3391,7 @@ declare class Hostbanner { private generate_tag?(): Promise; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/MenuBar.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\frames\MenuBar.ts */ declare namespace top_menu { export interface HRItem { } @@ -3375,6 +3421,7 @@ declare namespace top_menu { check_native_update(); open_change_log(); quit(); + show_dev_tools(): boolean; } export let native_actions: NativeActions; namespace html { @@ -3423,7 +3470,7 @@ declare namespace top_menu { export function initialize(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/server_log.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\frames\server_log.ts */ declare namespace log { export namespace server { export enum Type { @@ -3434,6 +3481,7 @@ declare namespace log { CONNECTION_LOGIN = "connection_login", CONNECTION_CONNECTED = "connection_connected", CONNECTION_FAILED = "connection_failed", + DISCONNECTED = "disconnected", CONNECTION_VOICE_SETUP_FAILED = "connection_voice_setup_failed", CONNECTION_COMMAND_ERROR = "connection_command_error", GLOBAL_MESSAGE = "global_message", @@ -3620,6 +3668,7 @@ declare namespace log { "client_nickname_changed": event.ClientNicknameChanged; "channel_create": event.ChannelCreate; "channel_delete": event.ChannelDelete; + "disconnected": any; } export type MessageBuilderOptions = {}; export type MessageBuilder = (data: TypeInfo[T], options: MessageBuilderOptions) => JQuery[] | undefined; @@ -3639,6 +3688,7 @@ declare namespace log { log(type: T, data: server.TypeInfo[T]); html_tag(): JQuery; destroy(); + private _scroll_task: number; private append_log(message: server.LogMessage); } } @@ -3648,7 +3698,7 @@ declare namespace log { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/htmltags.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\htmltags.ts */ declare namespace htmltags { export interface ClientProperties { client_id: number; @@ -3673,26 +3723,30 @@ declare namespace htmltags { namespace bbcodes { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalAbout.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalAbout.ts */ declare namespace Modals { export function spawnAbout(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalAvatar.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalAvatar.ts */ declare namespace Modals { //TODO: Test if we could render this image and not only the browser by knowing the type. export function spawnAvatarUpload(callback_data: (data: ArrayBuffer | undefined | null) => any); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalAvatarList.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalAvatarList.ts */ declare namespace Modals { export const human_file_size; export function spawnAvatarList(client: ConnectionHandler); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalBanClient.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalBanClient.ts */ declare namespace Modals { - export function spawnBanClient(name: string | string[], callback: (data: { + export type BanEntry = { + name?: string; + unique_id: string; + }; + export function spawnBanClient(client: ConnectionHandler, entries: BanEntry | BanEntry[], callback: (data: { length: number; reason: string; no_name: boolean; @@ -3701,59 +3755,36 @@ declare namespace Modals { }) => void); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalBanCreate.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalBanList.ts */ declare namespace Modals { - export function spawnBanCreate(connection: ConnectionHandler, base?: BanEntry, callback?: (entry?: BanEntry) => any); -} - -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalBanList.ts */ -declare namespace Modals { - export interface BanEntry { - server_id: number; - banid: number; - name?: string; - name_type?: number; - unique_id?: string; - ip?: string; - hardware_id?: string; - reason: string; - invoker_name: string; - invoker_unique_id?: string; - invoker_database_id?: number; - timestamp_created: Date; - timestamp_expire: Date; - enforcements: number; - flag_own?: boolean; - } - export interface BanListManager { - addbans: (ban: BanEntry[]) => void; - clear: (ban?: any) => void; - modal: Modal; - } export function openBanList(client: ConnectionHandler); - export function spawnBanListModal(callback_update: () => any, callback_add: () => any, callback_edit: (entry: BanEntry) => any, callback_delete: (entry: BanEntry) => any): BanListManager; + //Note: This object must be sorted (from shortest to longest)! + export const duration_data; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalBookmarks.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalBookmarks.ts */ declare namespace Modals { export function spawnBookmarkModal(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalBotMenue.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalBotMenue.ts */ -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalChangeVolume.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalChangeVolume.ts */ declare namespace Modals { - export function spawnChangeVolume(current: number, callback: (number) => void); - /* Units are between 0 and 1 */ - export function spawnChangeRemoteVolume(current: number, max_value: number, callback: (value: number) => void); + export function spawnChangeVolume(client: ClientEntry, local: boolean, current: number, max: number | undefined, callback: (number) => void); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalClientInfo.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalChannelInfo.ts */ +declare namespace Modals { + export function openChannelInfo(channel: ChannelEntry); +} + +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalClientInfo.ts */ declare namespace Modals { export function openClientInfo(client: ClientEntry); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalConnect.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalConnect.ts */ declare namespace connection_log { //TODO: Save password data export type ConnectionData = { @@ -3805,51 +3836,51 @@ declare namespace Modals { export const Regex; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalCreateChannel.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalCreateChannel.ts */ declare namespace Modals { export function createChannelModal(connection: ConnectionHandler, channel: ChannelEntry | undefined, parent: ChannelEntry | undefined, permissions: PermissionManager, callback: (properties?: ChannelProperties, permissions?: PermissionValue[]) => any); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalGroupAssignment.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalGroupAssignment.ts */ declare namespace Modals { - export function createServerGroupAssignmentModal(client: ClientEntry, callback: (group: Group, flag: boolean) => Promise); + export function createServerGroupAssignmentModal(client: ClientEntry, callback: (groups: number[], flag: boolean) => Promise); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalIconSelect.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalIconSelect.ts */ declare namespace Modals { export function spawnIconSelect(client: ConnectionHandler, callback_icon?: (id: number) => any, selected_icon?: number); export function spawnIconUpload(client: ConnectionHandler); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalIdentity.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalIdentity.ts */ declare namespace Modals { export function spawnTeamSpeakIdentityImprove(identity: profiles.identities.TeaSpeakIdentity, name: string): Modal; export function spawnTeamSpeakIdentityImport(callback: (identity: profiles.identities.TeaSpeakIdentity) => any): Modal; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalInvite.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalInvite.ts */ declare namespace Modals { export function spawnInviteEditor(connection: ConnectionHandler); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalKeySelect.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalKeySelect.ts */ declare namespace Modals { export function spawnKeySelect(callback: (key?: ppt.KeyEvent) => void); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalPlaylistEdit.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalPlaylistEdit.ts */ declare namespace Modals { export function spawnPlaylistSongInfo(song: PlaylistSong); export function spawnSongAdd(playlist: Playlist, callback_add: (url: string, loader: string) => any); export function spawnPlaylistEdit(client: ConnectionHandler, playlist: Playlist); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalPlaylistList.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalPlaylistList.ts */ declare namespace Modals { export function spawnPlaylistManage(client: ConnectionHandler); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalPoke.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalPoke.ts */ declare namespace Modals { export class PokeModal { private _handle: Modal; @@ -3867,7 +3898,7 @@ declare namespace Modals { export function spawnPoke(source: ConnectionHandler, invoker: PokeInvoker, message: string); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalQuery.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalQuery.ts */ declare namespace Modals { export function spawnQueryCreate(connection: ConnectionHandler, callback_created?: (user, pass) => any); export function spawnQueryCreated(credentials: { @@ -3876,27 +3907,191 @@ declare namespace Modals { }, just_created: boolean); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalQueryManage.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalQueryManage.ts */ declare namespace Modals { + /* + export function spawnQueryManage(client: ConnectionHandler) { + let modal: Modal; + let selected_query: QueryListEntry; + + const update_selected = () => { + const buttons = modal.htmlTag.find(".header .buttons"); + + //TODO gray out if no permissions (Server needs to send that... :D) + buttons.find(".button-query-delete").prop("disabled", selected_query === undefined); + buttons.find(".button-query-rename").prop("disabled", selected_query === undefined); + buttons.find(".button-query-change-password").prop("disabled", selected_query === undefined); + }; + + const update_list = () => { + const info_tag = modal.htmlTag.find(".footer .info a"); + info_tag.text("loading..."); + client.serverConnection.command_helper.current_virtual_server_id().then(server_id => { + client.serverConnection.command_helper.request_query_list(server_id).then(result => { + selected_query = undefined; + + const entries_tag = modal.htmlTag.find(".query-list-entries"); + const entry_template = $("#tmpl_query_manager-list_entry"); + entries_tag.empty(); + + for(const query of result.queries || []) { + entries_tag.append(entry_template.renderTag(query).on('click', event => { + entries_tag.find(".entry.selected").removeClass("selected"); + $(event.target).parent(".entry").addClass("selected"); + selected_query = query; + update_selected(); + })); + } + + const entry_container = modal.htmlTag.find(".query-list-entries-container"); + if(entry_container.hasScrollBar()) + entry_container.addClass("scrollbar"); + + if(!result || result.flag_all) { + info_tag.text("Showing all server queries"); + } else { + info_tag.text("Showing your server queries") + } + update_selected(); + }); + }); + //TODO error handling + }; + + modal = createModal({ + header: tr("Manage query accounts"), + body: () => { + let template = $("#tmpl_query_manager").renderTag(); + template = $.spawn("div").append(template); + + /* first open the modal + setTimeout(() => { + const entry_container = template.find(".query-list-entries-container"); + if(entry_container.hasScrollBar()) + entry_container.addClass("scrollbar"); + }, 100); + + template.find(".footer .buttons .button-refresh").on('click', update_list); + template.find(".button-query-create").on('click', () => { + Modals.spawnQueryCreate(client, (user, pass) => update_list()); + }); + template.find(".button-query-rename").on('click', () => { + if(!selected_query) return; + + createInputModal(tr("Change account name"), tr("Enter the new name for the login:
"), text => text.length >= 3, result => { + if(result) { + client.serverConnection.send_command("queryrename", { + client_login_name: selected_query.username, + client_new_login_name: result + }).catch(error => { + if(error instanceof CommandResult) + error = error.extra_message || error.message; + createErrorModal(tr("Unable to rename account"), tr("Failed to rename account
Message: ") + error).open(); + }).then(() => { + createInfoModal(tr("Account successfully renamed"), tr("The query account has been renamed!")).open(); + update_list(); + }); + } + }).open(); + }); + template.find(".button-query-change-password").on('click', () => { + if(!selected_query) return; + + createInputModal(tr("Change account's password"), tr("Enter a new password (leave blank for auto generation):
"), text => true, result => { + if(result !== false) { + const single_handler: connection.SingleCommandHandler = { + command: "notifyquerypasswordchanges", + function: command => { + Modals.spawnQueryCreated({ + username: command.arguments[0]["client_login_name"], + password: command.arguments[0]["client_login_password"] + }, false); + + return true; + } + }; + client.serverConnection.command_handler_boss().register_single_handler(single_handler); + + client.serverConnection.send_command("querychangepassword", { + client_login_name: selected_query.username, + client_login_password: result + }).catch(error => { + client.serverConnection.command_handler_boss().remove_single_handler(single_handler); + if(error instanceof CommandResult) + error = error.extra_message || error.message; + createErrorModal(tr("Unable to change password"), tr("Failed to change password
Message: ") + error).open(); + }); + } + }).open(); + }); + template.find(".button-query-delete").on('click', () => { + if(!selected_query) return; + + Modals.spawnYesNo(tr("Are you sure?"), tr("Do you really want to delete this account?"), result => { + if(result) { + client.serverConnection.send_command("querydelete", { + client_login_name: selected_query.username + }).catch(error => { + if(error instanceof CommandResult) + error = error.extra_message || error.message; + createErrorModal(tr("Unable to delete account"), tr("Failed to delete account
Message: ") + error).open(); + }).then(() => { + createInfoModal(tr("Account successfully deleted"), tr("The query account has been successfully deleted!")).open(); + update_list(); + }); + } + }); + }); + template.find(".input-search").on('change keyup', () => { + const text = (template.find(".input-search").val() as string || "").toLowerCase(); + if(text.length == 0) { + template.find(".query-list-entries .entry").show(); + } else { + template.find(".query-list-entries .entry").each((_, e) => { + const element = $(e); + if(element.text().toLowerCase().indexOf(text) == -1) + element.hide(); + else + element.show(); + }) + } + }); + return template; + }, + footer: undefined, + width: 750 + }); + + update_list(); + modal.open(); + } + */ + //tmpl_query_manager export function spawnQueryManage(client: ConnectionHandler); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalServerEdit.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalServerEdit.ts */ declare namespace Modals { export function createServerModal(server: ServerEntry, callback: (properties?: ServerProperties) => Promise); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalServerInfo.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalServerInfo.ts */ declare namespace Modals { export function openServerInfo(server: ServerEntry); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalSettings.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalServerInfoBandwidth.ts */ +declare namespace Modals { + export type InfoUpdateCallback = (info: ServerConnectionInfo | boolean) => any; + export function openServerInfoBandwidth(server: ServerEntry, update_callbacks?: InfoUpdateCallback[]): Modal; +} + +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalSettings.ts */ declare namespace Modals { export function spawnSettingsModal(default_page?: string): Modal; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalYesNo.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\ModalYesNo.ts */ declare namespace Modals { export function spawnYesNo(header: BodyCreator, body: BodyCreator, callback: (_: boolean) => any, properties?: { text_yes?: string; @@ -3904,7 +4099,7 @@ declare namespace Modals { }); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/permission/CanvasPermissionEditor.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\permission\CanvasPermissionEditor.ts */ declare namespace pe { namespace ui { export namespace scheme { @@ -4156,7 +4351,7 @@ declare namespace pe { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/permission/HTMLPermissionEditor.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\permission\HTMLPermissionEditor.ts */ declare namespace pe { export class HTMLPermission { readonly handle: HTMLPermissionEditor; @@ -4198,6 +4393,7 @@ declare namespace pe { is_filtered(): boolean; set_filtered(flag: boolean); is_set(): boolean; + get_value(); value(value: number | undefined, skip?: boolean, negate?: boolean); granted(value: number | undefined); reset(); @@ -4239,11 +4435,12 @@ declare namespace pe { constructor(); initialize(permissions: GroupedPermissions[]); private update_filter(); + private update_icon(); private build_tag(); html_tag(): JQuery; set_permissions(u_permissions?: PermissionValue[]); set_mode(mode: Modals.PermissionEditorMode); - trigger_change(permission: PermissionInfo, value?: Modals.PermissionEditor.PermissionValue): Promise; + trigger_change(permission: PermissionInfo, value?: Modals.PermissionEditor.PermissionValue, update_icon?: boolean): Promise; collapse_all(); expend_all(); update_view(); @@ -4251,7 +4448,7 @@ declare namespace pe { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/permission/ModalPermissionEdit.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\modal\permission\ModalPermissionEdit.ts */ declare interface JQuery { dropdown: any; } @@ -4318,7 +4515,7 @@ declare namespace Modals { export function spawnPermissionEdit(connection: ConnectionHandler, selected_tab?: T, options?: OptionMap[T]): Modal; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/server.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\server.ts */ declare class ServerProperties { virtualserver_host: string; virtualserver_port: number; @@ -4433,9 +4630,11 @@ declare class ServerEntry { set_connection_info(info: ServerConnectionInfo); shouldUpdateProperties(): boolean; calculateUptime(): number; + // @ts-ignore + set flag_text_unread(flag: boolean); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/view.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\ui\view.ts */ declare class ChannelTree { client: ConnectionHandler; server: ServerEntry; @@ -4470,6 +4669,8 @@ declare class ChannelTree { deleteClient(client: ClientEntry, animate_tag?: boolean); registerClient(client: ClientEntry); unregisterClient(client: ClientEntry); + private _update_timer: number; + private _reorder_channels; insertClient(client: ClientEntry, channel: ChannelEntry): ClientEntry; moveClient(client: ClientEntry, channel: ChannelEntry); findClient?(clientId: number): ClientEntry; @@ -4492,7 +4693,7 @@ declare class ChannelTree { subscribe_all_channels(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/utils/helpers.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\utils\helpers.ts */ declare namespace helpers { export function hashPassword(password: string): Promise; } @@ -4522,7 +4723,7 @@ declare class LaterPromise extends Promise { } declare const copy_to_clipboard; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/voice/RecorderBase.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\voice\RecorderBase.ts */ declare namespace audio { export namespace recorder { export interface InputDevice { @@ -4620,7 +4821,7 @@ declare namespace audio { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/voice/RecorderProfile.ts */ +/* File: C:\Users\WolverinDEV\TeaWeb\shared\js\voice\RecorderProfile.ts */ declare type VadType = "threshold" | "push_to_talk" | "active"; declare interface RecorderProfileConfig { version: number;