Hey is a decentralized and permissionless social media app built with Lens Protocol 馃尶
at main 26 lines 824 B view raw
1import { createTrackedSelector } from "react-tracked"; 2import type { StateCreator, StoreApi } from "zustand"; 3import { create } from "zustand"; 4import { type PersistOptions, persist } from "zustand/middleware"; 5 6interface TrackedStore<State> { 7 store: StoreApi<State>; 8 useStore: () => State; 9} 10 11export const createTrackedStore = <State>( 12 initializer: StateCreator<State> 13): TrackedStore<State> => { 14 const store = create<State>(initializer); 15 const useStore = createTrackedSelector(store); 16 return { store, useStore }; 17}; 18 19export const createPersistedTrackedStore = <State>( 20 initializer: StateCreator<State>, 21 options: PersistOptions<State> 22): TrackedStore<State> => { 23 const store = create(persist<State>(initializer, options)); 24 const useStore = createTrackedSelector(store); 25 return { store, useStore }; 26};