diff --git a/modules/renderer/imports/.copy_imports_shared.d.ts b/modules/renderer/imports/.copy_imports_shared.d.ts index 71fe6e9..84af6b2 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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\BrowserIPC.ts */ declare interface Window { BroadcastChannel: BroadcastChannel; } @@ -240,7 +240,7 @@ declare namespace bipc { export function supported(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/CommandHandler.ts */ +/* File: D:\TeaSpeak\web\shared\js\connection\CommandHandler.ts */ declare namespace connection { export class ServerConnectionCommandBoss extends AbstractCommandHandlerBoss { constructor(connection: AbstractServerConnection); @@ -288,16 +288,25 @@ declare namespace connection { handleNotifyChannelUnsubscribed(json); handleNotifyConversationHistory(json: any[]); handleNotifyConversationMessageDelete(json: any[]); + handleNotifyMusicStatusUpdate(json: any[]); + handleMusicPlayerSongChange(json: any[]); + handleNotifyPlaylistSongAdd(json: any[]); + handleNotifyPlaylistSongRemove(json: any[]); + handleNotifyPlaylistSongReorder(json: any[]); + handleNotifyPlaylistSongLoaded(json: any[]); } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/CommandHelper.ts */ +/* File: D:\TeaSpeak\web\shared\js\connection\CommandHelper.ts */ declare namespace connection { export class CommandHelper extends AbstractCommandHandler { private _who_am_i: any; private _awaiters_unique_ids: { [unique_id: string]: ((resolved: ClientNameInfo) => any)[]; }; + private _awaiters_unique_dbid: { + [database_id: number]: ((resolved: ClientNameInfo) => any)[]; + }; constructor(connection); initialize(); destroy(); @@ -306,10 +315,13 @@ declare namespace connection { sendMessage(message: string, type: ChatType, target?: ChannelEntry | ClientEntry): Promise; updateClient(key: string, value: string): Promise; info_from_uid(..._unique_ids: string[]): Promise; + private handle_notifyclientgetnamefromdbid(json: any[]); + info_from_cldbid(..._cldbid: number[]): Promise; private handle_notifyclientnamefromuid(json: any[]); request_query_list(server_id?: number): Promise; request_playlist_list(): Promise; request_playlist_songs(playlist_id: number): Promise; + request_playlist_client_list(playlist_id: number): Promise; request_clients_by_server_group(group_id: number): Promise; request_playlist_info(playlist_id: number): Promise; /** @@ -321,7 +333,7 @@ declare namespace connection { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/ConnectionBase.ts */ +/* File: D:\TeaSpeak\web\shared\js\connection\ConnectionBase.ts */ declare namespace connection { export interface CommandOptions { flagset?: string[]; @@ -433,7 +445,7 @@ declare namespace connection { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/HandshakeHandler.ts */ +/* File: D:\TeaSpeak\web\shared\js\connection\HandshakeHandler.ts */ declare namespace connection { export interface HandshakeIdentityHandler { connection: AbstractServerConnection; @@ -457,7 +469,7 @@ declare namespace connection { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/connection/ServerConnectionDeclaration.ts */ +/* File: D:\TeaSpeak\web\shared\js\connection\ServerConnectionDeclaration.ts */ declare enum ErrorID { NOT_IMPLEMENTED = 0x2, COMMAND_NOT_FOUND = 0x100, @@ -529,6 +541,7 @@ declare interface PlaylistInfo { playlist_flag_finished: boolean; playlist_replay_mode: number; playlist_current_song_id: number; + playlist_max_songs: number; } declare interface PlaylistSong { song_id: number; @@ -540,7 +553,7 @@ declare interface PlaylistSong { song_metadata: string; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ConnectionHandler.ts */ +/* File: D:\TeaSpeak\web\shared\js\ConnectionHandler.ts */ declare enum DisconnectReason { HANDLER_DESTROYED, REQUESTED, @@ -648,6 +661,7 @@ declare class ConnectionHandler { handleDisconnect(type: DisconnectReason, data?: any); cancel_reconnect(log_event: boolean); private on_connection_state_changed(); + private _last_record_error_popup: number; update_voice_status(targetChannel?: ChannelEntry); sync_status_with_server(); set_away_status(state: boolean | string); @@ -658,7 +672,7 @@ declare class ConnectionHandler { destroy(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/crypto/asn1.ts */ +/* File: D:\TeaSpeak\web\shared\js\crypto\asn1.ts */ declare namespace asn1 { export class Int10 { constructor(value?: any); @@ -750,7 +764,7 @@ declare namespace asn1 { export function decode(stream: string | ArrayBuffer); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/crypto/crc32.ts */ +/* File: D:\TeaSpeak\web\shared\js\crypto\crc32.ts */ declare class Crc32 { private static readonly lookup; private crc: number; @@ -759,12 +773,12 @@ declare class Crc32 { digest(radix: number); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/crypto/hex.ts */ +/* File: D:\TeaSpeak\web\shared\js\crypto\hex.ts */ declare namespace hex { export function encode(buffer); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/crypto/sha.ts */ +/* File: D:\TeaSpeak\web\shared\js\crypto\sha.ts */ declare function define($); declare function unescape(string: string): string; declare class _sha1 { @@ -775,7 +789,7 @@ declare namespace sha { export function sha1(message: string | ArrayBuffer): PromiseLike; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/dns.ts */ +/* File: D:\TeaSpeak\web\shared\js\dns.ts */ declare namespace dns { export interface AddressTarget { target_ip: string; @@ -792,16 +806,290 @@ declare namespace dns { allow_aaaa?: boolean; } export const default_options: ResolveOptions; - export function supported(); - export function resolve_address(address: ServerAddress, options?: ResolveOptions): Promise; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/events.ts */ -declare namespace event { +/* File: D:\TeaSpeak\web\shared\js\events.ts */ +declare namespace events { + export interface EventConvert { + as(): All[T]; + } + export interface Event { + readonly type: T; + } + export class SingletonEvent implements Event<"singletone-instance"> { + static readonly instance; + readonly type; + private constructor(); + } + export class Registry { + private handler: { + [key: string]: ((event) => void)[]; + }; + private connections: { + [key: string]: Registry[]; + }; + private debug_prefix; + enable_debug(prefix: string); + disable_debug(); + on(event: T, handler: (event?: Events[T] & Event & EventConvert) => void); + on(events: (keyof Events)[], handler: (event?: Event & EventConvert) => void); + on(events, handler); + off(handler: (event?: Event) => void); + off(event: T, handler: (event?: Event & EventConvert) => void); + off(event: (keyof Events)[], handler: (event?: Event & EventConvert) => void); + off(handler_or_events, handler?); + connect(event: T, target: Registry); + disconnect(event: T, target: Registry); + disconnect_all(target: Registry); + fire(event_type: T, data?: Events[T]); + destory(); + } namespace global { } + export namespace channel_tree { + export interface client { + "enter_view": {}; + "left_view": {}; + "property_update": { + properties: string[]; + }; + "music_status_update": { + player_buffered_index: number; + player_replay_index: number; + }; + "music_song_change": { + "song": SongInfo; + }; + /* TODO: Move this out of the music bots interface? */ + "playlist_song_add": { + song: PlaylistSong; + }; + "playlist_song_remove": { + song_id: number; + }; + "playlist_song_reorder": { + song_id: number; + previous_song_id: number; + }; + "playlist_song_loaded": { + song_id: number; + success: boolean; + error_msg?: string; + metadata?: string; + }; + } + } + export namespace sidebar { + export interface music { + "open": {}; + "close": {}; + "bot_change": { + old: MusicClientEntry | undefined; + new: MusicClientEntry | undefined; + }; + "bot_property_update": { + properties: string[]; + }; + "action_play": {}; + "action_pause": {}; + "action_song_set": { + song_id: number; + }; + "action_forward": {}; + "action_rewind": {}; + "action_forward_ms": { + units: number; + }; + "action_rewind_ms": { + units: number; + }; + "action_song_add": {}; + "action_song_delete": { + song_id: number; + }; + "action_playlist_reload": {}; + "playtime_move_begin": {}; + "playtime_move_end": { + canceled: boolean; + target_time?: number; + }; + "reorder_begin": { + song_id: number; + entry: JQuery; + }; + "reorder_end": { + song_id: number; + canceled: boolean; + entry: JQuery; + previous_entry?: number; + }; + "player_time_update": channel_tree.client["music_status_update"]; + "player_song_change": channel_tree.client["music_song_change"]; + "playlist_song_add": channel_tree.client["playlist_song_add"] & { + insert_effect?: boolean; + }; + "playlist_song_remove": channel_tree.client["playlist_song_remove"]; + "playlist_song_reorder": channel_tree.client["playlist_song_reorder"]; + "playlist_song_loaded": channel_tree.client["playlist_song_loaded"] & { + html_entry?: JQuery; + }; + } + } + export namespace modal { + export type BotStatusType = "name" | "description" | "volume" | "country_code" | "channel_commander" | "priority_speaker"; + export type PlaylistStatusType = "replay_mode" | "finished" | "delete_played" | "max_size" | "notify_song_change"; + export interface music_manage { + show_container: { + container: "settings" | "permissions"; + }; + /* setting relevant */ + query_bot_status: {}; + bot_status: { + status: "success" | "error"; + error_msg?: string; + data?: { + name: string; + description: string; + volume: number; + country_code: string; + default_country_code: string; + channel_commander: boolean; + priority_speaker: boolean; + client_version: string; + client_platform: string; + uptime_mode: number; + bot_type: number; + }; + }; + set_bot_status: { + key: BotStatusType; + value: any; + }; + set_bot_status_result: { + key: BotStatusType; + status: "success" | "error" | "timeout"; + error_msg?: string; + value?: any; + }; + query_playlist_status: {}; + playlist_status: { + status: "success" | "error"; + error_msg?: string; + data?: { + replay_mode: number; + finished: boolean; + delete_played: boolean; + max_size: number; + notify_song_change: boolean; + }; + }; + set_playlist_status: { + key: PlaylistStatusType; + value: any; + }; + set_playlist_status_result: { + key: PlaylistStatusType; + status: "success" | "error" | "timeout"; + error_msg?: string; + value?: any; + }; + /* permission relevant */ + show_client_list: {}; + hide_client_list: {}; + filter_client_list: { + filter: string | undefined; + }; + "refresh_permissions": {}; + query_special_clients: {}; + special_client_list: { + status: "success" | "error" | "error-permission"; + error_msg?: string; + clients?: { + name: string; + unique_id: string; + database_id: number; + }[]; + }; + search_client: { + text: string; + }; + search_client_result: { + status: "error" | "timeout" | "empty" | "success"; + error_msg?: string; + client?: { + name: string; + unique_id: string; + database_id: number; + }; + }; + /* sets a client to set the permission for */ + special_client_set: { + client?: { + name: string; + unique_id: string; + database_id: number; + }; + }; + "query_general_permissions": {}; + "general_permissions": { + status: "error" | "timeout" | "success"; + error_msg?: string; + permissions?: { + [key: string]: number; + }; + }; + "set_general_permission_result": { + status: "error" | "success"; + key: string; + value?: number; + error_msg?: string; + }; + "set_general_permission": { + key: string; + value: number; + }; + "query_client_permissions": { + client_database_id: number; + }; + "client_permissions": { + status: "error" | "timeout" | "success"; + client_database_id: number; + error_msg?: string; + permissions?: { + [key: string]: number; + }; + }; + "set_client_permission_result": { + status: "error" | "success"; + client_database_id: number; + key: string; + value?: number; + error_msg?: string; + }; + "set_client_permission": { + client_database_id: number; + key: string; + value: number; + }; + "query_group_permissions": { + permission_name: string; + }; + "group_permissions": { + permission_name: string; + status: "error" | "timeout" | "success"; + groups?: { + name: string; + value: number; + id: number; + }[]; + error_msg?: string; + }; + } + } } +declare const eclient; +declare const emusic; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/FileManager.ts */ +/* File: D:\TeaSpeak\web\shared\js\FileManager.ts */ declare class FileEntry { name: string; datetime: number; @@ -988,12 +1276,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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\i18n\localize.ts */ declare function guid(); declare namespace i18n { export interface TranslationKey { @@ -1064,7 +1352,7 @@ declare namespace i18n { declare const tr: typeof i18n.tr; declare const tra: typeof i18n.tra; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/log.ts */ +/* File: D:\TeaSpeak\web\shared\js\log.ts */ declare enum LogCategory { CHANNEL, CHANNEL_PROPERTIES, @@ -1080,7 +1368,8 @@ declare enum LogCategory { I18N, IPC, IDENTITIES, - STATISTICS + STATISTICS, + DNS } declare namespace log { export enum LogType { @@ -1132,7 +1421,7 @@ declare namespace log { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/main.ts */ +/* File: D:\TeaSpeak\web\shared\js\main.ts */ declare const js_render; declare const native_client; declare function getUserMediaFunctionPromise(): (constraints: MediaStreamConstraints) => Promise; @@ -1153,7 +1442,7 @@ declare const task_teaweb_starter: loader.Task; declare const task_connect_handler: loader.Task; declare const task_certificate_callback: loader.Task; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/permission/GroupManager.ts */ +/* File: D:\TeaSpeak\web\shared\js\permission\GroupManager.ts */ declare enum GroupType { QUERY, TEMPLATE, @@ -1203,7 +1492,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: D:\TeaSpeak\web\shared\js\permission\PermissionManager.ts */ declare enum PermissionType { B_SERVERINSTANCE_HELP_VIEW = "b_serverinstance_help_view", B_SERVERINSTANCE_VERSION_VIEW = "b_serverinstance_version_view", @@ -1285,6 +1574,7 @@ declare enum PermissionType { B_VIRTUALSERVER_MODIFY_TEMPORARY_PASSWORDS_OWN = "b_virtualserver_modify_temporary_passwords_own", B_VIRTUALSERVER_MODIFY_CHANNEL_TEMP_DELETE_DELAY_DEFAULT = "b_virtualserver_modify_channel_temp_delete_delay_default", B_VIRTUALSERVER_MODIFY_MUSIC_BOT_LIMIT = "b_virtualserver_modify_music_bot_limit", + B_VIRTUALSERVER_MODIFY_COUNTRY_CODE = "b_virtualserver_modify_country_code", I_CHANNEL_MIN_DEPTH = "i_channel_min_depth", I_CHANNEL_MAX_DEPTH = "i_channel_max_depth", B_CHANNEL_GROUP_INHERITANCE_END = "b_channel_group_inheritance_end", @@ -1307,6 +1597,9 @@ declare enum PermissionType { B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSMUSIC = "b_channel_create_modify_with_codec_opusmusic", I_CHANNEL_CREATE_MODIFY_WITH_CODEC_MAXQUALITY = "i_channel_create_modify_with_codec_maxquality", I_CHANNEL_CREATE_MODIFY_WITH_CODEC_LATENCY_FACTOR_MIN = "i_channel_create_modify_with_codec_latency_factor_min", + I_CHANNEL_CREATE_MODIFY_CONVERSATION_HISTORY_LENGTH = "i_channel_create_modify_conversation_history_length", + B_CHANNEL_CREATE_MODIFY_CONVERSATION_HISTORY_UNLIMITED = "b_channel_create_modify_conversation_history_unlimited", + B_CHANNEL_CREATE_MODIFY_CONVERSATION_PRIVATE = "b_channel_create_modify_conversation_private", B_CHANNEL_CREATE_WITH_MAXCLIENTS = "b_channel_create_with_maxclients", B_CHANNEL_CREATE_WITH_MAXFAMILYCLIENTS = "b_channel_create_with_maxfamilyclients", B_CHANNEL_CREATE_WITH_SORTORDER = "b_channel_create_with_sortorder", @@ -1339,6 +1632,7 @@ declare enum PermissionType { B_CHANNEL_DELETE_TEMPORARY = "b_channel_delete_temporary", B_CHANNEL_DELETE_FLAG_FORCE = "b_channel_delete_flag_force", I_CHANNEL_DELETE_POWER = "i_channel_delete_power", + B_CHANNEL_CONVERSATION_MESSAGE_DELETE = "b_channel_conversation_message_delete", I_CHANNEL_NEEDED_DELETE_POWER = "i_channel_needed_delete_power", B_CHANNEL_JOIN_PERMANENT = "b_channel_join_permanent", B_CHANNEL_JOIN_SEMI_PERMANENT = "b_channel_join_semi_permanent", @@ -1349,6 +1643,7 @@ declare enum PermissionType { I_CHANNEL_JOIN_POWER = "i_channel_join_power", I_CHANNEL_NEEDED_JOIN_POWER = "i_channel_needed_join_power", B_CHANNEL_IGNORE_JOIN_POWER = "b_channel_ignore_join_power", + B_CHANNEL_IGNORE_DESCRIPTION_VIEW_POWER = "b_channel_ignore_description_view_power", I_CHANNEL_VIEW_POWER = "i_channel_view_power", I_CHANNEL_NEEDED_VIEW_POWER = "i_channel_needed_view_power", I_CHANNEL_SUBSCRIBE_POWER = "i_channel_subscribe_power", @@ -1357,6 +1652,8 @@ declare enum PermissionType { I_CHANNEL_NEEDED_DESCRIPTION_VIEW_POWER = "i_channel_needed_description_view_power", I_ICON_ID = "i_icon_id", I_MAX_ICON_FILESIZE = "i_max_icon_filesize", + I_MAX_PLAYLIST_SIZE = "i_max_playlist_size", + I_MAX_PLAYLISTS = "i_max_playlists", B_ICON_MANAGE = "b_icon_manage", B_GROUP_IS_PERMANENT = "b_group_is_permanent", I_GROUP_AUTO_UPDATE_TYPE = "i_group_auto_update_type", @@ -1578,18 +1875,49 @@ declare class PermissionValue { declare class NeededPermissionValue extends PermissionValue { constructor(type, value); } -declare class ChannelPermissionRequest { - requested: number; - channel_id: number; - callback_success: ((_: PermissionValue[]) => any)[]; - callback_error: ((_: any) => any)[]; -} -declare class TeaPermissionRequest { - client_id?: number; - channel_id?: number; - playlist_id?: number; - promise: LaterPromise; +declare namespace permissions { + export type PermissionRequestKeys = { + client_id?: number; + channel_id?: number; + playlist_id?: number; + }; + export type PermissionRequest = PermissionRequestKeys & { + timeout_id: any; + promise: LaterPromise; + }; + export namespace find { + export type Entry = { + type: "server" | "channel" | "client" | "client_channel" | "channel_group" | "server_group"; + value: number; + id: number; + }; + export type Client = Entry & { + type: "client"; + client_id: number; + }; + export type Channel = Entry & { + type: "channel"; + channel_id: number; + }; + export type Server = Entry & { + type: "server"; + }; + export type ClientChannel = Entry & { + type: "client_channel"; + client_id: number; + channel_id: number; + }; + export type ChannelGroup = Entry & { + type: "channel_group"; + group_id: number; + }; + export type ServerGroup = Entry & { + type: "server_group"; + group_id: number; + }; + } } +declare type RequestLists = "requests_channel_permissions" | "requests_client_permissions" | "requests_client_channel_permissions" | "requests_playlist_permissions" | "requests_playlist_client_permissions"; declare class PermissionManager extends connection.AbstractCommandHandler { readonly handle: ConnectionHandler; permissionList: PermissionInfo[]; @@ -1598,14 +1926,19 @@ declare class PermissionManager extends connection.AbstractCommandHandler { needed_permission_change_listener: { [permission: string]: (() => any)[]; }; - requests_channel_permissions: ChannelPermissionRequest[]; - requests_client_permissions: TeaPermissionRequest[]; - requests_client_channel_permissions: TeaPermissionRequest[]; - requests_playlist_permissions: TeaPermissionRequest[]; + requests_channel_permissions: permissions.PermissionRequest[]; + requests_client_permissions: permissions.PermissionRequest[]; + requests_client_channel_permissions: permissions.PermissionRequest[]; + requests_playlist_permissions: permissions.PermissionRequest[]; + requests_playlist_client_permissions: permissions.PermissionRequest[]; + requests_permfind: { + timeout_id: number; + permission: string; + callback: (status: "success" | "error", data: any) => void; + }[]; initializedListener: ((initialized: boolean) => void)[]; private _cacheNeededPermissions: any; /* Static info mapping until TeaSpeak implements a detailed info */ - //TODO tr static readonly group_mapping: { name: string; deep: number; @@ -1621,14 +1954,31 @@ declare class PermissionManager extends connection.AbstractCommandHandler { private onNeededPermissions(json); register_needed_permission(key: PermissionType, listener: () => any); unregister_needed_permission(key: PermissionType, listener: () => any); - private onChannelPermList(json); resolveInfo?(key: number | string | PermissionType): PermissionInfo; + /* channel permission request */ + private onChannelPermList(json); + private execute_channel_permission_request(request: permissions.PermissionRequestKeys); requestChannelPermissions(channelId: number): Promise; + /* client permission request */ private onClientPermList(json: any[]); + private execute_client_permission_request(request: permissions.PermissionRequestKeys); requestClientPermissions(client_id: number): Promise; + /* client channel permission request */ + private onChannelClientPermList(json: any[]); + private execute_client_channel_permission_request(request: permissions.PermissionRequestKeys); requestClientChannelPermissions(client_id: number, channel_id: number): Promise; + /* playlist permissions */ private onPlaylistPermList(json: any[]); + private execute_playlist_permission_request(request: permissions.PermissionRequestKeys); requestPlaylistPermissions(playlist_id: number): Promise; + /* playlist client permissions */ + private onPlaylistClientPermList(json: any[]); + private execute_playlist_client_permission_request(request: permissions.PermissionRequestKeys); + requestPlaylistClientPermissions(playlist_id: number, client_database_id: number): Promise; + private readonly criteria_equal; + private execute_permission_request(list: RequestLists, criteria: permissions.PermissionRequestKeys, execute: (criteria: permissions.PermissionRequestKeys) => any): Promise; + private fullfill_permission_request(list: RequestLists, criteria: permissions.PermissionRequestKeys, status: "success" | "error", result: any); + find_permission(...permissions: string[]): Promise; neededPermission(key: number | string | PermissionType | PermissionInfo): NeededPermissionValue; groupedPermissions(): GroupedPermissions[]; /** @@ -1637,7 +1987,7 @@ declare class PermissionManager extends connection.AbstractCommandHandler { export_permission_types(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/PPTListener.ts */ +/* File: D:\TeaSpeak\web\shared\js\PPTListener.ts */ declare enum KeyCode { KEY_CANCEL = 3, KEY_HELP = 6, @@ -1788,7 +2138,7 @@ declare namespace ppt { export function key_description(key: KeyDescriptor); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/ConnectionProfile.ts */ +/* File: D:\TeaSpeak\web\shared\js\profiles\ConnectionProfile.ts */ declare namespace profiles { export class ConnectionProfile { id: string; @@ -1821,7 +2171,7 @@ declare namespace profiles { export function delete_profile(profile: ConnectionProfile); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/identities/NameIdentity.ts */ +/* File: D:\TeaSpeak\web\shared\js\profiles\identities\NameIdentity.ts */ declare namespace profiles.identities { export class NameHandshakeHandler extends AbstractHandshakeIdentityHandler { readonly identity: NameIdentity; @@ -1846,7 +2196,7 @@ declare namespace profiles.identities { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/identities/TeaForumIdentity.ts */ +/* File: D:\TeaSpeak\web\shared\js\profiles\identities\TeaForumIdentity.ts */ declare namespace profiles.identities { export class TeaForumHandshakeHandler extends AbstractHandshakeIdentityHandler { readonly identity: TeaForumIdentity; @@ -1875,7 +2225,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: D:\TeaSpeak\web\shared\js\profiles\identities\TeamSpeakIdentity.ts */ declare namespace profiles.identities { export namespace CryptoHelper { export function base64_url_encode(str); @@ -1943,7 +2293,7 @@ declare namespace profiles.identities { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/identities/teaspeak-forum.ts */ +/* File: D:\TeaSpeak\web\shared\js\profiles\identities\teaspeak-forum.ts */ declare interface Window { grecaptcha: GReCaptcha; } @@ -2003,7 +2353,7 @@ declare namespace forum { export function logout(): Promise; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/profiles/Identity.ts */ +/* File: D:\TeaSpeak\web\shared\js\profiles\Identity.ts */ declare namespace profiles.identities { export enum IdentitifyType { TEAFORO, @@ -2037,7 +2387,7 @@ declare namespace profiles.identities { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/proto.ts */ +/* File: D:\TeaSpeak\web\shared\js\proto.ts */ declare interface Array { remove(elem?: T): boolean; last?(): T; @@ -2091,6 +2441,7 @@ declare interface HighlightJSResult { declare interface DOMPurify { sanitize(html: string, config?: { ADD_ATTR?: string[]; + ADD_TAGS?: string[]; }): string; } declare let DOMPurify: DOMPurify; @@ -2121,7 +2472,7 @@ declare interface Navigator { webkitGetUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/settings.ts */ +/* File: D:\TeaSpeak\web\shared\js\settings.ts */ declare interface SettingsKey { key: string; fallback_keys?: string | string[]; @@ -2171,6 +2522,7 @@ declare class Settings extends StaticSettings { static readonly KEY_CONNECT_PASSWORD: SettingsKey; static readonly KEY_FLAG_CONNECT_PASSWORD: SettingsKey; static readonly KEY_CONNECT_HISTORY: SettingsKey; + static readonly KEY_CONNECT_NO_DNSPROXY: SettingsKey; static readonly KEY_CERTIFICATE_CALLBACK: SettingsKey; /* sounds */ static readonly KEY_SOUND_MASTER: SettingsKey; @@ -2185,6 +2537,7 @@ declare class Settings extends StaticSettings { static readonly KEY_SWITCH_INSTANT_CLIENT: SettingsKey; static readonly KEY_HOSTBANNER_BACKGROUND: SettingsKey; static readonly KEY_CHANNEL_EDIT_ADVANCED: SettingsKey; + static readonly KEY_PERMISSIONS_SHOW_ALL: SettingsKey; static readonly KEY_TEAFORO_URL: SettingsKey; static readonly KEY_FONT_SIZE: SettingsKey; static readonly KEY_ICON_SIZE: SettingsKey; @@ -2218,7 +2571,7 @@ declare class ServerSettings extends SettingsBase { } declare let settings: Settings; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/sound/Sounds.ts */ +/* File: D:\TeaSpeak\web\shared\js\sound\Sounds.ts */ declare enum Sound { SOUND_TEST = "sound.test", SOUND_EGG = "sound.egg", @@ -2272,11 +2625,6 @@ declare namespace sound { export interface SoundHandle { key: string; filename: string; - not_supported?: boolean; - not_supported_timeout?: number; - cached?: AudioBuffer; - node?: HTMLAudioElement; - replaying: boolean; } export function get_sound_volume(sound: Sound, default_volume?: number): number; export function set_sound_volume(sound: Sound, volume: number); @@ -2298,7 +2646,7 @@ declare namespace sound { export function resolve_sound(sound: Sound): Promise; export let manager: SoundManager; export class SoundManager { - private _handle: ConnectionHandler; + private readonly _handle: ConnectionHandler; private _playing_sounds: { [key: string]: number; }; @@ -2307,7 +2655,7 @@ declare namespace sound { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/stats.ts */ +/* File: D:\TeaSpeak\web\shared\js\stats.ts */ declare namespace stats { export enum CloseCodes { UNSET = 3000, @@ -2355,7 +2703,7 @@ declare namespace stats { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/channel.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\channel.ts */ declare enum ChannelType { PERMANENT, SEMI_PERMANENT, @@ -2469,7 +2817,7 @@ declare class ChannelEntry { log_data(): log.server.base.Channel; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/client_move.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\client_move.ts */ declare class ClientMover { static readonly listener_root; static readonly move_element; @@ -2495,7 +2843,7 @@ declare class ClientMover { deactivate(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/client.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\client.ts */ declare enum ClientType { CLIENT_VOICE, CLIENT_QUERY, @@ -2537,6 +2885,7 @@ declare class ClientProperties { client_total_bytes_uploaded: number; client_total_bytes_downloaded: number; client_talk_power: number; + client_is_priority_speaker: boolean; } declare class ClientConnectionInfo { connection_bandwidth_received_last_minute_control: number; @@ -2581,6 +2930,7 @@ declare class ClientConnectionInfo { connection_client_port: number; } declare class ClientEntry { + readonly events: events.Registry; protected _clientId: number; protected _channel: ChannelEntry; protected _tag: JQuery; @@ -2664,8 +3014,22 @@ declare class MusicClientProperties extends ClientProperties { player_volume: number; client_playlist_id: number; client_disabled: boolean; + client_flag_notify_song_change: boolean; + client_bot_type: number; + client_uptime_mode: number; } -declare class MusicClientPlayerInfo { +declare class SongInfo { + song_id: number; + song_url: string; + song_invoker: number; + song_loaded: boolean; + /* only if song_loaded = true */ + song_title: string; + song_description: string; + song_thumbnail: string; + song_length: number; +} +declare class MusicClientPlayerInfo extends SongInfo { bot_id: number; player_state: number; player_buffered_index: number; @@ -2674,13 +3038,6 @@ declare class MusicClientPlayerInfo { player_seekable: boolean; player_title: string; player_description: string; - song_id: number; - song_url: string; - song_invoker: number; - song_loaded: boolean; - song_title: string; - song_thumbnail: string; - song_length: number; } declare class MusicClientEntry extends ClientEntry { private _info_promise: Promise; @@ -2697,12 +3054,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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\elements\context_menu.ts */ declare namespace contextmenu { export interface MenuEntry { callback?: () => void; @@ -2753,7 +3110,7 @@ declare class HTMLContextMenuProvider implements contextmenu.ContextMenuProvider html_format_enabled(): boolean; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/modal.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\elements\modal.ts */ declare enum ElementType { HEADER, BODY, @@ -2777,6 +3134,9 @@ declare class ModalProperties { trigger_tab: boolean; full_size?: boolean; } +declare namespace modal { + export function initialize_modals(); +} declare let _global_modal_count; declare let _global_modal_last: HTMLElement; declare let _global_modal_last_time: number; @@ -2815,12 +3175,12 @@ 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: D:\TeaSpeak\web\shared\js\ui\elements\net_graph.ts */ declare namespace net.graph { export type Entry = { timestamp: number; - upload: number; - download: number; + upload?: number; + download?: number; highlight?: boolean; }; export type Style = { @@ -2900,7 +3260,7 @@ declare namespace net.graph { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/slider.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\elements\slider.ts */ declare interface SliderOptions { min_value?: number; max_value?: number; @@ -2914,7 +3274,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: D:\TeaSpeak\web\shared\js\ui\elements\tab.ts */ declare interface JQuery { asTabWidget(copy?: boolean): JQuery; tabify(copy?: boolean): this; @@ -2922,7 +3282,7 @@ declare interface JQuery { } declare var TabFunctions; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/elements/tooltip.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\elements\tooltip.ts */ declare function tooltip(entry: JQuery); declare namespace tooltip { export type Handle = { @@ -2931,16 +3291,20 @@ declare namespace tooltip { hide(); update(); }; - export function initialize(entry: JQuery): Handle; + export function initialize(entry: JQuery, callbacks?: { + on_show?(tag: JQuery); + on_hide?(tag: JQuery); + }): Handle; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/chat_frame.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\frames\chat_frame.ts */ declare namespace chat { export enum InfoFrameMode { NONE = "none", CHANNEL_CHAT = "channel_chat", PRIVATE_CHAT = "private_chat", - CLIENT_INFO = "client_info" + CLIENT_INFO = "client_info", + MUSIC_BOT = "music_bot" } export class InfoFrame { private readonly handle: Frame; @@ -2951,6 +3315,8 @@ declare namespace chat { private _channel_text: ChannelEntry; private _channel_voice: ChannelEntry; private _button_conversation: HTMLElement; + private _button_bot_manage: JQuery; + private _button_song_add: JQuery; constructor(handle: Frame); html_tag(): JQuery; destroy(); @@ -2960,336 +3326,17 @@ declare namespace chat { update_channel_text(); update_channel_client_count(channel: ChannelEntry); private update_channel_limit(channel: ChannelEntry, tag: JQuery); + private update_server_limit(server: ServerEntry, tag: JQuery); update_chat_counter(); current_mode(): InfoFrameMode; set_mode(mode: InfoFrameMode); } - export class ChatBox { - private _html_tag: JQuery; - private _html_input: JQuery; - 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; - constructor(); - html_tag(): JQuery; - destroy(); - private _initialize_listener(); - private _build_html_tag(); - private _callback_text_changed(event: Event); - private _text(element: HTMLElement); - private htmlEscape(message: string): string; - 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(); - } - export namespace helpers { - namespace md2bbc { - export type RemarkToken = { - type: string; - tight: boolean; - lines: number[]; - level: number; - /* img */ - alt?: string; - src?: string; - /* link */ - href?: string; - /* table */ - align?: string; - /* code */ - params?: string; - content?: string; - hLevel?: number; - children?: RemarkToken[]; - }; - export class Renderer { - private static renderers; - private _options; - render(tokens: RemarkToken[], options: any, env: any); - private render_token(token: RemarkToken, index: number); - private render_inline(tokens: RemarkToken[], index: number); - options(): any; - maybe_escape_bb(text: string); - } - } - export function preprocess_chat_message(message: string): string; - export namespace history { - export function load_history(key: string): Promise; - export function save_history(key: string, value: any): Promise; - } - export namespace date { - export function same_day(a: number | Date, b: number | Date); - } - } - export namespace format { - export namespace date { - export enum ColloquialFormat { - YESTERDAY, - TODAY, - GENERAL - } - export function date_format(date: Date, now: Date, ignore_settings?: boolean): ColloquialFormat; - export function format_date_general(date: Date, hours?: boolean): string; - export function format_date_colloquial(date: Date, current_timestamp: Date): { - result: string; - format: ColloquialFormat; - }; - export function format_chat_time(date: Date): { - result: string; - next_update: number; /* in MS */ - }; - } - export namespace time { - export function format_online_time(secs: number): string; - } - } - export type PrivateConversationViewEntry = { - html_tag: JQuery; - }; - export type PrivateConversationMessageData = { - message_id: string; - message: string; - sender: "self" | "partner"; - sender_name: string; - sender_unique_id: string; - sender_client_id: number; - timestamp: number; - }; - export type PrivateConversationViewMessage = PrivateConversationMessageData & PrivateConversationViewEntry & { - time_update_id: number; - }; - export type PrivateConversationViewSpacer = PrivateConversationViewEntry; - export enum PrivateConversationState { - OPEN, - CLOSED, - DISCONNECTED, - DISCONNECTED_SELF - } - export type DisplayedMessage = { - timestamp: number; - message: PrivateConversationViewMessage | PrivateConversationViewEntry; - message_type: "spacer" | "message"; - /* structure as following - 1. time pointer - 2. unread - 3. message - */ - tag_message: JQuery; - tag_unread: PrivateConversationViewSpacer | undefined; - tag_timepointer: PrivateConversationViewSpacer | undefined; - }; - export class PrivateConveration { - readonly handle: PrivateConverations; - private _html_entry_tag: JQuery; - private _message_history: PrivateConversationMessageData[]; - private _callback_message: (text: string) => any; - private _state: PrivateConversationState; - private _last_message_updater_id: number; - private _last_typing: number; - private _typing_timeout: number; - private _typing_timeout_task: number; - _scroll_position: number | undefined; - _html_message_container: JQuery; - client_unique_id: string; - client_id: number; - client_name: string; - private _displayed_messages: DisplayedMessage[]; - private _displayed_messages_length: number; - private _spacer_unread_message: DisplayedMessage; - constructor(handle: PrivateConverations, client_unique_id: string, client_name: string, client_id: number); - private history_key(); - private load_history(); - private save_history(); - entry_tag(): JQuery; - destroy(); - private _2d_flat(array: T[][]): T[]; - messages_tags(): JQuery[]; - append_message(message: string, sender: { - type: "self" | "partner"; - name: string; - unique_id: string; - client_id: number; - }, timestamp?: Date, save_history?: boolean); - private _displayed_message_first_tag(message: DisplayedMessage); - private _destroy_displayed_message(message: DisplayedMessage, update_pointers: boolean); - clear_messages(save?: boolean); - fix_scroll(animate: boolean); - private _update_message_timestamp(); - private _destroy_message(message: PrivateConversationViewMessage); - private _build_message(message: PrivateConversationMessageData): PrivateConversationViewMessage; - 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(); - close_conversation(); - set_client_name(name: string); - set_unread_flag(flag: boolean, update_chat_counter?: boolean); - is_unread(): boolean; - 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); - chat_enabled(); - append_error(message: string, date?: number); - call_message(message: string); - private typing_expired(); - trigger_typing(); - typing_active(); - } - export class PrivateConverations { - readonly handle: Frame; - private _chat_box: ChatBox; - private _html_tag: JQuery; - private _container_conversation: JQuery; - private _container_conversation_messages: JQuery; - private _container_conversation_list: JQuery; - private _container_typing: JQuery; - private _html_no_chats: JQuery; - private _conversations: PrivateConveration[]; - private _current_conversation: PrivateConveration; - private _select_read_timer: number; - constructor(handle: Frame); - clear_client_ids(); - html_tag(): JQuery; - destroy(); - current_conversation(): PrivateConveration | undefined; - conversations(): PrivateConveration[]; - create_conversation(client_uid: string, client_name: string, client_id: number): PrivateConveration; - delete_conversation(conv: PrivateConveration, update_chat_couner?: boolean); - find_conversation(partner: { - name: string; - unique_id: string; - client_id: number; - }, mode: { - create: boolean; - attach: boolean; - }): PrivateConveration | undefined; - clear_conversations(); - set_selected_conversation(conv: PrivateConveration | undefined); - update_chatbox_state(); - update_typing_state(); - private _build_html_tag(); - try_input_focus(); - on_show(); - } - export namespace channel { - export type ViewEntry = { - html_element: JQuery; - update_timer?: number; - }; - export type MessageData = { - timestamp: number; - message: string; - sender_name: string; - sender_unique_id: string; - sender_database_id: number; - }; - export type Message = MessageData & ViewEntry; - export class Conversation { - readonly handle: ConversationManager; - readonly channel_id: number; - private _flag_private: boolean; - private _html_tag: JQuery; - 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; - private _view_entries: ViewEntry[]; - private _last_messages: MessageData[]; - private _last_messages_timestamp: number; - private _first_unread_message: Message; - private _first_unread_message_pointer: ViewEntry; - private _scroll_position: number | undefined; - constructor(handle: ConversationManager, channel_id: number); - html_tag(): JQuery; - destroy(); - private _build_html_tag(); - is_unread(); - mark_read(); - private _mark_read(); - private _generate_view_message(data: MessageData): Message; - private _generate_view_spacer(message: string, type: "date" | "new" | "old" | "error"): ViewEntry; - last_messages_timestamp(): number; - 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; - text_send_failed(error: CommandResult | any); - set_flag_private(flag: boolean); - update_private_state(); - delete_message(message: MessageData); - delete_messages(begin: number, end: number, sender: number, limit: number); - private _delete_message(message: Message); - } - export class ConversationManager { - readonly handle: Frame; - private _html_tag: JQuery; - private _chat_box: ChatBox; - private _container_conversation: JQuery; - private _conversations: Conversation[]; - private _current_conversation: Conversation | undefined; - private _needed_listener; - constructor(handle: Frame); - initialize_needed_listener(); - html_tag(): JQuery; - destroy(); - update_chat_box(); - private _build_html_tag(); - set_current_channel(channel_id: number, update_info_frame?: boolean); - current_channel(): number; - /* Used by notifychanneldeleted */ - delete_conversation(channel_id: number); - reset(); - conversation(channel_id: number, create?: boolean): Conversation; - on_show(); - } - } - export class ClientInfo { - readonly handle: Frame; - private _html_tag: JQuery; - private _current_client: ClientEntry | undefined; - private _online_time_updater: number; - previous_frame_content: FrameContent; - constructor(handle: Frame); - html_tag(): JQuery; - destroy(); - private _build_html_tag(); - current_client(): ClientEntry; - set_current_client(client: ClientEntry | undefined, enforce?: boolean); - } export enum FrameContent { NONE, PRIVATE_CHAT, CHANNEL_CHAT, - CLIENT_INFO + CLIENT_INFO, + MUSIC_BOT } export class Frame { readonly handle: ConnectionHandler; @@ -3300,6 +3347,7 @@ declare namespace chat { private _content_type: FrameContent; private _conversations: PrivateConverations; private _client_info: ClientInfo; + private _music_info: MusicInfo; private _channel_conversations: channel.ConversationManager; constructor(handle: ConnectionHandler); html_tag(): JQuery; @@ -3310,15 +3358,17 @@ declare namespace chat { private_conversations(): PrivateConverations; channel_conversations(): channel.ConversationManager; client_info(): ClientInfo; + music_info(): MusicInfo; private _clear(); show_private_conversations(); show_channel_conversations(); show_client_info(client: ClientEntry); + show_music_player(client: MusicClientEntry); set_content(type: FrameContent); } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/chat.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\frames\chat.ts */ declare enum ChatType { GENERAL, SERVER, @@ -3359,7 +3409,7 @@ declare namespace MessageHelper { export function set_icon_size(size: string); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/connection_handlers.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\frames\connection_handlers.ts */ declare let server_connections: ServerConnectionManager; declare class ServerConnectionManager { private connection_handlers: ConnectionHandler[]; @@ -3386,7 +3436,7 @@ declare class ServerConnectionManager { private _update_scroll_buttons(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/ControlBar.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\frames\ControlBar.ts */ declare let control_bar: ControlBar; declare type MicrophoneState = "disabled" | "muted" | "enabled"; declare type HeadphoneState = "muted" | "enabled"; @@ -3449,7 +3499,7 @@ declare class ControlBar { private on_open_playlist_manage(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/hostbanner.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\frames\hostbanner.ts */ declare class Hostbanner { readonly html_tag: JQuery; readonly client: ConnectionHandler; @@ -3462,7 +3512,7 @@ declare class Hostbanner { private generate_tag?(): Promise; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/MenuBar.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\frames\MenuBar.ts */ declare namespace top_menu { export interface HRItem { } @@ -3527,6 +3577,7 @@ declare namespace top_menu { private _items: MenuItem[]; constructor(); append_item(label: string): top_menu.MenuItem; + close(); delete_item(item: MenuItem); items(): top_menu.MenuItem[]; flush_changes(); @@ -3541,7 +3592,7 @@ declare namespace top_menu { export function initialize(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/frames/server_log.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\frames\server_log.ts */ declare namespace log { export namespace server { export enum Type { @@ -3766,13 +3817,403 @@ declare namespace log { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/htmltags.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\frames\side\chat_box.ts */ +declare namespace chat { + export class ChatBox { + private _html_tag: JQuery; + private _html_input: JQuery; + 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; + constructor(); + html_tag(): JQuery; + destroy(); + private _initialize_listener(); + private _build_html_tag(); + private _callback_text_changed(event: Event); + private _text(element: HTMLElement); + private htmlEscape(message: string): string; + 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(); + } +} + +/* File: D:\TeaSpeak\web\shared\js\ui\frames\side\chat_helper.ts */ +declare namespace chat { + export namespace helpers { + namespace md2bbc { + export type RemarkToken = { + type: string; + tight: boolean; + lines: number[]; + level: number; + /* img */ + alt?: string; + src?: string; + /* link */ + href?: string; + /* table */ + align?: string; + /* code */ + params?: string; + content?: string; + hLevel?: number; + children?: RemarkToken[]; + }; + export class Renderer { + private static renderers; + private _options; + last_paragraph: RemarkToken; + render(tokens: RemarkToken[], options: any, env: any); + private render_token(token: RemarkToken, index: number); + private render_inline(tokens: RemarkToken[], index: number); + options(): any; + maybe_escape_bb(text: string); + } + } + export function preprocess_chat_message(message: string): string; + export namespace history { + export function load_history(key: string): Promise; + export function save_history(key: string, value: any): Promise; + } + export namespace date { + export function same_day(a: number | Date, b: number | Date); + } + } + export namespace format { + export namespace date { + export enum ColloquialFormat { + YESTERDAY, + TODAY, + GENERAL + } + export function date_format(date: Date, now: Date, ignore_settings?: boolean): ColloquialFormat; + export function format_date_general(date: Date, hours?: boolean): string; + export function format_date_colloquial(date: Date, current_timestamp: Date): { + result: string; + format: ColloquialFormat; + }; + export function format_chat_time(date: Date): { + result: string; + next_update: number; /* in MS */ + }; + } + export namespace time { + export function format_online_time(secs: number): string; + } + } +} + +/* File: D:\TeaSpeak\web\shared\js\ui\frames\side\client_info.ts */ +declare namespace chat { + export class ClientInfo { + readonly handle: Frame; + private _html_tag: JQuery; + private _current_client: ClientEntry | undefined; + private _online_time_updater: number; + previous_frame_content: FrameContent; + constructor(handle: Frame); + html_tag(): JQuery; + destroy(); + private _build_html_tag(); + current_client(): ClientEntry; + set_current_client(client: ClientEntry | undefined, enforce?: boolean); + } +} + +/* File: D:\TeaSpeak\web\shared\js\ui\frames\side\conversations.ts */ +declare namespace chat { + export namespace channel { + export type ViewEntry = { + html_element: JQuery; + update_timer?: number; + }; + export type MessageData = { + timestamp: number; + message: string; + sender_name: string; + sender_unique_id: string; + sender_database_id: number; + }; + export type Message = MessageData & ViewEntry; + export class Conversation { + readonly handle: ConversationManager; + readonly channel_id: number; + private _flag_private: boolean; + private _html_tag: JQuery; + 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; + private _view_entries: ViewEntry[]; + private _last_messages: MessageData[]; + private _last_messages_timestamp: number; + private _first_unread_message: Message; + private _first_unread_message_pointer: ViewEntry; + private _scroll_position: number | undefined; + constructor(handle: ConversationManager, channel_id: number); + html_tag(): JQuery; + destroy(); + private _build_html_tag(); + is_unread(); + mark_read(); + private _mark_read(); + private _generate_view_message(data: MessageData): Message; + private _generate_view_spacer(message: string, type: "date" | "new" | "old" | "error"): ViewEntry; + last_messages_timestamp(): number; + 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; + text_send_failed(error: CommandResult | any); + set_flag_private(flag: boolean); + update_private_state(); + delete_message(message: MessageData); + delete_messages(begin: number, end: number, sender: number, limit: number); + private _delete_message(message: Message); + } + export class ConversationManager { + readonly handle: Frame; + private _html_tag: JQuery; + private _chat_box: ChatBox; + private _container_conversation: JQuery; + private _conversations: Conversation[]; + private _current_conversation: Conversation | undefined; + private _needed_listener; + constructor(handle: Frame); + initialize_needed_listener(); + html_tag(): JQuery; + destroy(); + update_chat_box(); + private _build_html_tag(); + set_current_channel(channel_id: number, update_info_frame?: boolean); + current_channel(): number; + /* Used by notifychanneldeleted */ + delete_conversation(channel_id: number); + reset(); + conversation(channel_id: number, create?: boolean): Conversation; + on_show(); + update_input_format_helper(); + } + } +} + +/* File: D:\TeaSpeak\web\shared\js\ui\frames\side\music_info.ts */ +declare namespace chat { + export class MusicInfo { + readonly events: events.Registry; + readonly handle: Frame; + private _html_tag: JQuery; + private _container_playlist: JQuery; + private _current_bot: MusicClientEntry | undefined; + private update_song_info: number; + private time_select: { + active: boolean; + max_time: number; + current_select_time: number; + current_player_time: number; + }; + private song_reorder: { + active: boolean; + song_id: number; + previous_entry: number; + html: JQuery; + mouse?: { + x: number; + y: number; + }; + indicator: JQuery; + }; + previous_frame_content: FrameContent; + constructor(handle: Frame); + html_tag(): JQuery; + destroy(); + private format_time(value: number); + private _build_html_tag(); + private display_song_info(song: SongInfo); + private initialize_listener(); + set_current_bot(client: MusicClientEntry | undefined, enforce?: boolean); + current_bot(): MusicClientEntry | undefined; + private sort_songs(data: PlaylistSong[]); + /* playlist stuff */ + update_playlist(); + private _playlist_subscribed; + private playlist_subscribe(unsubscribe: boolean); + private build_playlist_entry(data: PlaylistSong, insert_effect: boolean): JQuery; + } +} + +/* File: D:\TeaSpeak\web\shared\js\ui\frames\side\private_conversations.ts */ +declare namespace chat { + export type PrivateConversationViewEntry = { + html_tag: JQuery; + }; + export type PrivateConversationMessageData = { + message_id: string; + message: string; + sender: "self" | "partner"; + sender_name: string; + sender_unique_id: string; + sender_client_id: number; + timestamp: number; + }; + export type PrivateConversationViewMessage = PrivateConversationMessageData & PrivateConversationViewEntry & { + time_update_id: number; + }; + export type PrivateConversationViewSpacer = PrivateConversationViewEntry; + export enum PrivateConversationState { + OPEN, + CLOSED, + DISCONNECTED, + DISCONNECTED_SELF + } + export type DisplayedMessage = { + timestamp: number; + message: PrivateConversationViewMessage | PrivateConversationViewEntry; + message_type: "spacer" | "message"; + /* structure as following + 1. time pointer + 2. unread + 3. message + */ + tag_message: JQuery; + tag_unread: PrivateConversationViewSpacer | undefined; + tag_timepointer: PrivateConversationViewSpacer | undefined; + }; + export class PrivateConveration { + readonly handle: PrivateConverations; + private _html_entry_tag: JQuery; + private _message_history: PrivateConversationMessageData[]; + private _callback_message: (text: string) => any; + private _state: PrivateConversationState; + private _last_message_updater_id: number; + private _last_typing: number; + private _typing_timeout: number; + private _typing_timeout_task: number; + _scroll_position: number | undefined; + _html_message_container: JQuery; + client_unique_id: string; + client_id: number; + client_name: string; + private _displayed_messages: DisplayedMessage[]; + private _displayed_messages_length: number; + private _spacer_unread_message: DisplayedMessage; + constructor(handle: PrivateConverations, client_unique_id: string, client_name: string, client_id: number); + private history_key(); + private load_history(); + private save_history(); + entry_tag(): JQuery; + destroy(); + private _2d_flat(array: T[][]): T[]; + messages_tags(): JQuery[]; + append_message(message: string, sender: { + type: "self" | "partner"; + name: string; + unique_id: string; + client_id: number; + }, timestamp?: Date, save_history?: boolean); + private _displayed_message_first_tag(message: DisplayedMessage); + private _destroy_displayed_message(message: DisplayedMessage, update_pointers: boolean); + clear_messages(save?: boolean); + fix_scroll(animate: boolean); + private _update_message_timestamp(); + private _destroy_message(message: PrivateConversationViewMessage); + private _build_message(message: PrivateConversationMessageData): PrivateConversationViewMessage; + 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(); + close_conversation(); + set_client_name(name: string); + set_unread_flag(flag: boolean, update_chat_counter?: boolean); + is_unread(): boolean; + 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); + chat_enabled(); + append_error(message: string, date?: number); + call_message(message: string); + private typing_expired(); + trigger_typing(); + typing_active(); + } + export class PrivateConverations { + readonly handle: Frame; + private _chat_box: ChatBox; + private _html_tag: JQuery; + private _container_conversation: JQuery; + private _container_conversation_messages: JQuery; + private _container_conversation_list: JQuery; + private _container_typing: JQuery; + private _html_no_chats: JQuery; + private _conversations: PrivateConveration[]; + private _current_conversation: PrivateConveration; + private _select_read_timer: number; + constructor(handle: Frame); + clear_client_ids(); + html_tag(): JQuery; + destroy(); + current_conversation(): PrivateConveration | undefined; + conversations(): PrivateConveration[]; + create_conversation(client_uid: string, client_name: string, client_id: number): PrivateConveration; + delete_conversation(conv: PrivateConveration, update_chat_couner?: boolean); + find_conversation(partner: { + name: string; + unique_id: string; + client_id: number; + }, mode: { + create: boolean; + attach: boolean; + }): PrivateConveration | undefined; + clear_conversations(); + set_selected_conversation(conv: PrivateConveration | undefined); + update_chatbox_state(); + update_typing_state(); + private _build_html_tag(); + try_input_focus(); + on_show(); + update_input_format_helper(); + } +} + +/* File: D:\TeaSpeak\web\shared\js\ui\htmltags.ts */ declare namespace htmltags { export interface ClientProperties { client_id: number; client_unique_id: string; client_name: string; add_braces?: boolean; + client_database_id?: number; } export interface ChannelProperties { channel_id: number; @@ -3791,24 +4232,24 @@ declare namespace htmltags { namespace bbcodes { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalAbout.ts */ +/* File: D:\TeaSpeak\web\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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\modal\ModalBanClient.ts */ declare namespace Modals { export type BanEntry = { name?: string; @@ -3823,41 +4264,41 @@ declare namespace Modals { }) => void); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalBanList.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\modal\ModalBanList.ts */ declare namespace Modals { export function openBanList(client: ConnectionHandler); //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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\modal\ModalBotMenue.ts */ -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalChangeLatency.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\modal\ModalChangeLatency.ts */ declare namespace Modals { export function spawnChangeLatency(client: ClientEntry, current: connection.voice.LatencySettings, reset: () => connection.voice.LatencySettings, apply: (settings: connection.voice.LatencySettings) => any, callback_flush?: () => any); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalChangeVolume.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\modal\ModalChangeVolume.ts */ declare namespace Modals { 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/ModalChannelInfo.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\modal\ModalChannelInfo.ts */ declare namespace Modals { export function openChannelInfo(channel: ChannelEntry); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalClientInfo.ts */ +/* File: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\modal\ModalConnect.ts */ declare namespace connection_log { //TODO: Save password data export type ConnectionData = { @@ -3909,51 +4350,61 @@ declare namespace Modals { export const Regex; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalCreateChannel.ts */ +/* File: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\modal\ModalGroupAssignment.ts */ declare namespace Modals { export function createServerGroupAssignmentModal(client: ClientEntry, callback: (groups: number[], flag: boolean) => Promise); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalIconSelect.ts */ +/* File: D:\TeaSpeak\web\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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\modal\ModalMusicManage.ts */ +declare namespace Modals { + export function openMusicManage(client: ConnectionHandler, bot: MusicClientEntry); +} + +/* File: D:\TeaSpeak\web\shared\js\ui\modal\ModalNewcomer.ts */ +declare namespace Modals { + export function openModalNewcomer(); +} + +/* File: D:\TeaSpeak\web\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: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\modal\ModalPoke.ts */ declare namespace Modals { export class PokeModal { private _handle: Modal; @@ -3971,7 +4422,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: D:\TeaSpeak\web\shared\js\ui\modal\ModalQuery.ts */ declare namespace Modals { export function spawnQueryCreate(connection: ConnectionHandler, callback_created?: (user, pass) => any); export function spawnQueryCreated(credentials: { @@ -3980,7 +4431,7 @@ declare namespace Modals { }, just_created: boolean); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalQueryManage.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\modal\ModalQueryManage.ts */ declare namespace Modals { /* export function spawnQueryManage(client: ConnectionHandler) { @@ -4143,28 +4594,33 @@ declare namespace Modals { export function spawnQueryManage(client: ConnectionHandler); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalServerEdit.ts */ +/* File: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\modal\ModalServerInfo.ts */ declare namespace Modals { export function openServerInfo(server: ServerEntry); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalServerInfoBandwidth.ts */ +/* File: D:\TeaSpeak\web\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; + export enum RequestInfoStatus { + SUCCESS, + UNKNOWN, + NO_PERMISSION + } + export type ServerBandwidthInfoUpdateCallback = (status: RequestInfoStatus, info?: ServerConnectionInfo) => any; + export function openServerInfoBandwidth(server: ServerEntry, update_callbacks?: ServerBandwidthInfoUpdateCallback[]): Modal; } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/ModalSettings.ts */ +/* File: D:\TeaSpeak\web\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: D:\TeaSpeak\web\shared\js\ui\modal\ModalYesNo.ts */ declare namespace Modals { export function spawnYesNo(header: BodyCreator, body: BodyCreator, callback: (_: boolean) => any, properties?: { text_yes?: string; @@ -4173,7 +4629,7 @@ declare namespace Modals { }); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/permission/CanvasPermissionEditor.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\modal\permission\CanvasPermissionEditor.ts */ declare namespace pe { namespace ui { export namespace scheme { @@ -4422,10 +4878,11 @@ declare namespace pe { set_mode(mode: Modals.PermissionEditorMode); update_ui(); set_toggle_button(callback: () => string, initial: string); + set_hidden_permissions(permissions: PermissionType[]); } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/permission/HTMLPermissionEditor.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\modal\permission\HTMLPermissionEditor.ts */ declare namespace pe { export class HTMLPermission { readonly handle: HTMLPermissionEditor; @@ -4497,8 +4954,10 @@ declare namespace pe { private mode_container_permissions: JQuery; private mode_container_error_permission: JQuery; private mode_container_unset: JQuery; + private icon_shown: boolean; private filter_input: JQuery; private filter_grant: JQuery; + private hidden_permissions: PermissionType[]; private button_toggle: JQuery; private even_list: ({ visible(): boolean; @@ -4508,6 +4967,7 @@ declare namespace pe { private permission_groups: HTMLPermissionGroup[]; constructor(); initialize(permissions: GroupedPermissions[]); + set_hidden_permissions(permissions: PermissionType[]); private update_filter(); private update_icon(); private build_tag(); @@ -4522,7 +4982,7 @@ declare namespace pe { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/modal/permission/ModalPermissionEdit.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\modal\permission\ModalPermissionEdit.ts */ declare interface JQuery { dropdown: any; } @@ -4564,6 +5024,7 @@ declare namespace Modals { abstract initialize(permissions: GroupedPermissions[]); abstract html_tag(): JQuery; abstract set_permissions(permissions?: PermissionValue[]); + abstract set_hidden_permissions(permissions: PermissionType[]); set_listener(listener?: PermissionEditor.change_listener_t); set_listener_update(listener?: () => any); trigger_update(); @@ -4589,7 +5050,16 @@ 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: D:\TeaSpeak\web\shared\js\ui\modal\permission\SenselessPermissions.ts */ +declare namespace permissions { + export const senseless_server_group_permissions: PermissionType[]; + export const senseless_channel_group_permissions: PermissionType[]; + export const senseless_channel_permissions: PermissionType[]; + export const senseless_client_permissions: PermissionType[]; + export const senseless_client_channel_permissions: PermissionType[]; +} + +/* File: D:\TeaSpeak\web\shared\js\ui\server.ts */ declare class ServerProperties { virtualserver_host: string; virtualserver_port: number; @@ -4708,7 +5178,7 @@ declare class ServerEntry { set flag_text_unread(flag: boolean); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/ui/view.ts */ +/* File: D:\TeaSpeak\web\shared\js\ui\view.ts */ declare class ChannelTree { client: ConnectionHandler; server: ServerEntry; @@ -4767,7 +5237,7 @@ declare class ChannelTree { subscribe_all_channels(); } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/utils/helpers.ts */ +/* File: D:\TeaSpeak\web\shared\js\utils\helpers.ts */ declare namespace helpers { export function hashPassword(password: string): Promise; } @@ -4797,7 +5267,7 @@ declare class LaterPromise extends Promise { } declare const copy_to_clipboard; -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/voice/RecorderBase.ts */ +/* File: D:\TeaSpeak\web\shared\js\voice\RecorderBase.ts */ declare namespace audio { export namespace recorder { export interface InputDevice { @@ -4895,7 +5365,7 @@ declare namespace audio { } } -/* File: /home/wolverindev/TeaSpeak/Web-Client/shared/js/voice/RecorderProfile.ts */ +/* File: D:\TeaSpeak\web\shared\js\voice\RecorderProfile.ts */ declare type VadType = "threshold" | "push_to_talk" | "active"; declare interface RecorderProfileConfig { version: number; @@ -4915,7 +5385,7 @@ declare interface RecorderProfileConfig { key_alt: boolean; }; } -declare let default_recorder: RecorderProfile /* needs initialize */; +declare let default_recorder: RecorderProfile; declare class RecorderProfile { readonly name; readonly volatile;