Improve status messaging

This commit is contained in:
Maks Snegov 2024-04-22 23:30:55 -07:00
parent 9f5fa888ef
commit c8e0028cb9

View File

@ -23,6 +23,7 @@ let config = {
autobook: null,
};
let isRunning = false;
let msg = "";
async function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
@ -250,8 +251,9 @@ async function runner() {
if (isLoggedOutPage()) {
if (!await goToSignInPage()) {
console.log('Failed to go to sign in page');
await chrome.storage.local.set({ "__status": "failed to go to sign in page" });
msg = 'Failed to go to sign in page';
console.log(msg);
await chrome.storage.local.set({ "__status": msg });
isRunning = false;
return;
};
@ -267,14 +269,16 @@ async function runner() {
}
// Sign in
console.log('Signing in attempt: ' + config.signinAttempts)
await chrome.storage.local.set({ "__status": "signing in #" + config.signinAttempts });
msg = 'Signing in attempt: ' + config.signinAttempts;
console.log(msg)
await chrome.storage.local.set({ "__status": msg });
let signedIn = await enterCredentials();
config.signinAttempts += 1;
await chrome.storage.local.set({ "__signinAttempts": config.signinAttempts });
if (!signedIn) {
console.log('Sign in failed');
await chrome.storage.local.set({ "__status": "sign in failed" });
msg = 'Failed to sign in';
console.log(msg);
await chrome.storage.local.set({ "__status": msg });
isRunning = false;
return;
};
@ -294,8 +298,9 @@ async function runner() {
console.log(`Appointment ID: ${config.apptId}`);
await chrome.storage.local.set({ "__apptId": config.apptId });
} else {
console.log('No appointments found');
await chrome.storage.local.set({ "__status": "no appointment found" });
msg = 'No appointments found';
console.log(msg);
await chrome.storage.local.set({ "__status": msg });
isRunning = false;
return;
}
@ -304,8 +309,9 @@ async function runner() {
// get current appointment date
let apptInfo = document.querySelector("p.consular-appt [href*='" + config.apptId + "']").parentNode.parentNode.parentNode
if (!apptInfo.querySelector("h4").innerText.match(/Attend Appointment/)) {
console.log('Appointment not available');
await chrome.storage.local.set({ "__status": "appointment not available" });
msg = 'Appointment not available';
console.log(msg);
await chrome.storage.local.set({ "__status": msg });
isRunning = false;
return;
}
@ -333,8 +339,9 @@ async function runner() {
}
if (!document.getElementById("consulate_date_time")) {
console.log('No available appointments');
await chrome.storage.local.set({ "__status": "no available appointments" });
msg = 'No available appointments';
console.log(msg);
await chrome.storage.local.set({ "__status": msg });
isRunning = false;
return;
};
@ -354,8 +361,9 @@ async function runner() {
// for each selected consulate check available dates
let selectedConsulates = Object.keys(config.consulates).filter(c => config.consulates[c].isSelected);
if (selectedConsulates.length == 0) {
console.log('No selected consulates found');
await chrome.storage.local.set({ "__status": "no selected consulates" });
msg = 'No selected consulates found';
console.log(msg);
await chrome.storage.local.set({ "__status": msg });
isRunning = false;
return;
}
@ -367,16 +375,18 @@ async function runner() {
await chrome.storage.local.set({ "__countdown": config.countdown });
if (!availDates) {
console.log('Failed to fetch available dates in ' + consulate);
await chrome.storage.local.set({ "__status": "no dates in " + consulate });
msg = `Failed to fetch available dates in ${consulate}`;
console.log(msg);
await chrome.storage.local.set({ "__status": msg });
isRunning = false;
return;
}
// if empty list, either we're banned or non operational hours or dead consulate
if (availDates.length == 0) {
console.log(`No available dates in ${consulate}, probably banned`);
await chrome.storage.local.set({ "__status": "no dates in " + consulate });
msg = `No available dates in ${consulate}, probably banned`;
console.log(msg);
await chrome.storage.local.set({ "__status": msg });
config.countdown = SOFT_BAN_COUNTDOWN;
await chrome.storage.local.set({ "__countdown": config.countdown });
isRunning = false;
@ -390,8 +400,9 @@ async function runner() {
// filter dates with our requests
let filteredDates = await filterDates(availDates, config.apptDate, config.deltaAppt, config.deltaNow);
if (!filteredDates.length) {
console.log('Nothing interesting found in ' + consulate);
await chrome.storage.local.set({ "__status": `Nothing in ${consulate}, best date ${availDates[0]}`});
msg = `No better dates in ${consulate}, currently available ${availDates[0]}`;
console.log(msg);
await chrome.storage.local.set({ "__status": msg});
isRunning = false;
return;
}
@ -407,14 +418,16 @@ async function runner() {
let availTimes = await getAvailableTimes(config.consulates[consulate].id, chosenDate);
if (!availTimes) {
console.log(`Failed to fetch available timeslots in ${consulate} at ${chosenDate}`);
await chrome.storage.local.set({ "__status": `failed to fetch timeslots in ${consulate} at ${chosenDate}`});
msg = `Failed to fetch available timeslots in ${consulate} at ${chosenDate}`;
console.log(msg);
await chrome.storage.local.set({ "__status": msg});
isRunning = false;
return;
}
if (availTimes.length == 0) {
console.log(`No timeslots in ${consulate} at ${chosenDate}`);
await chrome.storage.local.set({ "__status": `no timeslots in ${consulate} at ${chosenDate}`});
msg = `No timeslots in ${consulate} at ${chosenDate}`;
console.log(msg);
await chrome.storage.local.set({ "__status": msg});
isRunning = false;
return;
}