Update frequency config
- Set values from 0.5 to 10 with 0.5 step - Add random increment equal to 10% of frequency parameter
This commit is contained in:
parent
4a506de6fe
commit
d19b9ced8f
@ -55,7 +55,7 @@
|
|||||||
<label for="frequency">Check frequency<br>(every <span id="frequency_info">N</span> minutes)</label>
|
<label for="frequency">Check frequency<br>(every <span id="frequency_info">N</span> minutes)</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<input type="range" id="frequency" name="frequency" min="1" max="15" step="1">
|
<input type="range" id="frequency" name="frequency" min="0.5" max="10" step="0.5">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|||||||
@ -5,6 +5,7 @@ const pathnameRegex = /^\/\w{2}-\w{2}\/n?iv/;
|
|||||||
const MAX_SIGNIN_ATTEMPTS = 1;
|
const MAX_SIGNIN_ATTEMPTS = 1;
|
||||||
const PAGE_WAIT_TIME = 3792;
|
const PAGE_WAIT_TIME = 3792;
|
||||||
const MINUTE = 60;
|
const MINUTE = 60;
|
||||||
|
const RANDOM_JITTER = 0.1;
|
||||||
const SOFT_BAN_TIMEOUT = 27;
|
const SOFT_BAN_TIMEOUT = 27;
|
||||||
const NOTIF_CHANNEL = "snegov_test"
|
const NOTIF_CHANNEL = "snegov_test"
|
||||||
|
|
||||||
@ -44,11 +45,15 @@ function getRandomInt(max) {
|
|||||||
return Math.floor(Math.random() * Math.floor(max));
|
return Math.floor(Math.random() * Math.floor(max));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getJitter(frequency) {
|
||||||
|
return frequency * MINUTE * RANDOM_JITTER;
|
||||||
|
}
|
||||||
|
|
||||||
function getFutureDate(minutes, maxRandomSeconds = 0) {
|
function getFutureDate(minutes, maxRandomSeconds = 0) {
|
||||||
// return date some amount of minutes in future plus random amount of seconds
|
// return date some amount of minutes in future plus random amount of seconds
|
||||||
let futureDate = new Date();
|
let futureDate = new Date();
|
||||||
futureDate.setMinutes(futureDate.getMinutes() + minutes);
|
futureDate.setSeconds(futureDate.getSeconds() + minutes * MINUTE + getRandomInt(maxRandomSeconds));
|
||||||
futureDate.setSeconds(futureDate.getSeconds() + getRandomInt(maxRandomSeconds));
|
|
||||||
return futureDate.toISOString();
|
return futureDate.toISOString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,7 +200,7 @@ async function getConsulates() {
|
|||||||
"isSelected": option.selected,
|
"isSelected": option.selected,
|
||||||
"bestDate": null,
|
"bestDate": null,
|
||||||
"currentDate": null,
|
"currentDate": null,
|
||||||
"nextCheckAt": getFutureDate(0, config.frequency * MINUTE),
|
"nextCheckAt": getFutureDate(0, getJitter(config.frequency)),
|
||||||
"autobook": false,
|
"autobook": false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -247,7 +252,7 @@ async function runner() {
|
|||||||
config.activate = result['__activate'] || false;
|
config.activate = result['__activate'] || false;
|
||||||
config.username = result['__username'] || "";
|
config.username = result['__username'] || "";
|
||||||
config.password = result['__password'] || "";
|
config.password = result['__password'] || "";
|
||||||
config.frequency = parseInt(result['__frequency'] || 1);
|
config.frequency = parseFloat(result['__frequency'] || 1);
|
||||||
config.signinAttempts = result['__signinAttempts'] || 0;
|
config.signinAttempts = result['__signinAttempts'] || 0;
|
||||||
config.apptId = result['__apptId'] || null;
|
config.apptId = result['__apptId'] || null;
|
||||||
config.currentAppt = result['__currentAppt'] || { consulate: null, date: null };
|
config.currentAppt = result['__currentAppt'] || { consulate: null, date: null };
|
||||||
@ -278,7 +283,7 @@ async function runner() {
|
|||||||
if (key === 'frequency') {
|
if (key === 'frequency') {
|
||||||
let wasChanged = false;
|
let wasChanged = false;
|
||||||
for (let consulate in config.consulates) {
|
for (let consulate in config.consulates) {
|
||||||
let newNextCheckAt = getFutureDate(config.frequency, 10);
|
let newNextCheckAt = getFutureDate(config.frequency, getJitter(config.frequency));
|
||||||
if (config.consulates[consulate].nextCheckAt > newNextCheckAt) {
|
if (config.consulates[consulate].nextCheckAt > newNextCheckAt) {
|
||||||
config.consulates[consulate].nextCheckAt = newNextCheckAt;
|
config.consulates[consulate].nextCheckAt = newNextCheckAt;
|
||||||
wasChanged = true;
|
wasChanged = true;
|
||||||
@ -508,7 +513,7 @@ async function runner() {
|
|||||||
console.log(msg);
|
console.log(msg);
|
||||||
await chrome.storage.local.set({ "__status": msg });
|
await chrome.storage.local.set({ "__status": msg });
|
||||||
let availDates = await getAvailableDates(config.consulates[consulate].id);
|
let availDates = await getAvailableDates(config.consulates[consulate].id);
|
||||||
config.consulates[consulate].nextCheckAt = getFutureDate(config.frequency, 10);
|
config.consulates[consulate].nextCheckAt = getFutureDate(config.frequency, getJitter(config.frequency));
|
||||||
|
|
||||||
if (!availDates) {
|
if (!availDates) {
|
||||||
msg = `Failed to fetch available dates in ${consulate}`;
|
msg = `Failed to fetch available dates in ${consulate}`;
|
||||||
@ -530,7 +535,7 @@ async function runner() {
|
|||||||
|
|
||||||
// Only set SOFT_BAN_TIMEOUT if it's not the first 5 minutes of 23pm UTC
|
// Only set SOFT_BAN_TIMEOUT if it's not the first 5 minutes of 23pm UTC
|
||||||
if (!(currentHourUTC === 23 && currentMinuteUTC < 5)) {
|
if (!(currentHourUTC === 23 && currentMinuteUTC < 5)) {
|
||||||
config.consulates[consulate].nextCheckAt = getFutureDate(SOFT_BAN_TIMEOUT, 10);
|
config.consulates[consulate].nextCheckAt = getFutureDate(SOFT_BAN_TIMEOUT, getJitter(config.frequency));
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user