From de43eb05d2e43ab31effce3dcca62ad91a556b26 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 5 Oct 2025 16:42:02 -0700 Subject: Init --- src/utils/storage.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/utils/storage.ts (limited to 'src/utils/storage.ts') diff --git a/src/utils/storage.ts b/src/utils/storage.ts new file mode 100644 index 0000000..ee862ae --- /dev/null +++ b/src/utils/storage.ts @@ -0,0 +1,42 @@ +import type { Grid } from '@/types/grid'; + +export interface SavedArt { + id: string; + name: string; + grid: Grid; + timestamp: number; +} + +const STORAGE_KEY = 'ansicolor-saved-art'; +const MAX_SAVES = 8; + +export const saveArt = (name: string, grid: Grid): void => { + const saves = getSavedArt(); + const newSave: SavedArt = { + id: Date.now().toString(), + name, + grid, + timestamp: Date.now(), + }; + + const updatedSaves = [newSave, ...saves].slice(0, MAX_SAVES); + localStorage.setItem(STORAGE_KEY, JSON.stringify(updatedSaves)); +}; + +export const getSavedArt = (): SavedArt[] => { + const saved = localStorage.getItem(STORAGE_KEY); + if (!saved) return []; + + try { + return JSON.parse(saved); + } catch (e) { + console.error('Failed to parse saved art', e); + return []; + } +}; + +export const deleteSavedArt = (id: string): void => { + const saves = getSavedArt(); + const filtered = saves.filter(save => save.id !== id); + localStorage.setItem(STORAGE_KEY, JSON.stringify(filtered)); +}; -- cgit v1.2.3-70-g09d2