From 6de97e7ff1392469cc1742ebd00317ee206d8987 Mon Sep 17 00:00:00 2001 From: schlagmichdoch Date: Mon, 5 Feb 2024 15:42:27 +0100 Subject: [PATCH] Put all log prompts into new Logger class; Only log debugging logs to console if PairDrop is in debug mode; Implement activation of debug mode via URL argument (`?debug=true`) --- public/scripts/browser-tabs-connector.js | 2 +- public/scripts/localization.js | 14 +-- public/scripts/main.js | 57 ++++++++---- public/scripts/network.js | 113 ++++++++++++----------- public/scripts/persistent-storage.js | 33 ++++--- public/scripts/ui-main.js | 6 +- public/scripts/ui.js | 31 ++++--- public/scripts/util.js | 2 +- 8 files changed, 144 insertions(+), 114 deletions(-) diff --git a/public/scripts/browser-tabs-connector.js b/public/scripts/browser-tabs-connector.js index da9c43e..acc0005 100644 --- a/public/scripts/browser-tabs-connector.js +++ b/public/scripts/browser-tabs-connector.js @@ -10,7 +10,7 @@ class BrowserTabsConnector { } _onMessage(e) { - console.log('Broadcast:', e.data) + Logger.debug('Broadcast:', e.data) switch (e.data.type) { case 'self-display-name-changed': Events.fire('self-display-name-changed', e.data.detail); diff --git a/public/scripts/localization.js b/public/scripts/localization.js index c0f2145..f230add 100644 --- a/public/scripts/localization.js +++ b/public/scripts/localization.js @@ -67,7 +67,7 @@ class Localization { Localization.$htmlRoot.setAttribute('lang', locale); - console.log("Page successfully translated", + Logger.debug("Page successfully translated", `System language: ${Localization.systemLocale}`, `Selected language: ${locale}` ); @@ -145,7 +145,7 @@ class Localization { translation = translationObj[lastKey]; } catch (e) { - console.error(e); + Logger.error(e); } if (!translation) { @@ -179,7 +179,7 @@ class Localization { } catch (e) { // Log warnings and help calls - console.warn(e); + Logger.warn(e); Localization.logTranslationMissingOrBroken(key, attr, data, useDefault); Localization.logHelpCallKey(key, attr); Localization.logHelpCall(); @@ -192,7 +192,7 @@ class Localization { else { // Is not default locale yet // Get translation for default language with same arguments - console.log(`Using default language ${Localization.defaultLocale.toUpperCase()} instead.`); + Logger.debug(`Using default language ${Localization.defaultLocale.toUpperCase()} instead.`); translation = this.getTranslation(key, attr, data, true); } } @@ -205,11 +205,11 @@ class Localization { ? Localization.defaultLocale.toUpperCase() : Localization.locale.toUpperCase(); - console.warn(`Missing or broken translation for language ${usedLocale}.\n`, 'key:', key, 'attr:', attr, 'data:', data); + Logger.warn(`Missing or broken translation for language ${usedLocale}.\n`, 'key:', key, 'attr:', attr, 'data:', data); } static logHelpCall() { - console.log("Help translating PairDrop: https://hosted.weblate.org/engage/pairdrop/"); + Logger.warn("Help translating PairDrop: https://hosted.weblate.org/engage/pairdrop/"); } static logHelpCallKey(key, attr) { @@ -219,7 +219,7 @@ class Localization { ? key : `${key}_${attr}`; - console.warn(`Translate this string here: https://hosted.weblate.org/browse/pairdrop/pairdrop-spa/${locale}/?q=${keyComplete}`); + Logger.warn(`Translate this string here: https://hosted.weblate.org/browse/pairdrop/pairdrop-spa/${locale}/?q=${keyComplete}`); } static escapeHTML(unsafeText) { diff --git a/public/scripts/main.js b/public/scripts/main.js index 8960ed2..9403567 100644 --- a/public/scripts/main.js +++ b/public/scripts/main.js @@ -1,3 +1,23 @@ +class Logger { + + static debug(message, ...optionalParams) { + if (window.debugMode) { + console.debug("DEBUG:", message, ...optionalParams); + } + } + static log(message, ...optionalParams) { + console.log("LOG:", message, ...optionalParams); + } + + static warn(message, ...optionalParams) { + console.warn("WARN:", message, ...optionalParams); + } + + static error(message, ...optionalParams) { + console.error("ERROR:", message, ...optionalParams); + } +} + class PairDrop { constructor() { @@ -34,14 +54,14 @@ class PairDrop { this.initialize() .then(_ => { - console.log("Initialization completed."); + Logger.log("Initialization completed."); }); } async initialize() { // Translate page before fading in await this.localization.setInitialTranslation() - console.log("Initial translation successful."); + Logger.log("Initial translation successful."); // Show "Loading..." until connected to WsServer await this.footerUI.showLoading(); @@ -56,16 +76,16 @@ class PairDrop { await this.backgroundCanvas.fadeIn(); // Load deferred assets - console.log("Load deferred assets..."); + Logger.log("Load deferred assets..."); await this.loadDeferredAssets(); - console.log("Loading of deferred assets completed."); + Logger.log("Loading of deferred assets completed."); - console.log("Hydrate UI..."); + Logger.log("Hydrate UI..."); await this.hydrate(); - console.log("UI hydrated."); + Logger.log("UI hydrated."); // Evaluate url params as soon as ws is connected - console.log("Evaluate URL params as soon as websocket connection is established."); + Logger.log("Evaluate URL params as soon as websocket connection is established."); Events.on('ws-connected', _ => this.evaluateUrlParams(), {once: true}); } @@ -74,7 +94,7 @@ class PairDrop { navigator.serviceWorker .register('service-worker.js') .then(serviceWorker => { - console.log('Service Worker registered'); + Logger.log('Service Worker registered'); window.serviceWorker = serviceWorker }); } @@ -133,10 +153,10 @@ class PairDrop { return new Promise( async (resolve) => { try { await this.loadStyleSheet(url); - console.log(`Stylesheet loaded successfully: ${url}`); + Logger.log(`Stylesheet loaded successfully: ${url}`); resolve(); } catch (error) { - console.error('Error loading stylesheet:', error); + Logger.error('Error loading stylesheet:', error); } }); } @@ -156,10 +176,10 @@ class PairDrop { return new Promise( async (resolve) => { try { await this.loadScript(url); - console.log(`Script loaded successfully: ${url}`); + Logger.log(`Script loaded successfully: ${url}`); resolve(); } catch (error) { - console.error('Error loading script:', error); + Logger.error('Error loading script:', error); } }); } @@ -229,12 +249,17 @@ class PairDrop { this.publicRoomDialog._createPublicRoom(); } } + else if (urlParams.has("debug") && urlParams.get("debug") === "true") { + window.debugMode = true; + } - // remove url params from url - const urlWithoutParams = getUrlWithoutArguments(); - window.history.replaceState({}, "Rewrite URL", urlWithoutParams); + if (!window.debugMode) { + // remove url params from url + const urlWithoutParams = getUrlWithoutArguments(); + window.history.replaceState({}, "Rewrite URL", urlWithoutParams); + } - console.log("URL params evaluated."); + Logger.log("URL params evaluated."); } } diff --git a/public/scripts/network.js b/public/scripts/network.js index 6b475ed..3c86f2a 100644 --- a/public/scripts/network.js +++ b/public/scripts/network.js @@ -27,16 +27,16 @@ class ServerConnection { } _getConfig() { - console.log("Loading config...") + Logger.log("Loading config...") return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest(); xhr.addEventListener("load", () => { if (xhr.status === 200) { // Config received let config = JSON.parse(xhr.responseText); - console.log("Config loaded:", config) - this._config = config; - Events.fire('config', config); + Logger.log("Config loaded:", config) + window._config = config; + Events.fire('config-loaded'); resolve() } else if (xhr.status < 200 || xhr.status >= 300) { retry(xhr); @@ -86,7 +86,7 @@ class ServerConnection { } _onOpen() { - console.log('WS: server connected'); + Logger.log('WS: server connected'); Events.fire('ws-connected'); if (this._isReconnect) { Events.fire('notify-user', Localization.getTranslation("notifications.connected")); @@ -136,7 +136,9 @@ class ServerConnection { _onMessage(message) { const messageJSON = JSON.parse(message); - if (messageJSON.type !== 'ping' && messageJSON.type !== 'ws-relay') console.log('WS receive:', messageJSON); + if (messageJSON.type !== 'ping' && messageJSON.type !== 'ws-relay') { + Logger.debug('WS receive:', messageJSON); + } switch (messageJSON.type) { case 'ws-config': this._setWsConfig(messageJSON.wsConfig); @@ -195,17 +197,19 @@ class ServerConnection { Events.fire('ws-relay', {peerId: messageJSON.sender.id, message: message}); } else { - console.log("WS receive: message type is for websocket fallback only but websocket fallback is not activated on this instance.") + Logger.warn("WS receive: message type is for websocket fallback only but websocket fallback is not activated on this instance.") } break; default: - console.error('WS receive: unknown message type', messageJSON); + Logger.error('WS receive: unknown message type', messageJSON); } } send(msg) { if (!this._isConnected()) return; - if (msg.type !== 'pong' && msg.type !== 'ws-relay') console.log("WS send:", msg) + if (msg.type !== 'pong' && msg.type !== 'ws-relay') { + Logger.debug("WS send:", msg) + } this._socket.send(JSON.stringify(msg)); } @@ -223,7 +227,7 @@ class ServerConnection { .addPeerIdToLocalStorage() .then(peerId => { if (!peerId) return; - console.log("successfully added peerId to localStorage"); + Logger.debug("successfully added peerId to localStorage"); // Only now join rooms Events.fire('join-ip-room'); @@ -239,8 +243,8 @@ class ServerConnection { _endpoint() { const protocol = location.protocol.startsWith('https') ? 'wss' : 'ws'; // Check whether the instance specifies another signaling server otherwise use the current instance for signaling - let wsServerDomain = this._config.signalingServer - ? this._config.signalingServer + let wsServerDomain = window._config.signalingServer + ? window._config.signalingServer : location.host + location.pathname; let wsUrl = new URL(protocol + '://' + wsServerDomain + 'server'); @@ -264,7 +268,7 @@ class ServerConnection { BrowserTabsConnector .removePeerIdFromLocalStorage(peerId) .then(_ => { - console.log("successfully removed peerId from localStorage"); + Logger.debug("successfully removed peerId from localStorage"); }); if (!this._socket) return; @@ -277,7 +281,7 @@ class ServerConnection { } _onDisconnect() { - console.log('WS: server disconnected'); + Logger.log('WS: server disconnected'); setTimeout(() => { this._isReconnect = true; Events.fire('ws-disconnected'); @@ -303,7 +307,7 @@ class ServerConnection { } _onError(e) { - console.error(e); + Logger.error(e); } _reconnect() { @@ -385,7 +389,9 @@ class Peer { PersistentStorage .deleteRoomSecret(this._getPairSecret()) .then(deletedRoomSecret => { - if (deletedRoomSecret) console.log("Successfully deleted duplicate room secret with same peer: ", deletedRoomSecret); + if (deletedRoomSecret) { + Logger.debug("Successfully deleted duplicate room secret with same peer: ", deletedRoomSecret); + } }); } @@ -398,7 +404,7 @@ class Peer { && this._isCaller) { // increase security by initiating the increase of the roomSecret length // from 64 chars ( { - console.log(`Successfully updated DisplayName for roomSecretEntry ${roomSecretEntry.key}`); + Logger.debug(`Successfully updated DisplayName for roomSecretEntry ${roomSecretEntry.key}`); }) } @@ -855,7 +861,7 @@ class RTCPeer extends Peer { this._evaluatePendingInboundMessages() .then((count) => { if (count) { - console.log("Pending inbound messages evaluated."); + Logger.debug("Pending inbound messages evaluated."); } }); } @@ -874,36 +880,36 @@ class RTCPeer extends Peer { } async _onNegotiationNeeded() { - console.log('RTC: Negotiation needed'); + Logger.debug('RTC: Negotiation needed'); if (this._isCaller) { // Creating offer if required - console.log('RTC: Creating offer'); + Logger.debug('RTC: Creating offer'); const description = await this._conn.createOffer(); await this._handleLocalDescription(description); } } _onSignalingStateChanged() { - console.log('RTC: Signaling state changed:', this._conn.signalingState); + Logger.debug('RTC: Signaling state changed:', this._conn.signalingState); } _onIceConnectionStateChange() { - console.log('RTC: ICE connection state changed:', this._conn.iceConnectionState); + Logger.debug('RTC: ICE connection state changed:', this._conn.iceConnectionState); } _onIceGatheringStateChanged() { - console.log('RTC: ICE gathering state changed:', this._conn.iceConnectionState); + Logger.debug('RTC: ICE gathering state changed:', this._conn.iceConnectionState); } _onConnectionStateChange() { - console.log('RTC: Connection state changed:', this._conn.connectionState); + Logger.debug('RTC: Connection state changed:', this._conn.connectionState); switch (this._conn.connectionState) { case 'disconnected': this._refresh(); break; case 'failed': - console.warn('RTC connection failed'); + Logger.warn('RTC connection failed'); // Todo: if error is "TURN server needed" -> fallback to WS if activated this._refresh(); } @@ -914,7 +920,7 @@ class RTCPeer extends Peer { } _onIceCandidateError(error) { - console.error(error); + Logger.error(error); } _openMessageChannel() { @@ -944,7 +950,7 @@ class RTCPeer extends Peer { } _onChannelOpened(e) { - console.log(`RTC: Channel ${e.target.label} opened with`, this._peerId); + Logger.debug(`RTC: Channel ${e.target.label} opened with`, this._peerId); // wait until all channels are open if (!this._stable()) return; @@ -962,30 +968,30 @@ class RTCPeer extends Peer { } _onChannelClosed(e) { - console.log(`RTC: Channel ${e.target.label} closed`, this._peerId); + Logger.debug(`RTC: Channel ${e.target.label} closed`, this._peerId); this._refresh(); } _onChannelError(e) { - console.warn(`RTC: Channel ${e.target.label} error`, this._peerId); - console.error(e.error); + Logger.warn(`RTC: Channel ${e.target.label} error`, this._peerId); + Logger.error(e.error); } async _handleLocalDescription(localDescription) { await this._conn.setLocalDescription(localDescription); - console.log("RTC: Sending local description"); + Logger.debug("RTC: Sending local description"); this._sendSignal({ signalType: 'description', description: localDescription }); } async _handleRemoteDescription(remoteDescription) { - console.log("RTC: Received remote description"); + Logger.debug("RTC: Received remote description"); await this._conn.setRemoteDescription(remoteDescription); if (!this._isCaller) { // Creating answer if required - console.log('RTC: Creating answer'); + Logger.debug('RTC: Creating answer'); const localDescription = await this._conn.createAnswer(); await this._handleLocalDescription(localDescription); } @@ -994,7 +1000,7 @@ class RTCPeer extends Peer { _handleLocalCandidate(candidate) { if (this.localIceCandidatesSent) return; - console.log("RTC: Local candidate created", candidate); + Logger.debug("RTC: Local candidate created", candidate); if (candidate === null) { this.localIceCandidatesSent = true; @@ -1007,7 +1013,7 @@ class RTCPeer extends Peer { async _handleRemoteCandidate(candidate) { if (this.remoteIceCandidatesReceived) return; - console.log("RTC: Received remote candidate", candidate); + Logger.debug("RTC: Received remote candidate", candidate); if (candidate === null) { this.remoteIceCandidatesReceived = true; @@ -1021,7 +1027,7 @@ class RTCPeer extends Peer { let inboundMessagesEvaluatedCount = 0; while (this.pendingInboundMessages.length > 0) { const message = this.pendingInboundMessages.shift(); - console.log("Evaluate pending inbound message:", message); + Logger.debug("Evaluate pending inbound message:", message); await this._onServerSignalMessage(message); inboundMessagesEvaluatedCount++; } @@ -1042,7 +1048,7 @@ class RTCPeer extends Peer { await this._handleRemoteCandidate(message.candidate); break; default: - console.warn('Unknown signalType:', message.signalType); + Logger.warn('Unknown signalType:', message.signalType); break; } } @@ -1115,7 +1121,7 @@ class RTCPeer extends Peer { } _sendViaMessageChannel(message) { - console.log('RTC Send:', message); + Logger.debug('RTC Send:', message); this._messageChannel.send(JSON.stringify(message)); } @@ -1147,12 +1153,11 @@ class RTCPeer extends Peer { } _onMessage(message) { - // Todo: Test speed increase without prints? --> print only on debug mode via URL argument `?debug_mode=true` - console.log('RTC Receive:', JSON.parse(message)); + Logger.debug('RTC Receive:', JSON.parse(message)); try { message = JSON.parse(message); } catch (e) { - console.warn("RTCPeer: Received JSON is malformed"); + Logger.warn("RTCPeer: Received JSON is malformed"); return; } super._onMessage(message); @@ -1255,7 +1260,7 @@ class WSPeer extends Peer { } _onMessage(message) { - console.log('WS Receive:', message); + Logger.debug('WS Receive:', message); super._onMessage(message); } @@ -1273,7 +1278,7 @@ class WSPeer extends Peer { message = JSON.parse(message).message; } catch (e) { - console.warn("WSPeer: Received JSON is malformed"); + Logger.warn("WSPeer: Received JSON is malformed"); return; } @@ -1383,7 +1388,7 @@ class PeersManager { this.peers[peerId] = new WSPeer(this._server, isCaller, peerId, roomType, roomId); } else { - console.warn("Websocket fallback is not activated on this instance.\n" + + Logger.warn("Websocket fallback is not activated on this instance.\n" + "Activate WebRTC in this browser or ask the admin of this instance to activate the websocket fallback.") } } @@ -1423,7 +1428,7 @@ class PeersManager { _onPeerLeft(message) { if (this._peerExists(message.peerId) && !this._webRtcSupported(message.peerId)) { - console.log('WSPeer left:', message.peerId); + Logger.debug('WSPeer left:', message.peerId); } if (message.disconnect === true) { // if user actively disconnected from PairDrop server, disconnect all peer to peer connections immediately @@ -1436,7 +1441,7 @@ class PeersManager { .removeOtherPeerIdsFromLocalStorage() .then(peerIds => { if (!peerIds) return; - console.log("successfully removed other peerIds from localStorage"); + Logger.debug("successfully removed other peerIds from localStorage"); }); } } @@ -1514,7 +1519,7 @@ class PeersManager { PersistentStorage .updateRoomSecret(message.oldRoomSecret, message.newRoomSecret) .then(_ => { - console.log("successfully regenerated room secret"); + Logger.debug("successfully regenerated room secret"); Events.fire("room-secrets", [message.newRoomSecret]); }) } diff --git a/public/scripts/persistent-storage.js b/public/scripts/persistent-storage.js index c5a1850..b9b670b 100644 --- a/public/scripts/persistent-storage.js +++ b/public/scripts/persistent-storage.js @@ -7,19 +7,18 @@ class PersistentStorage { const DBOpenRequest = window.indexedDB.open('pairdrop_store', 5); DBOpenRequest.onerror = e => { PersistentStorage.logBrowserNotCapable(); - console.log('Error initializing database: '); - console.log(e) + Logger.error('Error initializing database:', e); }; DBOpenRequest.onsuccess = _ => { - console.log('Database initialised.'); + Logger.debug('Database initialised.'); }; DBOpenRequest.onupgradeneeded = async e => { const db = e.target.result; const txn = e.target.transaction; - db.onerror = e => console.log('Error loading database: ' + e); + db.onerror = e => Logger.error('Error loading database:', e); - console.log(`Upgrading IndexedDB database from version ${e.oldVersion} to version ${e.newVersion}`); + Logger.debug(`Upgrading IndexedDB database from version ${e.oldVersion} to version ${e.newVersion}`); if (e.oldVersion === 0) { // initiate v1 @@ -54,7 +53,7 @@ class PersistentStorage { } static logBrowserNotCapable() { - console.log("This browser does not support IndexedDB. Paired devices will be gone after the browser is closed."); + Logger.log("This browser does not support IndexedDB. Paired devices will be gone after the browser is closed."); } static set(key, value) { @@ -66,7 +65,7 @@ class PersistentStorage { const objectStore = transaction.objectStore('keyval'); const objectStoreRequest = objectStore.put(value, key); objectStoreRequest.onsuccess = _ => { - console.log(`Request successful. Added key-pair: ${key} - ${value}`); + Logger.debug(`Request successful. Added key-pair: ${key} - ${value}`); resolve(value); }; } @@ -85,7 +84,7 @@ class PersistentStorage { const objectStore = transaction.objectStore('keyval'); const objectStoreRequest = objectStore.get(key); objectStoreRequest.onsuccess = _ => { - console.log(`Request successful. Retrieved key-pair: ${key} - ${objectStoreRequest.result}`); + Logger.debug(`Request successful. Retrieved key-pair: ${key} - ${objectStoreRequest.result}`); resolve(objectStoreRequest.result); } } @@ -104,7 +103,7 @@ class PersistentStorage { const objectStore = transaction.objectStore('keyval'); const objectStoreRequest = objectStore.delete(key); objectStoreRequest.onsuccess = _ => { - console.log(`Request successful. Deleted key: ${key}`); + Logger.debug(`Request successful. Deleted key: ${key}`); resolve(); }; } @@ -128,7 +127,7 @@ class PersistentStorage { 'auto_accept': false }); objectStoreRequest.onsuccess = e => { - console.log(`Request successful. RoomSecret added: ${e.target.result}`); + Logger.debug(`Request successful. RoomSecret added: ${e.target.result}`); resolve(); } } @@ -145,7 +144,7 @@ class PersistentStorage { for (let i = 0; i < roomSecrets.length; i++) { secrets.push(roomSecrets[i].secret); } - console.log(`Request successful. Retrieved ${secrets.length} room_secrets`); + Logger.debug(`Request successful. Retrieved ${secrets.length} room_secrets`); return(secrets); } catch (e) { this.logBrowserNotCapable(); @@ -182,13 +181,13 @@ class PersistentStorage { objectStoreRequestKey.onsuccess = e => { const key = e.target.result; if (!key) { - console.log(`Nothing to retrieve. Entry for room_secret not existing: ${roomSecret}`); + Logger.debug(`Nothing to retrieve. Entry for room_secret not existing: ${roomSecret}`); resolve(); return; } const objectStoreRequestRetrieval = objectStore.get(key); objectStoreRequestRetrieval.onsuccess = e => { - console.log(`Request successful. Retrieved entry for room_secret: ${key}`); + Logger.debug(`Request successful. Retrieved entry for room_secret: ${key}`); resolve({ "entry": e.target.result, "key": key @@ -215,14 +214,14 @@ class PersistentStorage { const objectStoreRequestKey = objectStore.index("secret").getKey(roomSecret); objectStoreRequestKey.onsuccess = e => { if (!e.target.result) { - console.log(`Nothing to delete. room_secret not existing: ${roomSecret}`); + Logger.debug(`Nothing to delete. room_secret not existing: ${roomSecret}`); resolve(); return; } const key = e.target.result; const objectStoreRequestDeletion = objectStore.delete(key); objectStoreRequestDeletion.onsuccess = _ => { - console.log(`Request successful. Deleted room_secret: ${key}`); + Logger.debug(`Request successful. Deleted room_secret: ${key}`); resolve(roomSecret); } objectStoreRequestDeletion.onerror = e => { @@ -245,7 +244,7 @@ class PersistentStorage { const objectStore = transaction.objectStore('room_secrets'); const objectStoreRequest = objectStore.clear(); objectStoreRequest.onsuccess = _ => { - console.log('Request successful. All room_secrets cleared'); + Logger.debug('Request successful. All room_secrets cleared'); resolve(); }; } @@ -287,7 +286,7 @@ class PersistentStorage { const objectStoreRequestUpdate = objectStore.put(updatedRoomSecretEntry, roomSecretEntry.key); objectStoreRequestUpdate.onsuccess = e => { - console.log(`Request successful. Updated room_secret: ${roomSecretEntry.key}`); + Logger.debug(`Request successful. Updated room_secret: ${roomSecretEntry.key}`); resolve({ "entry": updatedRoomSecretEntry, "key": roomSecretEntry.key diff --git a/public/scripts/ui-main.js b/public/scripts/ui-main.js index c7a27e5..93cafb1 100644 --- a/public/scripts/ui-main.js +++ b/public/scripts/ui-main.js @@ -238,7 +238,7 @@ class FooterUI { if (!displayName) return; - console.log("Retrieved edited display name:", displayName) + Logger.debug("Retrieved edited display name:", displayName) Events.fire('self-display-name-changed', displayName); } @@ -275,7 +275,7 @@ class FooterUI { Events.fire('notify-user', Localization.getTranslation("notifications.display-name-changed-permanently")); }) .catch(_ => { - console.log("This browser does not support IndexedDB. Use localStorage instead."); + Logger.debug("This browser does not support IndexedDB. Use localStorage instead."); localStorage.setItem('edited_display_name', newDisplayName); Events.fire('notify-user', Localization.getTranslation("notifications.display-name-changed-temporarily")); }) @@ -287,7 +287,7 @@ class FooterUI { else { PersistentStorage.delete('edited_display_name') .catch(_ => { - console.log("This browser does not support IndexedDB. Use localStorage instead.") + Logger.debug("This browser does not support IndexedDB. Use localStorage instead.") localStorage.removeItem('edited_display_name'); }) .finally(() => { diff --git a/public/scripts/ui.js b/public/scripts/ui.js index 9bc51c2..8bc39c7 100644 --- a/public/scripts/ui.js +++ b/public/scripts/ui.js @@ -181,7 +181,7 @@ class PeersUI { PersistentStorage .updateRoomSecretDisplayName(roomSecret, displayName) .then(roomSecretEntry => { - console.log(`Successfully updated DisplayName for roomSecretEntry ${roomSecretEntry.key}`); + Logger.debug(`Successfully updated DisplayName for roomSecretEntry ${roomSecretEntry.key}`); }) } @@ -306,7 +306,7 @@ class PeersUI { this.$shareModeImageThumb.removeAttribute('hidden'); } catch (e) { - console.error(e); + Logger.error(e); this.$shareModeFileThumb.removeAttribute('hidden'); } } else { @@ -338,7 +338,7 @@ class PeersUI { this.shareMode.files = files; this.shareMode.text = text; - console.log('Share mode activated.'); + Logger.debug('Share mode activated.'); Events.fire('share-mode-changed', { active: true, @@ -386,7 +386,7 @@ class PeersUI { this.$shareModeEditBtn.removeEventListener('click', this._editShareTextCallback); this.$shareModeEditBtn.setAttribute('hidden', true); - console.log('Share mode deactivated.') + Logger.debug('Share mode deactivated.') Events.fire('share-mode-changed', { active: false }); } @@ -1062,7 +1062,7 @@ class ReceiveFileDialog extends ReceiveDialog { this.$shareBtn.onclick = _ => { navigator.share({files: files}) .catch(err => { - console.error(err); + Logger.error(err); }); } } @@ -1099,7 +1099,7 @@ class ReceiveFileDialog extends ReceiveDialog { minutes = minutes.length < 2 ? "0" + minutes : minutes; filenameDownload = `PairDrop_files_${year+month+date}_${hours+minutes}.zip`; } catch (e) { - console.error(e); + Logger.error(e); downloadZipped = false; } } @@ -1148,10 +1148,10 @@ class ReceiveFileDialog extends ReceiveDialog { this.createPreviewElement(files[0]) .then(canPreview => { if (canPreview) { - console.log('the file is able to preview'); + Logger.debug('the file is able to preview'); } else { - console.log('the file is not able to preview'); + Logger.debug('the file is not able to preview'); } }) .catch(r => console.error(r)); @@ -2291,7 +2291,7 @@ class Base64Dialog extends Dialog { this.$pasteBtn.addEventListener('click', _ => this._clickCallback()); } else { - console.log("`navigator.clipboard.readText()` is not available on your browser.\nOn Firefox you can set `dom.events.asyncClipboard.readText` to true under `about:config` for convenience.") + Logger.log("`navigator.clipboard.readText()` is not available on your browser.\nOn Firefox you can set `dom.events.asyncClipboard.readText` to true under `about:config` for convenience.") this.$pasteBtn.setAttribute('hidden', true); this.$fallbackTextarea.setAttribute('placeholder', Localization.getTranslation("dialogs.base64-paste-to-send", null, {type: translateType})); this.$fallbackTextarea.removeAttribute('hidden'); @@ -2323,7 +2323,7 @@ class Base64Dialog extends Dialog { } catch(e) { Events.fire('notify-user', Localization.getTranslation("notifications.clipboard-content-incorrect")); - console.log("Clipboard content is incorrect.") + Logger.warn("Clipboard content is incorrect.") } this.hide(); } @@ -2342,7 +2342,7 @@ class Base64Dialog extends Dialog { } catch (e) { Events.fire('notify-user', Localization.getTranslation("notifications.text-content-incorrect")); - console.log("Text content incorrect."); + Logger.warn("Text content incorrect."); } this.hide(); @@ -2357,7 +2357,7 @@ class Base64Dialog extends Dialog { } catch (e) { Events.fire('notify-user', Localization.getTranslation("notifications.file-content-incorrect")); - console.log("File content incorrect."); + Logger.warn("File content incorrect."); } this.hide(); @@ -2380,10 +2380,11 @@ class AboutUI { this.$blueskyBtn = $('bluesky-btn'); this.$customBtn = $('custom-btn'); this.$privacypolicyBtn = $('privacypolicy-btn'); - Events.on('config', e => this._onConfig(e.detail.buttons)); + Events.on('config-loaded', _ => this._onConfigLoaded()); } - async _onConfig(btnConfig) { + async _onConfigLoaded() { + const btnConfig = window._config.buttons await this._evaluateBtnConfig(this.$donationBtn, btnConfig.donation_button); await this._evaluateBtnConfig(this.$twitterBtn, btnConfig.twitter_button); await this._evaluateBtnConfig(this.$mastodonBtn, btnConfig.mastodon_button); @@ -2674,7 +2675,7 @@ class WebFileHandlersUI { if (!"launchQueue" in window) return; launchQueue.setConsumer(async launchParams => { - console.log("Launched with: ", launchParams); + Logger.log("Launched with: ", launchParams); if (!launchParams.files.length) return; diff --git a/public/scripts/util.js b/public/scripts/util.js index 16c03c3..7a1a549 100644 --- a/public/scripts/util.js +++ b/public/scripts/util.js @@ -539,7 +539,7 @@ function getThumbnailAsDataUrl(file, width = undefined, height = undefined, qual let dataUrl = canvas.toDataURL("image/jpeg", quality); resolve(dataUrl); } catch (e) { - console.error(e); + Logger.error(e); reject(new Error(`Could not create an image thumbnail from type ${file.type}`)); } })