local-in-30s / src /utils /journalStorage.ts
Jackylau666's picture
Add Local Lens cultural translator interactions
5f91edb verified
Raw
History Blame Contribute Delete
1.21 kB
import type { CultureDecode } from '../types/culture';
import { getScanInsight } from './localLens';
const JOURNAL_KEY = 'local-in-30s-journal';
export type JournalRecord = CultureDecode & {
savedAt: string;
localMove: string;
};
export function loadJournalRecords(): JournalRecord[] {
if (typeof window === 'undefined') return [];
try {
const raw = window.localStorage.getItem(JOURNAL_KEY);
if (!raw) return [];
const parsed = JSON.parse(raw);
return Array.isArray(parsed)
? parsed.map((record) => ({
...record,
localMove: record.localMove || getScanInsight(record).localMove,
}))
: [];
} catch {
return [];
}
}
export function saveJournalRecord(decode: CultureDecode): JournalRecord[] {
if (typeof window === 'undefined') return [];
const current = loadJournalRecords();
const insight = getScanInsight(decode);
const nextRecord: JournalRecord = {
...decode,
savedAt: new Date().toISOString(),
localMove: insight.localMove,
};
const next = [nextRecord, ...current.filter((record) => record.id !== decode.id)].slice(0, 12);
window.localStorage.setItem(JOURNAL_KEY, JSON.stringify(next));
return next;
}