mirror of
https://github.com/schlagmichdoch/PairDrop.git
synced 2025-04-21 15:26:17 -04:00
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
)
This commit is contained in:
parent
b61de4eb87
commit
6de97e7ff1
8 changed files with 144 additions and 114 deletions
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
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.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 (<v1.7.0) to 256 chars (v1.7.0+)
|
||||
console.log('RoomSecret is regenerated to increase security')
|
||||
Logger.debug('RoomSecret is regenerated to increase security')
|
||||
Events.fire('regenerate-room-secret', this._getPairSecret());
|
||||
}
|
||||
}
|
||||
|
@ -467,7 +473,7 @@ class Peer {
|
|||
try {
|
||||
dataUrl = await getThumbnailAsDataUrl(files[0], 400, null, 0.9);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
Logger.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -525,7 +531,7 @@ class Peer {
|
|||
this._sendTransferAbortion();
|
||||
return;
|
||||
}
|
||||
console.log("Resend requested from offset:", offset)
|
||||
Logger.debug("Resend requested from offset:", offset)
|
||||
this._chunker._resendFromOffset(offset);
|
||||
}
|
||||
|
||||
|
@ -570,7 +576,7 @@ class Peer {
|
|||
this._onDisplayNameChanged(message);
|
||||
break;
|
||||
default:
|
||||
console.warn('RTC: Unknown message type:', message.type);
|
||||
Logger.warn('RTC: Unknown message type:', message.type);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -681,7 +687,7 @@ class Peer {
|
|||
let size = Math.round(10 * fileBlob.size / 1000000) / 10;
|
||||
let speed = Math.round(100 * fileBlob.size / 1000000 / duration) / 100;
|
||||
|
||||
console.log(`File received.\n\nSize: ${size} MB\tDuration: ${duration} s\tSpeed: ${speed} MB/s`);
|
||||
Logger.log(`File received.\n\nSize: ${size} MB\tDuration: ${duration} s\tSpeed: ${speed} MB/s`);
|
||||
|
||||
this._sendMessage({type: 'file-transfer-complete', success: true, size: size, duration: duration, speed: speed});
|
||||
|
||||
|
@ -715,12 +721,12 @@ class Peer {
|
|||
this._chunker = null;
|
||||
|
||||
if (!message.success) {
|
||||
console.warn('File could not be sent');
|
||||
Logger.warn('File could not be sent');
|
||||
Events.fire('set-progress', {peerId: this._peerId, progress: 0, status: null});
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`File sent.\n\nSize: ${message.size} MB\tDuration: ${message.duration} s\tSpeed: ${message.speed} MB/s`);
|
||||
Logger.log(`File sent.\n\nSize: ${message.size} MB\tDuration: ${message.duration} s\tSpeed: ${message.speed} MB/s`);
|
||||
|
||||
if (this._filesQueue.length) {
|
||||
this._dequeueFile();
|
||||
|
@ -776,7 +782,7 @@ class Peer {
|
|||
PersistentStorage
|
||||
.updateRoomSecretDisplayName(roomSecret, message.displayName)
|
||||
.then(roomSecretEntry => {
|
||||
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]);
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(() => {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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}`));
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue