// folderShareModal.js import { escapeHTML, showToast } from './domUtils.js'; import { t } from './i18n.js'; export function openFolderShareModal(folder) { // Remove any existing folder share modal const existing = document.getElementById("folderShareModal"); if (existing) existing.remove(); // Create the modal container const modal = document.createElement("div"); modal.id = "folderShareModal"; modal.classList.add("modal"); modal.innerHTML = ` `; document.body.appendChild(modal); modal.style.display = "block"; // Close button handler document.getElementById("closeFolderShareModal").addEventListener("click", () => { modal.remove(); }); // Handler for generating the share link document.getElementById("generateFolderShareLinkBtn").addEventListener("click", () => { const expiration = document.getElementById("folderShareExpiration").value; const password = document.getElementById("folderSharePassword").value; const allowUpload = document.getElementById("folderShareAllowUpload").checked ? 1 : 0; // Retrieve the CSRF token from the meta tag. const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute("content"); if (!csrfToken) { showToast(t("csrf_error")); return; } // Post to the createFolderShareLink endpoint. fetch("/createFolderShareLink.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json", "X-CSRF-Token": csrfToken }, body: JSON.stringify({ folder: folder, expirationMinutes: parseInt(expiration, 10), password: password, allowUpload: allowUpload }) }) .then(response => response.json()) .then(data => { if (data.token && data.link) { const shareUrl = data.link; const displayDiv = document.getElementById("folderShareLinkDisplay"); const inputField = document.getElementById("folderShareLinkInput"); inputField.value = shareUrl; displayDiv.style.display = "block"; showToast(t("share_link_generated")); } else { showToast(t("error_generating_share_link") + ": " + (data.error || t("unknown_error"))); } }) .catch(err => { console.error("Error generating folder share link:", err); showToast(t("error_generating_share_link") + ": " + (err.error || t("unknown_error"))); }); }); // Copy share link button handler document.getElementById("copyFolderShareLinkBtn").addEventListener("click", () => { const input = document.getElementById("folderShareLinkInput"); input.select(); document.execCommand("copy"); showToast(t("link_copied")); }); }