From 30438a68e8c39ba48eff0bacb1e93ce6da125baa Mon Sep 17 00:00:00 2001 From: Maks Snegov Date: Wed, 24 Apr 2024 15:12:19 -0700 Subject: [PATCH] Support multiple consulates --- popup/popup.html | 18 +++++++++++----- popup/popup.js | 53 ++++++++++++++++++++++++++++++++++++++++++---- scripts/content.js | 5 ++--- 3 files changed, 64 insertions(+), 12 deletions(-) diff --git a/popup/popup.html b/popup/popup.html index fdbd456..c89ff12 100644 --- a/popup/popup.html +++ b/popup/popup.html @@ -9,19 +9,24 @@
+

not-a-rescheduler

+ +
-
+
+ +
@@ -40,6 +45,8 @@ Saved!
+ +
@@ -64,14 +71,15 @@
+ +
-
- - -
+ Consulates:
+
+
Current appointment: somewhere, some time diff --git a/popup/popup.js b/popup/popup.js index f9affb6..cc79640 100644 --- a/popup/popup.js +++ b/popup/popup.js @@ -15,9 +15,9 @@ document.getElementById("currApptDate").innerText = currentAppt["date"]; document.getElementById("deltaAppt").value = items["__deltaAppt"] || 1; document.getElementById("deltaNow").value = items["__deltaNow"] || 1; - document.getElementById("autobook").checked = items["__autobook"] || false; }); + // update frequency value chrome.storage.onChanged.addListener((changes, area) => { if (changes.__frequency) document.getElementById("frequency_info").innerText = changes.__frequency.newValue; @@ -27,9 +27,6 @@ document.getElementById("activate").addEventListener("change", async e => { await chrome.storage.local.set({ "__activate": e.target.checked }); }); - document.getElementById("autobook").addEventListener("change", async e => { - await chrome.storage.local.set({ "__autobook": e.target.checked }); - }); // credentials let usernameField = document.getElementById("username"); @@ -82,6 +79,54 @@ chrome.storage.local.set({ __deltaNow: this.value }); }); + // consulates + await chrome.storage.local.get(['__consulates']).then((result) => { + let consulates = result['__consulates']; + + let html = ''; + for (let c in consulates) { + console.log(c, consulates[c]) + let cSelected = consulates[c].isSelected === true ? "checked" : ""; + let cAutobook = consulates[c].autobook === true ? "checked" : ""; + let cName = c.replace(/ /g, ' ') + let cId = consulates[c].id; + html += ` +
+
+
+ +
+
+
${cName}
+
${consulates[c].bestDate || "-"}
+
${consulates[c].currentDate || "-"}
+
+
+ + +
+
+
+ `; + } + if (html === '') { + html = "No consulates found."; + } + document.getElementById('consulatesConfig').innerHTML = html; + + for (let c in consulates) { + let cId = consulates[c].id; + document.getElementById(`isSelected-${cId}`).addEventListener("change", async e => { + consulates[c].isSelected = e.target.checked; + await chrome.storage.local.set({ "__consulates": consulates }); + }); + document.getElementById(`autobook-${cId}`).addEventListener("change", async e => { + consulates[c].autobook = e.target.checked; + await chrome.storage.local.set({ "__consulates": consulates }); + }); + } + }); + // reset button document.getElementById("resetButton").addEventListener("click", async () => { if (confirm("Are you sure you want to reset?")) { diff --git a/scripts/content.js b/scripts/content.js index 50fafcd..87fd2c4 100644 --- a/scripts/content.js +++ b/scripts/content.js @@ -22,7 +22,6 @@ let config = { consulates: null, deltaAppt: null, deltaNow: null, - autobook: null, }; let isRunning = false; let msg = ""; @@ -128,6 +127,7 @@ async function getConsulates() { "bestDate": null, "currentDate": null, "nextCheckAt": getFutureDate(0, config.frequency * MINUTE), + "autobook": false, }; } return consulatesDict; @@ -187,7 +187,6 @@ async function runner() { config.consulates = result['__consulates'] || null; config.deltaAppt = result['__deltaAppt'] || 1; config.deltaNow = result['__deltaNow'] || 1; - config.autobook = result['__autobook'] || false; if (prev_config.activate === null) { console.log('Reading config: ' + JSON.stringify(config)); @@ -479,7 +478,7 @@ async function runner() { console.log(msg); await sendNotification(msg); - if (config.autobook) { + if (config.consulates[consulate].autobook) { await delay(PAGE_WAIT_TIME); console.log('Auto booking'); document.querySelector(".reveal-overlay:last-child [data-reveal] .button.alert").click();