32 lines
767 B
JavaScript
32 lines
767 B
JavaScript
import { onMount } from 'svelte';
|
|
import { writable } from 'svelte/store';
|
|
|
|
const localStore = (key, initial) => {
|
|
const toString = (value) => JSON.stringify(value, null, 2);
|
|
const toObject = JSON.parse;
|
|
|
|
if (process.browser) {
|
|
if (localStorage.getItem(key) === null) {
|
|
localStorage.setItem(key, toString(initial));
|
|
}
|
|
|
|
const saved = toObject(localStorage.getItem(key));
|
|
|
|
const { subscribe, set, update } = writable(saved);
|
|
|
|
return {
|
|
subscribe,
|
|
set: (value) => {
|
|
// both return and save in the local storage
|
|
localStorage.setItem(key, toString(value));
|
|
return set(value);
|
|
},
|
|
update
|
|
};
|
|
}
|
|
};
|
|
|
|
// export const todos = localStore('todo-store', []);
|
|
console.log('here we are: ' + typeof window);
|
|
export const todos = writable([]);
|