The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/client/providers/ModalProvider.tsx

29 lines
755 B

import { ModalContext } from '@rocket.chat/ui-contexts';
import type { ReactNode, ReactElement } from 'react';
import React, { useState, useMemo, memo } from 'react';
import { useImperativeModal } from '../views/hooks/useImperativeModal';
type ModalProviderProps = {
children?: ReactNode;
};
const ModalProvider = ({ children }: ModalProviderProps): ReactElement => {
const [currentModal, setCurrentModal] = useState<ReactNode>(null);
const contextValue = useMemo(
() => ({
modal: {
setModal: setCurrentModal,
},
currentModal,
}),
[currentModal],
);
useImperativeModal(setCurrentModal);
return <ModalContext.Provider value={contextValue} children={children} />;
};
export default memo<typeof ModalProvider>(ModalProvider);