"use strict"; const DEFAULT_SETTINGS = { baseFolder: "RedGifs", groupByProfile: true, saveAs: false }; const baseFolderInput = document.getElementById("baseFolder"); const groupByProfileInput = document.getElementById("groupByProfile"); const saveAsInput = document.getElementById("saveAs"); const pathPreview = document.getElementById("pathPreview"); const saveButton = document.getElementById("saveButton"); const resetButton = document.getElementById("resetButton"); const statusBox = document.getElementById("status"); function cleanPath(value) { return String(value || "") .replace(/\\/g, "/") .split("/") .map((part) => part.replace(/[<>:"|?*\u0000-\u001f]/g, "_").replace(/[. ]+$/g, "").trim()) .filter((part) => part && part !== "." && part !== "..") .slice(0, 8) .join("/"); } function readForm() { return { baseFolder: cleanPath(baseFolderInput.value), groupByProfile: groupByProfileInput.checked, saveAs: saveAsInput.checked }; } function writeForm(settings) { baseFolderInput.value = settings.baseFolder || ""; groupByProfileInput.checked = settings.groupByProfile !== false; saveAsInput.checked = Boolean(settings.saveAs); updatePreview(); } function updatePreview() { const settings = readForm(); const parts = ["Загрузки"]; if (settings.baseFolder) parts.push(settings.baseFolder); if (settings.groupByProfile) parts.push("profile"); parts.push("video.mp4"); pathPreview.textContent = parts.join("/"); } async function loadSettings() { const stored = await chrome.storage.local.get("downloadSettings"); writeForm(Object.assign({}, DEFAULT_SETTINGS, stored.downloadSettings || {})); } async function saveSettings() { const settings = readForm(); baseFolderInput.value = settings.baseFolder; await chrome.storage.local.set({ downloadSettings: settings }); statusBox.textContent = "Настройки сохранены."; updatePreview(); setTimeout(() => { statusBox.textContent = ""; }, 2200); } baseFolderInput.addEventListener("input", updatePreview); groupByProfileInput.addEventListener("change", updatePreview); saveAsInput.addEventListener("change", updatePreview); saveButton.addEventListener("click", saveSettings); resetButton.addEventListener("click", () => { writeForm(DEFAULT_SETTINGS); statusBox.textContent = "Восстановлены значения по умолчанию — нажмите «Сохранить»."; }); loadSettings();