From 90095bb18548dfd663a78df1908c40dbf2f99faf Mon Sep 17 00:00:00 2001 From: Danshil Kokil Mungur Date: Mon, 23 May 2022 04:49:35 +0400 Subject: [PATCH] feat(manage slideover): show more request override details (#2772) * feat(manage slideover): show the language profile if request is for a show * feat(manage slideover): show name of profiles instead of id --- src/components/RequestBlock/index.tsx | 18 +++++++--- src/hooks/useRequestOverride.ts | 50 ++++++++++++++++++--------- src/i18n/locale/en.json | 1 + 3 files changed, 48 insertions(+), 21 deletions(-) diff --git a/src/components/RequestBlock/index.tsx b/src/components/RequestBlock/index.tsx index 073ffaeb..d1d4ae8a 100644 --- a/src/components/RequestBlock/index.tsx +++ b/src/components/RequestBlock/index.tsx @@ -26,6 +26,7 @@ const messages = defineMessages({ server: 'Destination Server', profilechanged: 'Quality Profile', rootfolder: 'Root Folder', + languageprofile: 'Language Profile', }); interface RequestBlockProps { @@ -38,7 +39,8 @@ const RequestBlock: React.FC = ({ request, onUpdate }) => { const intl = useIntl(); const [isUpdating, setIsUpdating] = useState(false); const [showEditModal, setShowEditModal] = useState(false); - const { profile, rootFolder, server } = useRequestOverride(request); + const { profile, rootFolder, server, languageProfile } = + useRequestOverride(request); const updateRequest = async (type: 'approve' | 'decline'): Promise => { setIsUpdating(true); @@ -209,7 +211,7 @@ const RequestBlock: React.FC = ({ request, onUpdate }) => { )} - {(server || profile !== null || rootFolder) && ( + {(server || profile || rootFolder || languageProfile) && ( <>
{intl.formatMessage(messages.requestoverrides)} @@ -223,12 +225,12 @@ const RequestBlock: React.FC = ({ request, onUpdate }) => { {server} )} - {profile !== null && ( + {profile && (
  • {intl.formatMessage(messages.profilechanged)} - ID {profile} + {profile}
  • )} {rootFolder && ( @@ -239,6 +241,14 @@ const RequestBlock: React.FC = ({ request, onUpdate }) => { {rootFolder} )} + {languageProfile && ( +
  • + + {intl.formatMessage(messages.languageprofile)} + + {languageProfile} +
  • + )} )} diff --git a/src/hooks/useRequestOverride.ts b/src/hooks/useRequestOverride.ts index ba791f99..be992e8b 100644 --- a/src/hooks/useRequestOverride.ts +++ b/src/hooks/useRequestOverride.ts @@ -1,45 +1,61 @@ import useSWR from 'swr'; import { MediaRequest } from '../../server/entity/MediaRequest'; -import { ServiceCommonServer } from '../../server/interfaces/api/serviceInterfaces'; +import { + ServiceCommonServer, + ServiceCommonServerWithDetails, +} from '../../server/interfaces/api/serviceInterfaces'; interface OverrideStatus { - server: string | null; - profile: number | null; - rootFolder: string | null; + server?: string; + profile?: string; + rootFolder?: string; + languageProfile?: string; } const useRequestOverride = (request: MediaRequest): OverrideStatus => { - const { data } = useSWR( + const { data: allServers } = useSWR( `/api/v1/service/${request.type === 'movie' ? 'radarr' : 'sonarr'}` ); - if (!data) { - return { - server: null, - profile: null, - rootFolder: null, - }; + const { data } = useSWR( + `/api/v1/service/${request.type === 'movie' ? 'radarr' : 'sonarr'}/${ + request.serverId + }` + ); + + if (!data || !allServers) { + return {}; } - const defaultServer = data.find( + const defaultServer = allServers.find( (server) => server.is4k === request.is4k && server.isDefault ); - const activeServer = data.find((server) => server.id === request.serverId); + const activeServer = allServers.find( + (server) => server.id === request.serverId + ); return { server: activeServer && request.serverId !== defaultServer?.id ? activeServer.name - : null, + : undefined, profile: defaultServer?.activeProfileId !== request.profileId - ? request.profileId - : null, + ? data.profiles.find((profile) => profile.id === request.profileId) + ?.name + : undefined, rootFolder: defaultServer?.activeDirectory !== request.rootFolder ? request.rootFolder - : null, + : undefined, + languageProfile: + request.type === 'tv' && + defaultServer?.activeLanguageProfileId !== request.languageProfileId + ? data.languageProfiles?.find( + (profile) => profile.id === request.languageProfileId + )?.name + : undefined, }; }; diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index 6bcb3932..84b77f79 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -269,6 +269,7 @@ "components.QuotaSelector.unlimited": "Unlimited", "components.RegionSelector.regionDefault": "All Regions", "components.RegionSelector.regionServerDefault": "Default ({region})", + "components.RequestBlock.languageprofile": "Language Profile", "components.RequestBlock.profilechanged": "Quality Profile", "components.RequestBlock.requestoverrides": "Request Overrides", "components.RequestBlock.rootfolder": "Root Folder",