diff --git a/src/components/RequestModal/MovieRequestModal.tsx b/src/components/RequestModal/MovieRequestModal.tsx new file mode 100644 index 000000000..c4c9ba8f0 --- /dev/null +++ b/src/components/RequestModal/MovieRequestModal.tsx @@ -0,0 +1,79 @@ +import React from 'react'; +import Modal from '../Common/Modal'; +import { useUser } from '../../hooks/useUser'; +import { Permission } from '../../../server/lib/permissions'; + +interface RequestModalProps { + type: 'request' | 'cancel'; + visible?: boolean; + onCancel: () => void; + onOk: () => void; + title: string; +} + +const MovieRequestModal: React.FC = ({ + type, + visible, + onCancel, + onOk, + title, +}) => { + const { hasPermission } = useUser(); + + let text = hasPermission(Permission.MANAGE_REQUESTS) + ? 'Your request will be immediately approved. Do you wish to continue?' + : undefined; + + if (type === 'cancel') { + text = 'This will remove your request. Are you sure you want to continue?'; + } + + return ( + + + + ) : ( + + + + ) + } + > + {text} + + ); +}; + +export default MovieRequestModal; diff --git a/src/components/TitleCard/index.tsx b/src/components/TitleCard/index.tsx index c0fbe2dd9..6ca314f23 100644 --- a/src/components/TitleCard/index.tsx +++ b/src/components/TitleCard/index.tsx @@ -6,10 +6,9 @@ import Unavailable from '../../assets/unavailable.svg'; import { withProperties } from '../../utils/typeHelpers'; import Transition from '../Transition'; import Placeholder from './Placeholder'; -import Modal from '../Common/Modal'; -import { useUser, Permission } from '../../hooks/useUser'; import axios from 'axios'; import { MediaRequest } from '../../../server/entity/MediaRequest'; +import MovieRequestModal from '../RequestModal/MovieRequestModal'; interface TitleCardProps { id: number; @@ -41,7 +40,6 @@ const TitleCard: React.FC = ({ requestId, }) => { const [currentStatus, setCurrentStatus] = useState(status); - const { hasPermission } = useUser(); const [showDetail, setShowDetail] = useState(false); const [showRequestModal, setShowRequestModal] = useState(false); const [showCancelModal, setShowCancelModal] = useState(false); @@ -79,68 +77,35 @@ const TitleCard: React.FC = ({ height: 270, }} > - setShowRequestModal(false)} onOk={() => request()} - title={`Request ${title}`} - okText="Request" - iconSvg={ - - - - } - > - {hasPermission(Permission.MANAGE_REQUESTS) - ? 'Your request will be immediately approved. Do you wish to continue?' - : undefined} - - + setShowCancelModal(false)} onOk={() => cancelRequest()} - title={`Cancel request`} - okText="Remove Request" - okButtonType="danger" - iconSvg={ - - - - } - > - This will remove your request. Are you sure you want to continue? - + />
setShowDetail(true)} onMouseLeave={() => setShowDetail(false)} + onClick={() => setShowDetail(true)} + onKeyDown={(e) => { + if (e.key === 'Enter') { + setShowDetail(true); + } + }} + role="link" + tabIndex={0} >
= ({ )} + {currentStatus === MediaRequestStatus.AVAILABLE && ( + + )}