mars-v2-frontend/src/store/index.ts
Yusuf Seyrek e651e9c797
feat: store and component mocks setup (#237)
* feat: store and component mocks setup

* feat: more examples
2023-05-30 11:16:13 +02:00

33 lines
1.0 KiB
TypeScript

import { create, GetState, SetState, StoreApi, UseBoundStore } from 'zustand'
import { devtools } from 'zustand/middleware'
import createBroadcastSlice from 'store/slices/broadcast'
import createCommonSlice from 'store/slices/common'
import createCurrencySlice from 'store/slices/currency'
import createModalSlice from 'store/slices/modal'
export interface Store extends CommonSlice, BroadcastSlice, CurrencySlice, ModalSlice {}
const store = (set: SetState<any>, get: GetState<any>) => ({
...createCommonSlice(set, get),
...createBroadcastSlice(set, get),
...createCurrencySlice(set, get),
...createModalSlice(set, get),
})
interface UseStoreWithClear extends UseBoundStore<StoreApi<Store>> {
/**
* For tests only: Clears the state, and set it to an empty object.
*/
clearState: () => {}
}
let useStore: UseBoundStore<StoreApi<Store>>
if (process.env.NODE_ENV === 'development') {
useStore = create(devtools(store))
} else {
useStore = create<Store>(store)
}
export default useStore as UseStoreWithClear