Files

77 lines
2.4 KiB
JavaScript

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