34 lines
818 B
JavaScript
34 lines
818 B
JavaScript
import React from 'react';
|
|
|
|
import { StrictDict, useKeyedState } from '@edx/react-unit-test-utils/dist';
|
|
|
|
import { useEventListener } from '../../../../../generic/hooks';
|
|
|
|
export const stateKeys = StrictDict({
|
|
modalOptions: 'modalOptions',
|
|
});
|
|
|
|
const useModalIFrameBehavior = () => {
|
|
const [modalOptions, setModalOptions] = useKeyedState(stateKeys.modalOptions, ({ open: false }));
|
|
|
|
const receiveMessage = React.useCallback(({ data }) => {
|
|
const { type, payload } = data;
|
|
if (type === 'plugin.modal') {
|
|
payload.open = true;
|
|
setModalOptions(payload);
|
|
}
|
|
}, []);
|
|
useEventListener('message', receiveMessage);
|
|
|
|
const handleModalClose = () => {
|
|
setModalOptions({ open: false });
|
|
};
|
|
|
|
return {
|
|
handleModalClose,
|
|
modalOptions,
|
|
};
|
|
};
|
|
|
|
export default useModalIFrameBehavior;
|