/** * 标签模板 LocalStorage 读写 * Key: label-template-{id} * 列表: label-template-ids = string[] */ import type { LabelTemplate } from '../types/labelTemplate'; import { getStorageKey, getIdsKey } from '../types/labelTemplate'; export function getTemplateIds(): string[] { try { const raw = localStorage.getItem(getIdsKey()); if (!raw) return []; const ids = JSON.parse(raw) as string[]; return Array.isArray(ids) ? ids : []; } catch { return []; } } export function getTemplate(id: string): LabelTemplate | null { try { const raw = localStorage.getItem(getStorageKey(id)); if (!raw) return null; return JSON.parse(raw) as LabelTemplate; } catch { return null; } } export function getTemplateList(): LabelTemplate[] { const ids = getTemplateIds(); const list: LabelTemplate[] = []; for (const id of ids) { const t = getTemplate(id); if (t) list.push(t); } return list.sort((a, b) => (b.id > a.id ? 1 : -1)); } function setTemplateIds(ids: string[]): void { localStorage.setItem(getIdsKey(), JSON.stringify(ids)); } export function saveTemplate(template: LabelTemplate): void { const key = getStorageKey(template.id); localStorage.setItem(key, JSON.stringify(template)); const ids = getTemplateIds(); if (!ids.includes(template.id)) { ids.push(template.id); setTemplateIds(ids); } } export function deleteTemplate(id: string): void { localStorage.removeItem(getStorageKey(id)); const ids = getTemplateIds().filter((x) => x !== id); setTemplateIds(ids); }