Publish RedGifs 0.6.23 and migrate project website to Gitea
This commit is contained in:
1 parent
01e0debd76
commit
580fd4f5b9
38 files changed
+5987
-42
No files matched your search
+76
@@ -0,0 +1,76 @@
|
||||
"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();
|
||||
Reference in new issue
Block a user