notif-visa-ext/scripts/content.js

97 lines
2.7 KiB
JavaScript

function log_ts(message) {
console.log(new Date().toISOString() + " " + message);
}
async function checkDates() {
log_ts('checkDates start');
config.countdown = config.frequency * minute;
await chrome.storage.local.set({ "__countdown": config.countdown });
log_ts('checkDates done');
}
async function runner() {
// log_ts('runner start');
let prev_config = Object.assign({}, config);
let result = await new Promise(resolve => chrome.storage.local.get(null, resolve));
config.activate = result['__activate'] || false;
config.username = result['__username'] || "";
config.password = result['__password'] || "";
config.frequency = result['__frequency'] || 1;
config.countdown = result['__countdown'] || 0;
if (prev_config.activate === null) {
log_ts('Reading config: ' + JSON.stringify(config));
return;
}
let configChanged = false;
for (let key in config) {
if (config.hasOwnProperty(key) && config[key] !== prev_config[key]) {
log_ts(`Config change: ${key}, ${prev_config[key]} => ${config[key]}`);
configChanged = true;
// reduce countdown if frequency is reduced
if (key === 'frequency') {
let max_countdown = config[key] * minute;
if (config.countdown > max_countdown) {
config.countdown = max_countdown;
await chrome.storage.local.set({ "__countdown": config.countdown });
}
}
}
}
if (configChanged) {
// print whole config
log_ts(JSON.stringify(config));
}
if (config.activate && !prev_config.activate) {
log_ts('Activating extension');
config.countdown = 5;
}
if (!config.activate) {
// reset countdown when deactivating the extension
if (prev_config.activate) {
log_ts('Deactivating extension');
config.countdown = 0;
await chrome.storage.local.set({ "__countdown": config.countdown });
}
return;
}
if (config.username === "" || config.password === "") {
log_ts('Username or password is empty');
return;
}
if (config.frequency <= 0) {
log_ts('Frequency is 0');
return;
}
if (config.countdown > 0) {
config.countdown -= 1;
log_ts(`Countdown: ${config.countdown}`);
await chrome.storage.local.set({ "__countdown": config.countdown });
return;
}
checkDates();
// log_ts('runner done');
}
let config = {
activate: null,
username: null,
password: null,
frequency: null,
countdown: null,
};
let minute = 60;
setInterval(runner, 1000);