From ba8ef4a84421284c0376afba03e638e2deb53877 Mon Sep 17 00:00:00 2001 From: Luca Date: Tue, 16 May 2023 22:30:04 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Allow=20opening=20media=20requests?= =?UTF-8?q?=20links=20in=20external=20host=20(#824)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Allow opening media requests links in external host * Removed useless translation files * Restored translations * 🌐 Add missing translation --------- Co-authored-by: Manuel --- public/locales/en/modules/media-requests-list.json | 5 ++++- src/pages/api/modules/media-requests/index.ts | 14 ++++++++++++-- .../media-requests/MediaRequestListTile.tsx | 7 ++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/public/locales/en/modules/media-requests-list.json b/public/locales/en/modules/media-requests-list.json index f372514bb..a1a2b6ab2 100644 --- a/public/locales/en/modules/media-requests-list.json +++ b/public/locales/en/modules/media-requests-list.json @@ -3,7 +3,10 @@ "name": "Media Requests", "description": "See a list of all media requests from your Overseerr or Jellyseerr instance", "settings": { - "title": "Media requests list" + "title": "Media requests list", + "replaceLinksWithExternalHost": { + "label": "Replace links with external host" + } } }, "noRequests": "No requests found. Please ensure that you've configured your apps correctly.", diff --git a/src/pages/api/modules/media-requests/index.ts b/src/pages/api/modules/media-requests/index.ts index 567b2f422..5cd58c167 100644 --- a/src/pages/api/modules/media-requests/index.ts +++ b/src/pages/api/modules/media-requests/index.ts @@ -5,6 +5,7 @@ import { getConfig } from '../../../../tools/config/getConfig'; import { MediaRequest } from '../../../../widgets/media-requests/media-request-types'; import { ConfigAppType } from '../../../../types/app'; +import { MediaRequestListWidget } from '../../../../widgets/media-requests/MediaRequestListTile'; const Get = async (request: NextApiRequest, response: NextApiResponse) => { const configName = getCookie('config-name', { req: request }); @@ -24,6 +25,15 @@ const Get = async (request: NextApiRequest, response: NextApiResponse) => { }) .then(async (response) => { const body = (await response.json()) as OverseerrResponse; + const mediaWidget = config.widgets.find( + (x) => x.type === 'media-requests-list') as MediaRequestListWidget | undefined; + if (!mediaWidget) { + Consola.log('No media-requests-list found'); + return Promise.resolve([]); + } + const appUrl = mediaWidget.properties.replaceLinksWithExternalHost + ? app.behaviour.externalUrl + : app.url; const requests = await Promise.all( body.results.map(async (item): Promise => { @@ -42,12 +52,12 @@ const Get = async (request: NextApiRequest, response: NextApiResponse) => { name: genericItem.name, userName: item.requestedBy.displayName, userProfilePicture: constructAvatarUrl(app, item), - userLink: `${app.url}/users/${item.requestedBy.id}`, + userLink: `${appUrl}/users/${item.requestedBy.id}`, airDate: genericItem.airDate, status: item.status, backdropPath: `https://image.tmdb.org/t/p/original/${genericItem.backdropPath}`, posterPath: `https://image.tmdb.org/t/p/w600_and_h900_bestv2/${genericItem.posterPath}`, - href: `${app.behaviour.externalUrl}/movie/${item.media.tmdbId}`, + href: `${appUrl}/movie/${item.media.tmdbId}`, }; }) ); diff --git a/src/widgets/media-requests/MediaRequestListTile.tsx b/src/widgets/media-requests/MediaRequestListTile.tsx index c9f15e1b0..493091068 100644 --- a/src/widgets/media-requests/MediaRequestListTile.tsx +++ b/src/widgets/media-requests/MediaRequestListTile.tsx @@ -24,7 +24,12 @@ import { MediaRequest, MediaRequestStatus } from './media-request-types'; const definition = defineWidget({ id: 'media-requests-list', icon: IconGitPullRequest, - options: {}, + options: { + replaceLinksWithExternalHost: { + type: 'switch', + defaultValue: true, + }, + }, component: MediaRequestListTile, gridstack: { minWidth: 3,