diff --git a/shared/js/events.ts b/shared/js/events.ts index ba77409c..41d47985 100644 --- a/shared/js/events.ts +++ b/shared/js/events.ts @@ -1,3 +1,5 @@ +import * as log from "./log"; +import {LogCategory} from "./log"; import {guid} from "tc-shared/crypto/uid"; import * as React from "react"; import {useEffect} from "react"; @@ -145,7 +147,8 @@ export class Registry implements EventReceiver { } fire(event_type: T, data?: Events[T], overrideTypeKey?: boolean) { - if(this.debugPrefix) console.log("[%s] Trigger event: %s", this.debugPrefix, event_type); + if(this.debugPrefix) + log.trace(LogCategory.EVENT_REGISTRY, tr("[%s] Trigger event: %s"), this.debugPrefix, event_type); if(typeof data === "object" && 'type' in data && !overrideTypeKey) { if((data as any).type !== event_type) { @@ -186,7 +189,7 @@ export class Registry implements EventReceiver { invokeCount++; } if(this.warnUnhandledEvents && invokeCount === 0) { - console.warn(tr("Event handler (%s) triggered event %s which has no consumers."), this.debugPrefix, type); + log.warn(LogCategory.EVENT_REGISTRY, tr("Event handler (%s) triggered event %s which has no consumers."), this.debugPrefix, type); } } @@ -237,9 +240,9 @@ export class Registry implements EventReceiver { if(!parentClasses) break; - } while ((currentPrototype = Object.getPrototypeOf(currentPrototype))) + } while ((currentPrototype = Object.getPrototypeOf(currentPrototype))); if(Object.keys(registered_events).length === 0) { - console.warn(tr("no events found in event handler")); + log.warn(LogCategory.EVENT_REGISTRY, tr("No events found in event handler which has been registered.")); return; } diff --git a/shared/js/log.ts b/shared/js/log.ts index 9a1748db..57af41f1 100644 --- a/shared/js/log.ts +++ b/shared/js/log.ts @@ -18,7 +18,8 @@ export enum LogCategory { IDENTITIES, STATISTICS, DNS, - FILE_TRANSFER + FILE_TRANSFER, + EVENT_REGISTRY, } export enum LogType { @@ -30,23 +31,24 @@ export enum LogType { } let category_mapping = new Map([ - [LogCategory.CHANNEL, "Channel "], - [LogCategory.CHANNEL_PROPERTIES, "Channel "], - [LogCategory.CLIENT, "Client "], - [LogCategory.SERVER, "Server "], - [LogCategory.BOOKMARKS, "Bookmark "], - [LogCategory.PERMISSIONS, "Permission "], - [LogCategory.GENERAL, "General "], - [LogCategory.NETWORKING, "Network "], - [LogCategory.VOICE, "Voice "], - [LogCategory.AUDIO, "Audio "], - [LogCategory.CHAT, "Chat "], - [LogCategory.I18N, "I18N "], - [LogCategory.IDENTITIES, "Identities "], - [LogCategory.IPC, "IPC "], - [LogCategory.STATISTICS, "Statistics "], - [LogCategory.DNS, "DNS "], - [LogCategory.FILE_TRANSFER, "FILE_TRANSFER"] + [LogCategory.CHANNEL, "Channel "], + [LogCategory.CHANNEL_PROPERTIES, "Channel "], + [LogCategory.CLIENT, "Client "], + [LogCategory.SERVER, "Server "], + [LogCategory.BOOKMARKS, "Bookmark "], + [LogCategory.PERMISSIONS, "Permission "], + [LogCategory.GENERAL, "General "], + [LogCategory.NETWORKING, "Network "], + [LogCategory.VOICE, "Voice "], + [LogCategory.AUDIO, "Audio "], + [LogCategory.CHAT, "Chat "], + [LogCategory.I18N, "I18N "], + [LogCategory.IDENTITIES, "Identities "], + [LogCategory.IPC, "IPC "], + [LogCategory.STATISTICS, "Statistics "], + [LogCategory.DNS, "DNS "], + [LogCategory.FILE_TRANSFER, "File transfer "], + [LogCategory.EVENT_REGISTRY, "Event registry"], ]); export let enabled_mapping = new Map([ @@ -66,7 +68,8 @@ export let enabled_mapping = new Map([ [LogCategory.IPC, true], [LogCategory.STATISTICS, true], [LogCategory.DNS, true], - [LogCategory.FILE_TRANSFER, true] + [LogCategory.FILE_TRANSFER, true], + [LogCategory.EVENT_REGISTRY, true], ]); //Values will be overridden by initialize() @@ -87,17 +90,16 @@ const group_mode: GroupMode = GroupMode.PREFIX; //Category Example: ?log.i18n.enabled=0 //Level Example A: ?log.level.trace.enabled=0 //Level Example B: ?log.level=0 -export function initialize(default_level: LogType) { +export function initialize(defaultLogLevel: LogType) { for(const category of Object.keys(LogCategory).map(e => parseInt(e)).filter(e => !isNaN(e))) { const categoryName = LogCategory[category].toLowerCase(); enabled_mapping.set(category, settings.static_global(Settings.FN_LOG_ENABLED(categoryName), enabled_mapping.get(category))); } - const base_level = settings.static_global(Settings.KEY_LOG_LEVEL, default_level); - + const baseLogLevel = settings.static_global(Settings.KEY_LOG_LEVEL, defaultLogLevel); for(const level of Object.keys(LogType).map(e => parseInt(e)).filter(e => !isNaN(e))) { const levelName = LogType[level].toLowerCase(); - level_mapping.set(level, settings.static_global(Settings.FN_LOG_LEVEL_ENABLED(levelName), level >= base_level)); + level_mapping.set(level, settings.static_global(Settings.FN_LOG_LEVEL_ENABLED(levelName), level >= baseLogLevel)); } } diff --git a/shared/js/ui/tree/View.tsx b/shared/js/ui/tree/View.tsx index 58561cc4..9b55705d 100644 --- a/shared/js/ui/tree/View.tsx +++ b/shared/js/ui/tree/View.tsx @@ -89,14 +89,13 @@ export class ChannelTreeView extends ReactComponentBase { if(entries.length !== 1) { if(entries.length === 0) - console.warn("Channel resize observer fired resize event with no entries!"); + console.warn(tr("Channel resize observer fired resize event with no entries!")); else - console.warn("Channel resize observer fired resize event with more than one entry which should not be possible (%d)!", entries.length); + console.warn(tr("Channel resize observer fired resize event with more than one entry which should not be possible (%d)!"), entries.length); return; } const bounds = entries[0].contentRect; if(this.state.view_height !== bounds.height) { - console.log("Handling height update and change tree height to %d from %d", bounds.height, this.state.view_height); this.setState({ view_height: bounds.height }); @@ -321,7 +320,7 @@ export class ChannelTreeView extends ReactComponentBase e.entry === entry); if(index === -1) { if(callback) callback(); - console.warn("Failed to scroll tree entry in view because its not registered within the view. Entry: %o", entry); + console.warn(tr("Failed to scroll tree entry in view because its not registered within the view. Entry: %o"), entry); return; } diff --git a/shared/js/ui/view.tsx b/shared/js/ui/view.tsx index b1cc688e..e1669a2a 100644 --- a/shared/js/ui/view.tsx +++ b/shared/js/ui/view.tsx @@ -448,7 +448,6 @@ export class ChannelTree { } parent.events.fire("notify_children_changed"); } else { - console.error("No previous & paretn!"); channel.channel_next = this.channel_first; if(this.channel_first) this.channel_first.channel_previous = channel; diff --git a/web/js/codec/CodecWrapperWorker.ts b/web/js/codec/CodecWrapperWorker.ts index f75fc05a..c84bad8d 100644 --- a/web/js/codec/CodecWrapperWorker.ts +++ b/web/js/codec/CodecWrapperWorker.ts @@ -224,7 +224,7 @@ export class CodecWrapperWorker extends BasicCodec { } private handleWorkerError() { - log.error(LogCategory.VOICE, tr("Received error from codec worker. Closing worker.")); + log.debug(LogCategory.VOICE, tr("Received error from codec worker. Closing worker.")); for(const token of Object.keys(this.pending_executes)) { this.pending_executes[token].resolve({ success: false, diff --git a/web/js/connection/ServerConnection.ts b/web/js/connection/ServerConnection.ts index 1e1e8abe..c920f210 100644 --- a/web/js/connection/ServerConnection.ts +++ b/web/js/connection/ServerConnection.ts @@ -256,6 +256,9 @@ export class ServerConnection extends AbstractServerConnection { if(this.connectCancelCallback) this.connectCancelCallback(); + if(this.connection_state_ === ConnectionState.UNCONNECTED) + return; + this.updateConnectionState(ConnectionState.DISCONNECTING); try { clearTimeout(this.pingStatistics.thread_id);