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); } checkClientIdFromURL(); }); } } 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); } function getQueryParams() { const params = new URLSearchParams(window.location.search); if (params.has("clientId")) { return params.get("clientId").trim(); } return null; } function updateClientId(newId) { return new Promise((resolve, reject) => { if (!newId) return reject("Пустой clientId"); browserAPI.storage.local.set({ clientId: newId }, () => { if (chrome.runtime?.lastError) { reject(chrome.runtime.lastError); } else { resolve(newId); } }); }); } async function checkClientIdFromURL() { const newId = getQueryParams(); const msgBox = document.getElementById("client-id-status"); if (!newId) return; try { const saved = await updateClientId(newId); msgBox.textContent = `clientId обновлён: ${saved}`; msgBox.style.color = "blue"; console.log("[OPTIONS] clientId обновлён через URL:", saved); } catch (err) { msgBox.textContent = "Ошибка: " + err; msgBox.style.color = "red"; console.error("[OPTIONS] Ошибка обновления clientId:", err); } } document.addEventListener("DOMContentLoaded", restoreOptions); document.querySelector("#settings-form").addEventListener("submit", saveOptions);