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:
@@ -5,6 +5,7 @@ const pathnameRegex = /^\/\w{2}-\w{2}\/n?iv/;
|
||||
const MAX_SIGNIN_ATTEMPTS = 1;
|
||||
const PAGE_WAIT_TIME = 3792;
|
||||
const MINUTE = 60;
|
||||
const RANDOM_JITTER = 0.1;
|
||||
const SOFT_BAN_TIMEOUT = 27;
|
||||
const NOTIF_CHANNEL = "snegov_test"
|
||||
|
||||
@@ -44,11 +45,15 @@ function getRandomInt(max) {
|
||||
return Math.floor(Math.random() * Math.floor(max));
|
||||
}
|
||||
|
||||
|
||||
function getJitter(frequency) {
|
||||
return frequency * MINUTE * RANDOM_JITTER;
|
||||
}
|
||||
|
||||
function getFutureDate(minutes, maxRandomSeconds = 0) {
|
||||
// return date some amount of minutes in future plus random amount of seconds
|
||||
let futureDate = new Date();
|
||||
futureDate.setMinutes(futureDate.getMinutes() + minutes);
|
||||
futureDate.setSeconds(futureDate.getSeconds() + getRandomInt(maxRandomSeconds));
|
||||
futureDate.setSeconds(futureDate.getSeconds() + minutes * MINUTE + getRandomInt(maxRandomSeconds));
|
||||
return futureDate.toISOString();
|
||||
}
|
||||
|
||||
@@ -195,7 +200,7 @@ async function getConsulates() {
|
||||
"isSelected": option.selected,
|
||||
"bestDate": null,
|
||||
"currentDate": null,
|
||||
"nextCheckAt": getFutureDate(0, config.frequency * MINUTE),
|
||||
"nextCheckAt": getFutureDate(0, getJitter(config.frequency)),
|
||||
"autobook": false,
|
||||
};
|
||||
}
|
||||
@@ -247,7 +252,7 @@ async function runner() {
|
||||
config.activate = result['__activate'] || false;
|
||||
config.username = result['__username'] || "";
|
||||
config.password = result['__password'] || "";
|
||||
config.frequency = parseInt(result['__frequency'] || 1);
|
||||
config.frequency = parseFloat(result['__frequency'] || 1);
|
||||
config.signinAttempts = result['__signinAttempts'] || 0;
|
||||
config.apptId = result['__apptId'] || null;
|
||||
config.currentAppt = result['__currentAppt'] || { consulate: null, date: null };
|
||||
@@ -278,7 +283,7 @@ async function runner() {
|
||||
if (key === 'frequency') {
|
||||
let wasChanged = false;
|
||||
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) {
|
||||
config.consulates[consulate].nextCheckAt = newNextCheckAt;
|
||||
wasChanged = true;
|
||||
@@ -508,7 +513,7 @@ async function runner() {
|
||||
console.log(msg);
|
||||
await chrome.storage.local.set({ "__status": msg });
|
||||
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) {
|
||||
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
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user