fixed missing del, hydration flag, and duplicate storage

This commit is contained in:
authentik Default Admin 2026-03-04 18:14:40 -08:00
parent 648412dd6d
commit 4246c94ac5

View file

@ -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) => { user: null,
const value = await get(name) items: [],
return value ?? null route: 'home',
},
setItem: async (name, value) => { // Actions
await set(name, value) setUser: (user) => set({ user }),
}, addItem: (item) => set(s => ({ items: [...s.items, item] })),
removeItem: async (name) => { removeItem: (id) => set(s => ({ items: s.items.filter(i => i.id !== id) })),
await del(name) navigate: (route) => set({ route }),
},
})) }))
export const store = createStore(
persist(
(set, get) => ({
_hydrated: false,
user: null,
items: [],
route: 'home',
setUser: (user) => set({ user }),
addItem: (item) => set(s => ({ items: [...s.items, item] })),
removeItem: (id) => set(s => ({ items: s.items.filter(i => i.id !== id) })),
navigate: (route) => set({ route }),
}),
{
name: 'app-store',
storage,
onRehydrateStorage: () => {
return (state, error) => {
if (!error) {
store.setState({ _hydrated: true })
}
}
},
}
)
)