From 363e842b56d988fb9505d06c6ff30606b43681f2 Mon Sep 17 00:00:00 2001 From: Maks Snegov Date: Tue, 23 Apr 2024 01:42:15 -0700 Subject: [PATCH] Add current consulate to popup --- scripts/content.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/scripts/content.js b/scripts/content.js index 7b68ece..6986f64 100644 --- a/scripts/content.js +++ b/scripts/content.js @@ -16,6 +16,7 @@ let config = { countdown: null, apptId: null, apptDate: null, + apptConsulate: null, signinAttempts: null, consulates: null, deltaAppt: null, @@ -168,6 +169,7 @@ async function runner() { config.signinAttempts = result['__signinAttempts'] || 0; config.apptId = result['__apptId'] || null; config.apptDate = result['__apptDate'] || null; + config.apptConsulate = result['__apptConsulate'] || null; config.consulates = result['__consulates'] || null; config.deltaAppt = result['__deltaAppt'] || 1; config.deltaNow = result['__deltaNow'] || 1; @@ -308,24 +310,29 @@ 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/)) { + let apptInfoCard = document.querySelector("p.consular-appt [href*='" + config.apptId + "']").parentNode.parentNode.parentNode + if (!apptInfoCard.querySelector("h4").innerText.match(/Attend Appointment/)) { msg = 'Appointment not available'; console.log(msg); await chrome.storage.local.set({ "__status": msg }); isRunning = false; return; } - let apptDate = new Date(apptInfo.querySelector("p.consular-appt").innerText.match(/\d{1,2} \w+, \d{4}/)[0]); + let apptInfo = apptInfoCard.querySelector("p.consular-appt").innerText; + let apptConsulate = (apptInfo.match(/at (\w+)/) || [])[1]; + let apptDate = new Date(apptInfo.match(/\d{1,2} \w+, \d{4}/)[0]); apptDate = apptDate.toISOString().slice(0, 10); - if (apptDate && apptDate != config.apptDate) { - console.log(`New appointment date: ${apptDate}, old: ${config.apptDate}`); + if (apptDate && apptConsulate + && (apptDate != config.apptDate || apptConsulate != config.apptConsulate)) { + console.log(`New appointment date: ${apptDate} at ${apptConsulate}, old: ${config.apptDate} at ${config.apptConsulate}`); config.apptDate = apptDate; + config.apptConsulate = apptConsulate; await chrome.storage.local.set({ "__apptDate": apptDate }); + await chrome.storage.local.set({ "__apptConsulate": apptConsulate }); } // go to appointment page - let apptLink = apptInfo.querySelector("p.consular-appt [href]").getAttribute("href").replace("/addresses/consulate", "/appointment"); + let apptLink = apptInfoCard.querySelector("p.consular-appt [href]").getAttribute("href").replace("/addresses/consulate", "/appointment"); window.location.href = apptLink; await delay(PAGE_WAIT_TIME); } @@ -481,6 +488,8 @@ async function runner() { await delay(PAGE_WAIT_TIME); config.apptDate = null; await chrome.storage.local.set({"__apptDate": config.apptDate}); + config.apptConsulate = null; + await chrome.storage.local.set({"__apptConsulate": config.apptConsulate}); console.log('Rescheduled successfully'); window.location = window.location.pathname.replace(/schedule.*/g, ""); await delay(PAGE_WAIT_TIME);