21 lines
718 B
JavaScript
21 lines
718 B
JavaScript
import { useState, useCallback } from "react";
|
|
|
|
/**
|
|
* Управляет всеми модалками MainFeed через единое состояние,
|
|
* чтобы гарантировать что открыта максимум одна модалка сразу.
|
|
*
|
|
* Типы: "create" | "edit" | "profile" | "auth" | "rules" | "viewer"
|
|
*/
|
|
export function useModals() {
|
|
const [modal, setModal] = useState(null); // { type, payload }
|
|
|
|
const open = useCallback((type, payload = null) => {
|
|
setModal({ type, payload });
|
|
}, []);
|
|
|
|
const close = useCallback(() => setModal(null), []);
|
|
|
|
const isOpen = useCallback((type) => modal?.type === type, [modal]);
|
|
|
|
return { modal, open, close, isOpen };
|
|
} |