fixed missing del, hydration flag, and duplicate storage
This commit is contained in:
parent
648412dd6d
commit
4246c94ac5
1 changed files with 10 additions and 39 deletions
|
|
@ -1,42 +1,13 @@
|
||||||
import { createStore } from 'zustand/vanilla'
|
import { createStore } from 'zustand/vanilla'
|
||||||
import { persist, createJSONStorage } from 'zustand/middleware'
|
|
||||||
import { get, set, del } from 'idb-keyval'
|
|
||||||
|
|
||||||
const storage = createJSONStorage(() => ({
|
export const store = createStore((set, get) => ({
|
||||||
getItem: async (name) => {
|
|
||||||
const value = await get(name)
|
|
||||||
return value ?? null
|
|
||||||
},
|
|
||||||
setItem: async (name, value) => {
|
|
||||||
await set(name, value)
|
|
||||||
},
|
|
||||||
removeItem: async (name) => {
|
|
||||||
await del(name)
|
|
||||||
},
|
|
||||||
}))
|
|
||||||
|
|
||||||
export const store = createStore(
|
|
||||||
persist(
|
|
||||||
(set, get) => ({
|
|
||||||
_hydrated: false,
|
|
||||||
user: null,
|
user: null,
|
||||||
items: [],
|
items: [],
|
||||||
route: 'home',
|
route: 'home',
|
||||||
|
|
||||||
|
// Actions
|
||||||
setUser: (user) => set({ user }),
|
setUser: (user) => set({ user }),
|
||||||
addItem: (item) => set(s => ({ items: [...s.items, item] })),
|
addItem: (item) => set(s => ({ items: [...s.items, item] })),
|
||||||
removeItem: (id) => set(s => ({ items: s.items.filter(i => i.id !== id) })),
|
removeItem: (id) => set(s => ({ items: s.items.filter(i => i.id !== id) })),
|
||||||
navigate: (route) => set({ route }),
|
navigate: (route) => set({ route }),
|
||||||
}),
|
}))
|
||||||
{
|
|
||||||
name: 'app-store',
|
|
||||||
storage,
|
|
||||||
onRehydrateStorage: () => {
|
|
||||||
return (state, error) => {
|
|
||||||
if (!error) {
|
|
||||||
store.setState({ _hydrated: true })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue