54 lines
1.1 KiB
TypeScript
54 lines
1.1 KiB
TypeScript
|
|
'use client';
|
||
|
|
|
||
|
|
export interface HistoryItem {
|
||
|
|
id: string;
|
||
|
|
text: string;
|
||
|
|
font: string;
|
||
|
|
result: string;
|
||
|
|
timestamp: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
const HISTORY_KEY = 'figlet-ui-history';
|
||
|
|
const MAX_HISTORY = 10;
|
||
|
|
|
||
|
|
export function getHistory(): HistoryItem[] {
|
||
|
|
if (typeof window === 'undefined') return [];
|
||
|
|
|
||
|
|
try {
|
||
|
|
const stored = localStorage.getItem(HISTORY_KEY);
|
||
|
|
return stored ? JSON.parse(stored) : [];
|
||
|
|
} catch {
|
||
|
|
return [];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function addToHistory(text: string, font: string, result: string): void {
|
||
|
|
let history = getHistory();
|
||
|
|
|
||
|
|
const newItem: HistoryItem = {
|
||
|
|
id: `${Date.now()}-${Math.random()}`,
|
||
|
|
text,
|
||
|
|
font,
|
||
|
|
result,
|
||
|
|
timestamp: Date.now(),
|
||
|
|
};
|
||
|
|
|
||
|
|
// Add to beginning
|
||
|
|
history.unshift(newItem);
|
||
|
|
|
||
|
|
// Keep only MAX_HISTORY items
|
||
|
|
history = history.slice(0, MAX_HISTORY);
|
||
|
|
|
||
|
|
localStorage.setItem(HISTORY_KEY, JSON.stringify(history));
|
||
|
|
}
|
||
|
|
|
||
|
|
export function clearHistory(): void {
|
||
|
|
localStorage.removeItem(HISTORY_KEY);
|
||
|
|
}
|
||
|
|
|
||
|
|
export function removeHistoryItem(id: string): void {
|
||
|
|
const history = getHistory();
|
||
|
|
const filtered = history.filter(item => item.id !== id);
|
||
|
|
localStorage.setItem(HISTORY_KEY, JSON.stringify(filtered));
|
||
|
|
}
|