From d830cd15c15abd5faf57250d687cd2535acf7c2b Mon Sep 17 00:00:00 2001 From: arsam Date: Fri, 18 Sep 2026 23:19:01 +0330 Subject: [PATCH] Import source: vault/lib/storage Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality. --- vault/lib/storage.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 vault/lib/storage.ts diff --git a/vault/lib/storage.ts b/vault/lib/storage.ts new file mode 100644 index 0000000..f58e1b2 --- /dev/null +++ b/vault/lib/storage.ts @@ -0,0 +1,37 @@ +import { Snippet } from "./types"; +import { MOCK_SNIPPETS } from "./mock-data"; + +const STORAGE_KEY = "vault_snippets"; + +export function getSnippets(): Snippet[] { + if (typeof window === "undefined") return []; + const stored = localStorage.getItem(STORAGE_KEY); + if (stored) return JSON.parse(stored); + return []; +} + +export function saveSnippet(snippet: Snippet): void { + const snippets = getSnippets(); + const idx = snippets.findIndex((s) => s.id === snippet.id); + if (idx >= 0) { + snippets[idx] = snippet; + } else { + snippets.unshift(snippet); + } + localStorage.setItem(STORAGE_KEY, JSON.stringify(snippets)); +} + +export function getSnippet(id: string): Snippet | undefined { + return getSnippets().find((s) => s.id === id); +} + +export function deleteSnippet(id: string): void { + const snippets = getSnippets().filter((s) => s.id !== id); + localStorage.setItem(STORAGE_KEY, JSON.stringify(snippets)); +} + +export function initMockData(): void { + if (typeof window === "undefined") return; + if (localStorage.getItem(STORAGE_KEY)) return; + localStorage.setItem(STORAGE_KEY, JSON.stringify(MOCK_SNIPPETS)); +}