From bed850dce9ad0d0b52c3c628225aea938164c38b Mon Sep 17 00:00:00 2001 From: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Date: Mon, 12 Apr 2021 23:02:10 -0400 Subject: [PATCH] fix(ui): allow canceling from request list & hide edit button for own requests (#1401) * fix(ui): allow canceling from request list & hide edit button for own requests * fix(ui): hide 'Cancel Request' button on request list for admins --- src/components/Discover/index.tsx | 4 +-- .../RequestList/RequestItem/index.tsx | 28 ++++++++++++++- .../RequestModal/MovieRequestModal.tsx | 36 +++++++++---------- src/i18n/locale/en.json | 4 ++- 4 files changed, 50 insertions(+), 22 deletions(-) diff --git a/src/components/Discover/index.tsx b/src/components/Discover/index.tsx index 9a4d05c8..8560a535 100644 --- a/src/components/Discover/index.tsx +++ b/src/components/Discover/index.tsx @@ -21,7 +21,7 @@ const messages = defineMessages({ populartv: 'Popular Series', upcomingtv: 'Upcoming Series', recentlyAdded: 'Recently Added', - nopending: 'No Pending Requests', + noRequests: 'No requests.', upcoming: 'Upcoming Movies', trending: 'Trending', }); @@ -94,7 +94,7 @@ const Discover: React.FC = () => { /> ))} placeholder={} - emptyMessage={intl.formatMessage(messages.nopending)} + emptyMessage={intl.formatMessage(messages.noRequests)} /> { @@ -101,7 +102,7 @@ const RequestItem: React.FC = ({ }); const { addToast } = useToasts(); const intl = useIntl(); - const { hasPermission } = useUser(); + const { user, hasPermission } = useUser(); const [showEditModal, setShowEditModal] = useState(false); const { locale } = useContext(LanguageContext); const url = @@ -368,6 +369,31 @@ const RequestItem: React.FC = ({
+ {requestData.status === MediaRequestStatus.PENDING && + !hasPermission(Permission.MANAGE_REQUESTS) && + requestData.requestedBy.id === user?.id && ( + deleteRequest()} + confirmText={intl.formatMessage(globalMessages.areyousure)} + className="w-full" + > + + + + + {intl.formatMessage(messages.cancelRequest)} + + + )} {requestData.media[requestData.is4k ? 'status4k' : 'status'] === MediaStatus.UNKNOWN && requestData.status !== MediaRequestStatus.DECLINED && diff --git a/src/components/RequestModal/MovieRequestModal.tsx b/src/components/RequestModal/MovieRequestModal.tsx index cc8a1ff5..536dc5a7 100644 --- a/src/components/RequestModal/MovieRequestModal.tsx +++ b/src/components/RequestModal/MovieRequestModal.tsx @@ -33,6 +33,7 @@ const messages = defineMessages({ errorediting: 'Something went wrong while editing the request.', requestedited: 'Request for {title} edited successfully!', requesterror: 'Something went wrong while submitting the request.', + pendingapproval: 'Your request is pending approval.', }); interface RequestModalProps extends React.HTMLAttributes { @@ -206,8 +207,7 @@ const MovieRequestModal: React.FC = ({ }; const isOwner = activeRequest - ? activeRequest.requestedBy.id === user?.id || - hasPermission(Permission.MANAGE_REQUESTS) + ? activeRequest.requestedBy.id === user?.id : false; if (activeRequest?.status === MediaRequestStatus.PENDING) { @@ -222,27 +222,27 @@ const MovieRequestModal: React.FC = ({ title: data?.title, } )} - onOk={() => updateRequest()} + onOk={() => (isOwner ? cancelRequest() : updateRequest())} okDisabled={isUpdating} - okText={intl.formatMessage(globalMessages.edit)} - okButtonType="primary" - onSecondary={isOwner ? () => cancelRequest() : undefined} - secondaryDisabled={isUpdating} - secondaryText={ - isUpdating - ? intl.formatMessage(globalMessages.canceling) - : intl.formatMessage(messages.cancel) + okText={ + isOwner + ? isUpdating + ? intl.formatMessage(globalMessages.canceling) + : intl.formatMessage(messages.cancel) + : intl.formatMessage(globalMessages.edit) } - secondaryButtonType="danger" + okButtonType={isOwner ? 'danger' : 'primary'} cancelText={intl.formatMessage(globalMessages.close)} iconSvg={} > - {intl.formatMessage( - is4k ? messages.request4kfrom : messages.requestfrom, - { - username: activeRequest.requestedBy.displayName, - } - )} + {isOwner + ? intl.formatMessage(messages.pendingapproval) + : intl.formatMessage( + is4k ? messages.request4kfrom : messages.requestfrom, + { + username: activeRequest.requestedBy.displayName, + } + )} {(hasPermission(Permission.REQUEST_ADVANCED) || hasPermission(Permission.MANAGE_REQUESTS)) && (
diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index 0b0e388a..f0d67ffb 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -23,7 +23,7 @@ "components.Discover.discover": "Discover", "components.Discover.discovermovies": "Popular Movies", "components.Discover.discovertv": "Popular Series", - "components.Discover.nopending": "No Pending Requests", + "components.Discover.noRequests": "No requests.", "components.Discover.popularmovies": "Popular Movies", "components.Discover.populartv": "Popular Series", "components.Discover.recentlyAdded": "Recently Added", @@ -163,6 +163,7 @@ "components.RequestCard.deleterequest": "Delete Request", "components.RequestCard.mediaerror": "The associated title for this request is no longer available.", "components.RequestCard.seasons": "{seasonCount, plural, one {Season} other {Seasons}}", + "components.RequestList.RequestItem.cancelRequest": "Cancel Request", "components.RequestList.RequestItem.deleterequest": "Delete Request", "components.RequestList.RequestItem.failedretry": "Something went wrong while retrying the request.", "components.RequestList.RequestItem.mediaerror": "The associated title for this request is no longer available.", @@ -208,6 +209,7 @@ "components.RequestModal.extras": "Extras", "components.RequestModal.numberofepisodes": "# of Episodes", "components.RequestModal.pending4krequest": "Pending Request for {title} in 4K", + "components.RequestModal.pendingapproval": "Your request is pending approval.", "components.RequestModal.pendingrequest": "Pending Request for {title}", "components.RequestModal.request4kfrom": "There is currently a pending 4K request from {username}.", "components.RequestModal.request4ktitle": "Request {title} in 4K",