svelte-playground/src/lib/stores/todos.js

32 lines
767 B
JavaScript
Raw Normal View History

import { onMount } from 'svelte';
2021-08-05 17:51:59 +02:00
import { writable } from 'svelte/store';
2021-08-01 21:33:31 +02:00
const localStore = (key, initial) => {
2021-08-05 17:51:59 +02:00
const toString = (value) => JSON.stringify(value, null, 2);
const toObject = JSON.parse;
2021-08-05 17:51:59 +02:00
if (process.browser) {
if (localStorage.getItem(key) === null) {
localStorage.setItem(key, toString(initial));
}
2021-08-05 17:51:59 +02:00
const saved = toObject(localStorage.getItem(key));
2021-08-05 17:51:59 +02:00
const { subscribe, set, update } = writable(saved);
2021-08-05 17:51:59 +02:00
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', []);
2021-08-05 17:51:59 +02:00
console.log('here we are: ' + typeof window);
export const todos = writable([]);