Separate configuration and context for consulates
This commit is contained in:
116
popup/popup.js
116
popup/popup.js
@@ -14,34 +14,33 @@ function smoothTextChange(element, newText) {
|
||||
document.getElementById("version").innerText = `v${$version}`;
|
||||
|
||||
await chrome.storage.local.get().then(items => {
|
||||
document.getElementById("activate").checked = items["__activate"] || false;
|
||||
document.getElementById("username").value = items["__username"] || "";
|
||||
document.getElementById("password").value = items["__password"] || "";
|
||||
document.getElementById("frequency").value = items["__frequency"] || 1;
|
||||
document.getElementById("frequency_info").innerText = items["__frequency"] || 1;
|
||||
document.getElementById("status").innerText = items["__status"] || "unknown";
|
||||
let currentAppt = items["__currentAppt"] || {"consulate": "somewhere", "date": "some time"};
|
||||
document.getElementById("activate").checked = items["cfg_activate"] || false;
|
||||
document.getElementById("username").value = items["cfg_username"] || "";
|
||||
document.getElementById("password").value = items["cfg_password"] || "";
|
||||
document.getElementById("frequency").value = items["cfg_frequency"] || 1;
|
||||
document.getElementById("frequency_info").innerText = items["cfg_frequency"] || 1;
|
||||
document.getElementById("status").innerText = items["ctx_statusMsg"] || "unknown";
|
||||
let currentAppt = items["ctx_currentAppt"] || {"consulate": "somewhere", "date": "some time"};
|
||||
document.getElementById("currApptConsulate").innerText = currentAppt["consulate"];
|
||||
document.getElementById("currApptDate").innerText = currentAppt["date"];
|
||||
document.getElementById("deltaAppt").value = items["__deltaAppt"] || 1;
|
||||
document.getElementById("deltaNow").value = items["__deltaNow"] || 1;
|
||||
document.getElementById("deltaAppt").value = items["cfg_deltaAppt"] || 1;
|
||||
document.getElementById("deltaNow").value = items["cfg_deltaNow"] || 1;
|
||||
});
|
||||
|
||||
// update frequency value
|
||||
chrome.storage.onChanged.addListener((changes, area) => {
|
||||
if (changes.__frequency)
|
||||
document.getElementById("frequency_info").innerText = changes.__frequency.newValue;
|
||||
if (changes.cfg_frequency)
|
||||
document.getElementById("frequency_info").innerText = changes.cfg_frequency.newValue;
|
||||
});
|
||||
// update status
|
||||
chrome.storage.onChanged.addListener((changes, area) => {
|
||||
if (changes.__status)
|
||||
// document.getElementById("status").innerText = changes.__status.newValue;
|
||||
smoothTextChange(document.getElementById("status"), changes.__status.newValue);
|
||||
if (changes.ctx_statusMsg)
|
||||
smoothTextChange(document.getElementById("status"), changes.ctx_statusMsg.newValue);
|
||||
});
|
||||
|
||||
// activate checkbox
|
||||
document.getElementById("activate").addEventListener("change", async e => {
|
||||
await chrome.storage.local.set({ "__activate": e.target.checked });
|
||||
await chrome.storage.local.set({ "cfg_activate": e.target.checked });
|
||||
});
|
||||
|
||||
// credentials
|
||||
@@ -53,8 +52,8 @@ function smoothTextChange(element, newText) {
|
||||
|
||||
async function save_credentials() {
|
||||
await chrome.storage.local.set({
|
||||
"__username": usernameField.value,
|
||||
"__password": passwordField.value
|
||||
"cfg_username": usernameField.value,
|
||||
"cfg_password": passwordField.value
|
||||
});
|
||||
saveStatusElement.classList.add("show");
|
||||
setTimeout(() => {
|
||||
@@ -74,7 +73,7 @@ function smoothTextChange(element, newText) {
|
||||
});
|
||||
saveCredsButton.addEventListener("click", async () => {
|
||||
await save_credentials();
|
||||
await chrome.storage.local.set({ "__signinAttempts": 0 });
|
||||
await chrome.storage.local.set({ "ctx_signinAttempts": 0 });
|
||||
});
|
||||
|
||||
showPasswordButton.addEventListener("mousedown", function() {
|
||||
@@ -86,18 +85,19 @@ function smoothTextChange(element, newText) {
|
||||
|
||||
// range sliders
|
||||
document.getElementById("frequency").addEventListener("input", function() {
|
||||
chrome.storage.local.set({ __frequency: this.value });
|
||||
chrome.storage.local.set({ cfg_frequency: this.value });
|
||||
});
|
||||
document.getElementById("deltaAppt").addEventListener("input", function() {
|
||||
chrome.storage.local.set({ __deltaAppt: this.value });
|
||||
chrome.storage.local.set({ cfg_deltaAppt: this.value });
|
||||
});
|
||||
document.getElementById("deltaNow").addEventListener("change", function() {
|
||||
chrome.storage.local.set({ __deltaNow: this.value });
|
||||
chrome.storage.local.set({ cfg_deltaNow: this.value });
|
||||
});
|
||||
|
||||
// consulates
|
||||
await chrome.storage.local.get(['__consulates']).then((result) => {
|
||||
let consulates = result['__consulates'];
|
||||
await chrome.storage.local.get(['cfg_consulates', 'ctx_consulates']).then((result) => {
|
||||
let consCfg = result['cfg_consulates'];
|
||||
let consCtx = result['ctx_consulates'];
|
||||
|
||||
let html = `
|
||||
<table class="table table-striped">
|
||||
@@ -112,10 +112,10 @@ function smoothTextChange(element, newText) {
|
||||
</thead>
|
||||
<tbody>
|
||||
`
|
||||
for (let c in consulates) {
|
||||
let cSelected = consulates[c].isSelected === true ? "checked" : "";
|
||||
let cAutobook = consulates[c].autobook === true ? "checked" : "";
|
||||
let cId = consulates[c].id;
|
||||
for (let c in consCtx) {
|
||||
let cSelected = consCfg[c]?.isSelected === true ? "checked" : "";
|
||||
let cAutoBook = consCfg[c]?.autoBook === true ? "checked" : "";
|
||||
let cId = consCtx[c].id;
|
||||
html += `
|
||||
<tr>
|
||||
<td>
|
||||
@@ -124,12 +124,12 @@ function smoothTextChange(element, newText) {
|
||||
</div>
|
||||
</td>
|
||||
<td style="white-space: nowrap;">${c}</td>
|
||||
<td style="white-space: nowrap;"><span class="smooth-text" id="currentDate-${cId}">${consulates[c].currentDate || "-"}</span></td>
|
||||
<td style="white-space: nowrap;"><span class="smooth-text" id="bestDate-${cId}">${consulates[c].bestDate || "-"}</span></td>
|
||||
<td style="white-space: nowrap;"><span class="smooth-text" id="currentDate-${cId}">${consCtx[c].currentDate || "-"}</span></td>
|
||||
<td style="white-space: nowrap;"><span class="smooth-text" id="bestDate-${cId}">${consCtx[c].bestDate || "-"}</span></td>
|
||||
<td>
|
||||
<div class="form-check form-switch" style="text-align: left;">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="autobook-${cId}" ${cAutobook}>
|
||||
<!--<label class="form-check-label" for="autobook-${cId}">Autobook</label>-->
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="autoBook-${cId}" ${cAutoBook}>
|
||||
<!--<label class="form-check-label" for="autoBook-${cId}">Autobook</label>-->
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -138,30 +138,35 @@ function smoothTextChange(element, newText) {
|
||||
html += `</tbody></table>`;
|
||||
document.getElementById('consulatesConfig').innerHTML = html;
|
||||
|
||||
for (let c in consulates) {
|
||||
let cId = consulates[c].id;
|
||||
for (let c in consCtx) {
|
||||
let cId = consCtx[c].id;
|
||||
document.getElementById(`isSelected-${cId}`).addEventListener("change", async e => {
|
||||
consulates[c].isSelected = e.target.checked;
|
||||
await chrome.storage.local.set({ "__consulates": consulates });
|
||||
consCfg[c].isSelected = e.target.checked;
|
||||
await chrome.storage.local.set({ "cfg_consulates": consCfg });
|
||||
});
|
||||
document.getElementById(`autobook-${cId}`).addEventListener("change", async e => {
|
||||
consulates[c].autobook = e.target.checked;
|
||||
await chrome.storage.local.set({ "__consulates": consulates });
|
||||
document.getElementById(`autoBook-${cId}`).addEventListener("change", async e => {
|
||||
consCfg[c].autoBook = e.target.checked;
|
||||
await chrome.storage.local.set({ "cfg_consulates": consCfg });
|
||||
});
|
||||
// update current & best dates
|
||||
chrome.storage.onChanged.addListener((changes, area) => {
|
||||
if (changes.__consulates && changes.__consulates.newValue[c].currentDate) {
|
||||
let el = document.getElementById(`currentDate-${cId}`);
|
||||
if (el.innerText != changes.__consulates.newValue[c].currentDate)
|
||||
smoothTextChange(document.getElementById(`currentDate-${cId}`), changes.__consulates.newValue[c].currentDate);
|
||||
if (area === 'local' && changes.ctx_consulates) {
|
||||
const newConsulates = changes.ctx_consulates.newValue;
|
||||
|
||||
for (let c in newConsulates) {
|
||||
if (newConsulates[c].currentDate) {
|
||||
let el = document.getElementById(`currentDate-${c}`);
|
||||
if (el && el.innerText != newConsulates[c].currentDate)
|
||||
smoothTextChange(el, newConsulates[c].currentDate);
|
||||
}
|
||||
if (newConsulates[c].bestDate) {
|
||||
let el = document.getElementById(`bestDate-${c}`);
|
||||
if (el && el.innerText != newConsulates[c].bestDate)
|
||||
smoothTextChange(el, newConsulates[c].bestDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changes.__consulates && changes.__consulates.newValue[c].bestDate) {
|
||||
let el = document.getElementById(`bestDate-${cId}`);
|
||||
if (el.innerText != changes.__consulates.newValue[c].bestDate)
|
||||
smoothTextChange(document.getElementById(`bestDate-${cId}`), changes.__consulates.newValue[c].bestDate);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -172,13 +177,12 @@ function smoothTextChange(element, newText) {
|
||||
chrome.storage.local.clear();
|
||||
// keep user parameters
|
||||
chrome.storage.local.set({
|
||||
"__activate": items["__activate"] || false,
|
||||
"__username": items["__username"] || "",
|
||||
"__password": items["__password"] || "",
|
||||
"__frequency": items["__frequency"] || 1,
|
||||
"__deltaAppt": items["__deltaAppt"] || 1,
|
||||
"__deltaNow": items["__deltaNow"] || 1,
|
||||
"__autobook": items["__autobook"] || false,
|
||||
"cfg_activate": items["cfg_activate"] || false,
|
||||
"cfg_username": items["cfg_username"] || "",
|
||||
"cfg_password": items["cfg_password"] || "",
|
||||
"cfg_frequency": items["cfg_frequency"] || 1,
|
||||
"cfg_deltaAppt": items["cfg_deltaAppt"] || 1,
|
||||
"cfg_deltaNow": items["cfg_deltaNow"] || 1,
|
||||
});
|
||||
});
|
||||
document.getElementById("status").innerText = "unknown";
|
||||
|
||||
Reference in New Issue
Block a user