From f22f8c5d734be5cc0b1dcca869458a7321cd43a2 Mon Sep 17 00:00:00 2001 From: sct Date: Tue, 15 Sep 2020 07:31:00 +0000 Subject: [PATCH] feat(frontend): add cancel request modal for titlecards --- server/entity/MediaRequest.ts | 2 +- src/components/Discover/index.tsx | 2 + src/components/Search/index.tsx | 2 + src/components/TitleCard/index.tsx | 125 ++++++++++++++++++++++++----- 4 files changed, 109 insertions(+), 22 deletions(-) diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index b6ce33204..d086249d1 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -12,7 +12,7 @@ import { import { User } from './User'; export enum MediaRequestStatus { - PENDING, + PENDING = 1, APPROVED, DECLINED, AVAILABLE, diff --git a/src/components/Discover/index.tsx b/src/components/Discover/index.tsx index 9ca32f7f1..e9c212732 100644 --- a/src/components/Discover/index.tsx +++ b/src/components/Discover/index.tsx @@ -52,6 +52,7 @@ const Discover: React.FC = () => { userScore={title.voteAverage} year={title.releaseDate} mediaType={title.mediaType} + requestId={title.request?.id} /> ))} @@ -91,6 +92,7 @@ const Discover: React.FC = () => { userScore={title.voteAverage} year={title.firstAirDate} mediaType={title.mediaType} + requestId={title.request?.id} /> ))} diff --git a/src/components/Search/index.tsx b/src/components/Search/index.tsx index f5414011f..1385e7949 100644 --- a/src/components/Search/index.tsx +++ b/src/components/Search/index.tsx @@ -97,6 +97,7 @@ const Search: React.FC = () => { userScore={title.voteAverage} year={title.releaseDate} mediaType={title.mediaType} + requestId={title.request?.id} /> ); break; @@ -111,6 +112,7 @@ const Search: React.FC = () => { userScore={title.voteAverage} year={title.firstAirDate} mediaType={title.mediaType} + requestId={title.request?.id} /> ); break; diff --git a/src/components/TitleCard/index.tsx b/src/components/TitleCard/index.tsx index 8302e15ee..c0fbe2dd9 100644 --- a/src/components/TitleCard/index.tsx +++ b/src/components/TitleCard/index.tsx @@ -20,10 +20,11 @@ interface TitleCardProps { userScore: number; mediaType: MediaType; status?: MediaRequestStatus; + requestId?: number; } enum MediaRequestStatus { - PENDING, + PENDING = 1, APPROVED, DECLINED, AVAILABLE, @@ -37,11 +38,13 @@ const TitleCard: React.FC = ({ title, status, mediaType, + requestId, }) => { const [currentStatus, setCurrentStatus] = useState(status); const { hasPermission } = useUser(); const [showDetail, setShowDetail] = useState(false); const [showRequestModal, setShowRequestModal] = useState(false); + const [showCancelModal, setShowCancelModal] = useState(false); const request = async () => { const response = await axios.post('/api/v1/request', { @@ -54,6 +57,16 @@ const TitleCard: React.FC = ({ } }; + const cancelRequest = async () => { + const response = await axios.delete( + `/api/v1/request/${requestId}` + ); + + if (response.data.id) { + setCurrentStatus(undefined); + } + }; + // Just to get the year from the date if (year) { year = year.slice(0, 4); @@ -94,6 +107,33 @@ const TitleCard: React.FC = ({ ? '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? +
= ({
= ({
{year}
-

{title}

+

+ {title} +

= ({ /> - + + + + + )} + {currentStatus === MediaRequestStatus.PENDING && ( + + )} + {currentStatus === MediaRequestStatus.APPROVED && ( + + )}