97 lines
2.7 KiB
JavaScript
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);
|