My-extension/options.js

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);