Files
frontend-app-learning/src/courseware/course/sequence/Unit/hooks/useModalIFrameData.js

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;