Changing clientId via options
parent
fa6aad4f02
commit
9b2dfea9d4
|
|
@ -24,16 +24,6 @@
|
|||
"extension_pages": "script-src 'self'; object-src 'self'; connect-src 'self' http://localhost:5000"
|
||||
},
|
||||
|
||||
"web_accessible_resources": [
|
||||
{
|
||||
"resources": [
|
||||
"update_id.html",
|
||||
"update_id.js"
|
||||
],
|
||||
"matches": ["<all_urls>"]
|
||||
}
|
||||
],
|
||||
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": ["*://*/*"],
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
<button type="submit">Сохранить</button>
|
||||
</form>
|
||||
<p id="status" style="color: green;"></p>
|
||||
<p id="client-id-status" style="color: blue; font-weight: bold;"></p>
|
||||
<script src="options.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
42
options.js
42
options.js
|
|
@ -49,6 +49,7 @@ function restoreOptions() {
|
|||
} else {
|
||||
updateFormFields(result);
|
||||
}
|
||||
checkClientIdFromURL();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -68,5 +69,46 @@ function showStatus(message, isError = false) {
|
|||
}, 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);
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
<!-- chrome-extension://cimkehmfiogjfgmglapeabbnhjkdhnmj/update_id.html moz-...UUID edge- -->
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Установка ID</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: system-ui, sans-serif;
|
||||
background-color: #f7f9fc;
|
||||
color: #222;
|
||||
margin: 40px;
|
||||
text-align: center;
|
||||
}
|
||||
.card {
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||
padding: 30px;
|
||||
max-width: 500px;
|
||||
margin: auto;
|
||||
}
|
||||
.success {
|
||||
color: green;
|
||||
font-weight: bold;
|
||||
}
|
||||
.error {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
code {
|
||||
background: #eef3fa;
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
<h2>Установка идентификатора клиента</h2>
|
||||
<div id="status">Обработка...</div>
|
||||
</div>
|
||||
|
||||
<script src="update_id.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
51
update_id.js
51
update_id.js
|
|
@ -1,51 +0,0 @@
|
|||
const browserAPI = globalThis.browser ?? globalThis.chrome;
|
||||
const statusEl = document.getElementById("status");
|
||||
|
||||
function getQueryParams() {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
const entries = {};
|
||||
for (const [key, value] of params.entries()) {
|
||||
entries[key] = value;
|
||||
}
|
||||
return entries;
|
||||
}
|
||||
|
||||
async function updateClientId(newId) {
|
||||
if (!newId || !newId.trim()) {
|
||||
throw new Error("Пустой ID");
|
||||
}
|
||||
|
||||
await browserAPI.storage.local.set({ clientId: newId });
|
||||
console.log("[UI] clientId установлен:", newId);
|
||||
return newId;
|
||||
}
|
||||
|
||||
async function processUrlParams() {
|
||||
try {
|
||||
const params = getQueryParams();
|
||||
|
||||
if (!params.clientId) {
|
||||
statusEl.innerHTML = `<div class="error">Ошибка: отсутствует параметр clientId</div>
|
||||
<p>Используйте: <code>?clientId=your ID</code></p>`;
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("[UI] Получен clientId из URL:", params.clientId);
|
||||
|
||||
const savedId = await updateClientId(params.clientId);
|
||||
|
||||
statusEl.innerHTML = `<div class="success"> ID успешно установлен!</div>
|
||||
<p>Новый идентификатор: <code>${savedId}</code></p>
|
||||
<p>Страница закроется через 5 секунд...</p>`;
|
||||
|
||||
setTimeout(() => {
|
||||
window.close();
|
||||
}, 5000);
|
||||
|
||||
} catch (error) {
|
||||
console.error("[UI] Ошибка:", error);
|
||||
statusEl.innerHTML = `<div class="error">Ошибка: ${error.message}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", processUrlParams);
|
||||
Loading…
Reference in New Issue