From 1ff73e3aab0d503f70085b649b91ce66cd75ec6c Mon Sep 17 00:00:00 2001 From: Thomas Loubiou Date: Fri, 2 Feb 2024 23:01:50 +0100 Subject: [PATCH 1/4] feat: allow requests managers to delete media files --- .../RequestList/RequestItem/index.tsx | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/src/components/RequestList/RequestItem/index.tsx b/src/components/RequestList/RequestItem/index.tsx index a4ad2a442..7d742ed8a 100644 --- a/src/components/RequestList/RequestItem/index.tsx +++ b/src/components/RequestList/RequestItem/index.tsx @@ -41,6 +41,7 @@ const messages = defineMessages({ tmdbid: 'TMDB ID', tvdbid: 'TheTVDB ID', unknowntitle: 'Unknown Title', + removearr: 'Remove from {arr}', }); const isMovie = (movie: MovieDetails | TvDetails): movie is MovieDetails => { @@ -320,6 +321,14 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => { revalidateList(); }; + const deleteMediaFile = async () => { + if (request.media) { + await axios.delete(`/api/v1/media/${request.media.id}/file`); + await axios.delete(`/api/v1/media/${request.media.id}`); + revalidateList(); + } + }; + const retryRequest = async () => { setRetrying(true); @@ -622,14 +631,28 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => { )} {requestData.status !== MediaRequestStatus.PENDING && hasPermission(Permission.MANAGE_REQUESTS) && ( - deleteRequest()} - confirmText={intl.formatMessage(globalMessages.areyousure)} - className="w-full" - > - - {intl.formatMessage(messages.deleterequest)} - + <> + deleteRequest()} + confirmText={intl.formatMessage(globalMessages.areyousure)} + className="w-full" + > + + {intl.formatMessage(messages.deleterequest)} + + deleteMediaFile()} + confirmText={intl.formatMessage(globalMessages.areyousure)} + className="w-full" + > + + + {intl.formatMessage(messages.removearr, { + arr: request.type === 'movie' ? 'Radarr' : 'Sonarr', + })} + + + )} {requestData.status === MediaRequestStatus.PENDING && hasPermission(Permission.MANAGE_REQUESTS) && ( From 2f7422b312b3c2585fe021e1493a4f9cd70cd8af Mon Sep 17 00:00:00 2001 From: Thomas Loubiou Date: Fri, 2 Feb 2024 23:12:51 +0100 Subject: [PATCH 2/4] fix(i18n): add missing translations --- src/i18n/locale/en.json | 1 + src/i18n/locale/fr.json | 1 + 2 files changed, 2 insertions(+) diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index 71126cc2d..09f4e559c 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -272,6 +272,7 @@ "components.ManageSlideOver.plays": "{playCount, number} {playCount, plural, one {play} other {plays}}", "components.ManageSlideOver.removearr": "Remove from {arr}", "components.ManageSlideOver.removearr4k": "Remove from 4K {arr}", + "components.RequestList.RequestItem.removearr": "Remove from {arr}", "components.ManageSlideOver.tvshow": "series", "components.MediaSlider.ShowMoreCard.seemore": "See More", "components.MovieDetails.MovieCast.fullcast": "Full Cast", diff --git a/src/i18n/locale/fr.json b/src/i18n/locale/fr.json index 90728ba5b..410e40ae8 100644 --- a/src/i18n/locale/fr.json +++ b/src/i18n/locale/fr.json @@ -1158,6 +1158,7 @@ "components.MovieDetails.imdbuserscore": "Note Utilisateurs", "components.ManageSlideOver.manageModalRemoveMediaWarning": "* Cela supprimera irréversiblement ce(tte) {mediaType} de {arr}, y compris tous les fichiers.", "components.ManageSlideOver.removearr": "Supprimer de {arr}", + "components.RequestList.RequestItem.removearr": "Supprimer de {arr}", "components.ManageSlideOver.removearr4k": "Supprimer de {arr} 4K", "components.MovieDetails.downloadstatus": "Statut du téléchargement", "components.MovieDetails.managemovie": "Gérer le film", From ceb8ce9c3395bdf3343d146612074b9a882ae0ec Mon Sep 17 00:00:00 2001 From: Thomas Loubiou Date: Thu, 18 Apr 2024 12:26:11 +0200 Subject: [PATCH 3/4] fix(i18n): remove french translation --- src/i18n/locale/fr.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/i18n/locale/fr.json b/src/i18n/locale/fr.json index 410e40ae8..90728ba5b 100644 --- a/src/i18n/locale/fr.json +++ b/src/i18n/locale/fr.json @@ -1158,7 +1158,6 @@ "components.MovieDetails.imdbuserscore": "Note Utilisateurs", "components.ManageSlideOver.manageModalRemoveMediaWarning": "* Cela supprimera irréversiblement ce(tte) {mediaType} de {arr}, y compris tous les fichiers.", "components.ManageSlideOver.removearr": "Supprimer de {arr}", - "components.RequestList.RequestItem.removearr": "Supprimer de {arr}", "components.ManageSlideOver.removearr4k": "Supprimer de {arr} 4K", "components.MovieDetails.downloadstatus": "Statut du téléchargement", "components.MovieDetails.managemovie": "Gérer le film", From c661f0944522e74c1d9556799a64261eb02f6490 Mon Sep 17 00:00:00 2001 From: Thomas Loubiou Date: Wed, 18 Sep 2024 20:47:27 +0200 Subject: [PATCH 4/4] refactor: use fetch API --- src/components/RequestList/RequestItem/index.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/RequestList/RequestItem/index.tsx b/src/components/RequestList/RequestItem/index.tsx index 7d742ed8a..2afd3f4f6 100644 --- a/src/components/RequestList/RequestItem/index.tsx +++ b/src/components/RequestList/RequestItem/index.tsx @@ -323,8 +323,12 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => { const deleteMediaFile = async () => { if (request.media) { - await axios.delete(`/api/v1/media/${request.media.id}/file`); - await axios.delete(`/api/v1/media/${request.media.id}`); + await fetch(`/api/v1/media/${request.media.id}/file`, { + method: 'DELETE', + }); + await fetch(`/api/v1/media/${request.media.id}`, { + method: 'DELETE', + }); revalidateList(); } };