discord-clone/hooks/use-modal-store.ts

25 lines
581 B
TypeScript
Raw Normal View History

2023-10-14 00:06:14 -07:00
import { Server } from "@prisma/client";
2023-10-10 21:33:43 -07:00
import { create } from "zustand";
2023-10-14 00:06:14 -07:00
export type ModalType = "createServer" | "invite";
interface ModalData {
server?: Server
}
2023-10-10 21:33:43 -07:00
interface ModalStore {
type: ModalType | null;
2023-10-14 00:06:14 -07:00
data: ModalData;
2023-10-10 21:33:43 -07:00
isOpen: boolean;
2023-10-14 00:06:14 -07:00
onOpen: (type: ModalType, data?:ModalData) => void;
2023-10-10 21:33:43 -07:00
onClose: () => void;
}
export const useModal = create<ModalStore>((set) => ({
type: null,
2023-10-14 00:06:14 -07:00
data: {},
2023-10-10 21:33:43 -07:00
isOpen: false,
2023-10-14 00:06:14 -07:00
onOpen: (type, data= {}) => set({ isOpen: true, type, data }),
2023-10-10 21:33:43 -07:00
onClose: () => set({ type: null, isOpen: false }),
}));