clipboard-history-manager
Version:
An easy-to-use clipboard history manager that automatically tracks and saves clipboard content. Includes tools to view, clear, and manage your clipboard history effectively.
91 lines (79 loc) • 2.38 kB
JavaScript
import fs from 'fs';
let clipboardy;
(async () => {
clipboardy = await import('clipboardy');
loadHistory();
startClipboardMonitor();
})();
const HISTORY_FILE = 'clipboard_history.json';
let clipboardHistory = [];
const loadHistory = () => {
if (fs.existsSync(HISTORY_FILE)) {
const fileData = fs.readFileSync(HISTORY_FILE, 'utf-8');
clipboardHistory = JSON.parse(fileData);
}
};
const saveHistory = () => {
fs.writeFileSync(HISTORY_FILE, JSON.stringify(clipboardHistory, null, 2), 'utf-8');
};
const addToHistory = async () => {
if (!clipboardy) return console.error('Clipboardy is not loaded.');
const currentClipboard = await clipboardy.default.read();
if (
currentClipboard &&
(!clipboardHistory.length || clipboardHistory[clipboardHistory.length - 1] !== currentClipboard)
) {
clipboardHistory.push(currentClipboard);
console.log('Clipboard saved to history!');
saveHistory();
}
};
const showHistory = () => {
if (clipboardHistory.length === 0) {
console.log('\nClipboard history is empty.');
} else {
console.log('\nClipboard History:');
clipboardHistory.forEach((item, index) => {
console.log(`#${index + 1}: ${item}`);
console.log("\n**************************");
});
}
};
const clearHistory = () => {
clipboardHistory = [];
saveHistory();
console.log('Clipboard history cleared!');
};
const startClipboardMonitor = () => {
setInterval(async () => {
await addToHistory(); // Automatically save clipboard content to history
}, 1000);
};
const showMenu = () => {
console.log('\nClipboard History Manager');
console.log('1. View clipboard history');
console.log('2. Clear clipboard history');
console.log('3. Exit');
console.log('Enter your choice: ');
const stdin = process.openStdin();
stdin.once('data', async (data) => {
const choice = data.toString().trim();
switch (choice) {
case '1':
showHistory();
break;
case '2':
clearHistory();
break;
case '3':
console.log('You have exited the Clipboard History Manager.');
process.exit(0);
break;
default:
console.log('Invalid choice. Please try again.');
}
showMenu();
});
};
showMenu();