37 lines
959 B
TypeScript
37 lines
959 B
TypeScript
import { create } from 'zustand'
|
|
import { INITIAL_MODAL_VISIBILITY, MODAL_KEYS } from '@/constants'
|
|
import type { WithdrawTopupType } from '@/type'
|
|
|
|
export { MODAL_KEYS }
|
|
|
|
export type ModalKey = (typeof MODAL_KEYS)[number]
|
|
|
|
type ModalVisibilityMap = Record<ModalKey, boolean>
|
|
|
|
export interface ModalStoreState {
|
|
modals: ModalVisibilityMap
|
|
withdrawTopupType: WithdrawTopupType
|
|
closeAllModals: () => void
|
|
setModalOpen: (key: ModalKey, open: boolean) => void
|
|
setWithdrawTopupType: (type: WithdrawTopupType) => void
|
|
}
|
|
|
|
export const useModalStore = create<ModalStoreState>()((set) => ({
|
|
modals: INITIAL_MODAL_VISIBILITY,
|
|
withdrawTopupType: 'withdraw',
|
|
closeAllModals: () => {
|
|
set({ modals: INITIAL_MODAL_VISIBILITY })
|
|
},
|
|
setModalOpen: (key, open) => {
|
|
set((state) => ({
|
|
modals: {
|
|
...state.modals,
|
|
[key]: open,
|
|
},
|
|
}))
|
|
},
|
|
setWithdrawTopupType: (type) => {
|
|
set({ withdrawTopupType: type })
|
|
},
|
|
}))
|