POF for retrying extension
This commit is contained in:
96
scripts/content.js
Normal file
96
scripts/content.js
Normal file
@@ -0,0 +1,96 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user