diff --git a/public/client.js b/public/client.js index bf36845..7465819 100644 --- a/public/client.js +++ b/public/client.js @@ -1,23 +1,75 @@ -document.getElementById('fetchBtn').addEventListener('click', () => { - const urlInput = document.getElementById('pasteUrl').value; - - // Extract the Paste ID from the provided Pastebin URL - const pasteId = getPasteId(urlInput); - - if (pasteId) { - window.location.href = `/${pasteId}`; - } else { - alert('Please enter a valid Pastebin URL.'); - } +document.addEventListener('DOMContentLoaded', async () => { + const fetchBtn = document.getElementById('fetchBtn'); + const pasteUrlInput = document.getElementById('pasteUrl'); + const autoCopyCheckbox = document.getElementById('autoCopyCheckbox'); + + // Load default state for the checkbox + const defaultAutoCopy = await getDefaultAutoCopy(); + const userPreference = getCookie('autoCopyEnabled'); + autoCopyCheckbox.checked = userPreference !== null ? userPreference === 'true' : defaultAutoCopy; + + // Save user preference to a cookie when the checkbox changes + autoCopyCheckbox.addEventListener('change', () => { + setCookie('autoCopyEnabled', autoCopyCheckbox.checked, 365); + }); + + // Handle "Go to Raw Paste" button click + fetchBtn.addEventListener('click', async () => { + const urlInput = pasteUrlInput.value.trim(); + const pasteId = getPasteId(urlInput); + + if (!pasteId) { + alert('Please enter a valid Pastebin URL.'); + return; + } + + // Redirect to raw paste page + const rawPasteUrl = `/${pasteId}`; + if (autoCopyCheckbox.checked) { + try { + const response = await fetch(rawPasteUrl); + if (response.ok) { + const pasteContents = await response.text(); + await navigator.clipboard.writeText(pasteContents); + alert('Raw paste contents copied to clipboard!'); + } else { + alert('Failed to fetch paste contents.'); + } + } catch (error) { + alert('Error copying to clipboard: ' + error.message); + } + } + window.location.href = `/${pasteId}` + }); }); +// Utility function to get the default auto-copy value from the server +async function getDefaultAutoCopy() { + try { + const response = await fetch('/auto-copy-default'); + if (response.ok) { + const data = await response.json(); + return data.autoCopyDefault; + } + } catch (error) { + console.error('Error fetching auto-copy default:', error); + } + return false; // Default fallback +} + +// Extract Paste ID from the given Pastebin URL function getPasteId(url) { - // Check if the URL is a valid Pastebin URL and extract the Paste ID const regex = /pastebin\.com\/(?:raw\/)?([a-zA-Z0-9]+)/; const match = url.match(regex); - - if (match) { - return match[1]; // Return the Paste ID - } - return null; // Invalid Pastebin URL + return match ? match[1] : null; } + +// Utility functions to manage cookies +function setCookie(name, value, days) { + const expires = new Date(Date.now() + days * 86400000).toUTCString(); + document.cookie = `${name}=${value}; expires=${expires}; path=/`; +} + +function getCookie(name) { + const match = document.cookie.match(new RegExp(`(?:^|; )${name}=([^;]*)`)); + return match ? decodeURIComponent(match[1]) : null;