zulip/store/index.js

26 lines
703 B
JavaScript
Raw Normal View History

2026-03-04 11:13:15 -08:00
import { createStore } from 'zustand/vanilla'
import { persist } from 'zustand/middleware'
import { idbStorage } from './middleware/persistence.js'
export const store = createStore(
persist(
(set, get) => ({
_hydrated: false,
2026-03-04 11:13:15 -08:00
user: null,
items: [],
route: 'home',
2026-03-04 11:13:15 -08:00
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 }),
2026-03-04 11:13:15 -08:00
}),
{
name: 'app-store',
storage: idbStorage,
onRehydrateStorage: () => (state) => {
if (state) state._hydrated = true
},
2026-03-04 11:13:15 -08:00
}
)
)