import { browser } from '$app/environment'; import { writable } from 'svelte/store'; import localforage from 'localforage'; interface LastPruneTimes { anime: number; chapters: number; manga: number; } const defaultTimes: LastPruneTimes = { anime: 1, chapters: 1, manga: 1 }; const createStore = () => { const store = writable(defaultTimes); let state: LastPruneTimes = defaultTimes; if (browser) localforage.getItem('lastPruneTimes').then((value) => { if (value && Object.keys(value).length === Object.keys(defaultTimes).length) store.set(value); }); store.subscribe((value) => { state = value; if (browser) localforage.setItem('lastPruneTimes', value); }); return { subscribe: store.subscribe, set: store.set, update: store.update, reset: () => store.set(defaultTimes), get: () => { const keys = Object.keys(defaultTimes); const stateKeys = Object.keys(state); if (keys.length !== stateKeys.length) return defaultTimes; for (const key of keys) if (!stateKeys.includes(key)) return defaultTimes; return state; }, setKey: (key: keyof LastPruneTimes, value: number) => store.update((times) => ({ ...times, [key]: value })) }; }; const lastPruneTimes = createStore(); export default lastPruneTimes;