diff --git a/scripts/content.js b/scripts/content.js index 77e3a38..3a54407 100644 --- a/scripts/content.js +++ b/scripts/content.js @@ -51,6 +51,37 @@ function getFutureDate(minutes, maxRandomSeconds = 0) { return futureDate.toISOString(); } +function hiddenPassword(config) { + return { + ...config, + password: config.password.replace(/./g, "*"), + }; + +} + +function diffObjects(obj1, obj2) { + let diff = {}; + + for (let key in obj1) { + if (typeof obj1[key] === 'object' && obj1[key] !== null && obj2[key]) { + let nestedDiff = diffObjects(obj1[key], obj2[key]); + if (Object.keys(nestedDiff).length > 0) { + diff[key] = nestedDiff; + } + } else if (obj2[key] && obj1[key] !== obj2[key]) { + diff[key] = [obj1[key], obj2[key]]; + } + } + + for (let key in obj2) { + if (obj1[key] === undefined && obj2[key] !== undefined) { + diff[key] = [undefined, obj2[key]]; + } + } + + return diff; +} + function isSignInPage() { return Boolean(window.location.pathname.match(/^\/\w{2}-\w{2}\/n?iv\/users\/sign_in/)); } @@ -189,7 +220,7 @@ async function runner() { config.deltaNow = result['__deltaNow'] || 1; if (prev_config.activate === null) { - console.log('Reading config: ' + JSON.stringify(config)); + console.log('Reading config: ' + JSON.stringify(hiddenPassword(config))); isRunning = false; return; } @@ -197,7 +228,15 @@ async function runner() { for (let key in config) { if (config.hasOwnProperty(key) && !_.isEqual(config[key], prev_config[key])) { - console.log(`Config change: ${key}, ${JSON.stringify(prev_config[key])} => ${JSON.stringify(config[key])}`); + msg = `Config change: ${key}` + if (key === 'password') { + msg += ', ******** => ********'; + } else if (key === 'consulates') { + msg += `, ${JSON.stringify(diffObjects(config[key], prev_config[key]))}`; + } else { + msg += `, ${prev_config[key]} => ${config[key]}`; + } + console.log(msg); // reduce wait times for consulates if frequency is increased if (key === 'frequency') { @@ -210,6 +249,7 @@ async function runner() { console.log(`Reducing wait time for ${consulate} from ${config.consulates[consulate].nextCheckAt} to ${newNextCheckAt}`); } } + // TODO maybe causes additional requests if (wasChanged) { await chrome.storage.local.set({ "__consulates": config.consulates }); } @@ -421,7 +461,11 @@ async function runner() { continue; } - console.log(`Available dates for ${consulate}: ${availDates}`); + msg = `Available dates for ${consulate}: ${availDates.slice(0, 5)}`; + if (availDates.length > 5) { + msg += ` and ${availDates.length - 10} more`; + } + console.log(msg); config.consulates[consulate].currentDate = availDates[0]; if (!config.consulates[consulate].bestDate || availDates[0] < config.consulates[consulate].bestDate) {