72 lines
2.7 KiB
JavaScript
72 lines
2.7 KiB
JavaScript
const browserAPI = typeof browser !== 'undefined' ? browser : chrome;
|
|
|
|
function saveOptions(event) {
|
|
event.preventDefault();
|
|
const serverUrl = document.querySelector("#server-url").value;
|
|
const password = document.querySelector("#password").value;
|
|
|
|
if (serverUrl.trim() === "" || password.trim() === "") {
|
|
alert("URL сервера и пароль не могут быть пустыми!");
|
|
return;
|
|
}
|
|
|
|
if (typeof browser !== 'undefined') {
|
|
browserAPI.storage.sync.set({ serverUrl, password })
|
|
.then(() => {
|
|
showStatus("Настройки сохранены!");
|
|
})
|
|
.catch((error) => {
|
|
console.error("Ошибка сохранения настроек:", error);
|
|
showStatus("Ошибка сохранения!", true);
|
|
});
|
|
} else {
|
|
browserAPI.storage.sync.set({ serverUrl, password }, () => {
|
|
if (chrome.runtime.lastError) {
|
|
console.error("Ошибка сохранения настроек:", chrome.runtime.lastError);
|
|
showStatus("Ошибка сохранения!", true);
|
|
} else {
|
|
showStatus("Настройки сохранены!");
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function restoreOptions() {
|
|
if (typeof browser !== 'undefined') {
|
|
browserAPI.storage.sync.get(["serverUrl", "password"])
|
|
.then((result) => {
|
|
updateFormFields(result);
|
|
})
|
|
.catch((error) => {
|
|
console.error("Ошибка загрузки настроек:", error);
|
|
updateFormFields({});
|
|
});
|
|
} else {
|
|
browserAPI.storage.sync.get(["serverUrl", "password"], (result) => {
|
|
if (chrome.runtime.lastError) {
|
|
console.error("Ошибка загрузки настроек:", chrome.runtime.lastError);
|
|
updateFormFields({});
|
|
} else {
|
|
updateFormFields(result);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function updateFormFields(result) {
|
|
document.querySelector("#server-url").value = result.serverUrl || "http://localhost:5000/submit";
|
|
document.querySelector("#password").value = result.password || "";
|
|
}
|
|
|
|
function showStatus(message, isError = false) {
|
|
const status = document.querySelector("#status");
|
|
status.textContent = message;
|
|
status.style.color = isError ? "red" : "green";
|
|
setTimeout(() => {
|
|
status.textContent = "";
|
|
status.style.color = "";
|
|
}, 2000);
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", restoreOptions);
|
|
document.querySelector("#settings-form").addEventListener("submit", saveOptions); |