fix: proper handling of multiple Lidarr servers

This commit is contained in:
Pierre
2025-04-03 17:35:40 +02:00
committed by HiItsStolas
parent 5fe04d66e5
commit c5cb163fb7
3 changed files with 36 additions and 24 deletions

View File

@@ -158,7 +158,7 @@ const AdvancedRequester = ({
useEffect(() => {
let defaultServer = data?.find(
(server) => server.isDefault && is4k === server.is4k
(server) => server.isDefault && (type === 'music' || is4k === server.is4k)
);
if (!defaultServer && (data ?? []).length > 0) {
@@ -299,7 +299,8 @@ const AdvancedRequester = ({
if (
(!data ||
selectedServer === null ||
(data.filter((server) => server.is4k === is4k).length < 2 &&
(data.filter((server) => type === 'music' || server.is4k === is4k)
.length < 2 &&
(!serverData ||
(serverData.profiles.length < 2 &&
serverData.rootFolders.length < 2 &&
@@ -318,7 +319,9 @@ const AdvancedRequester = ({
<div className="rounded-md">
{!!data && selectedServer !== null && (
<div className="flex flex-col md:flex-row">
{data.filter((server) => server.is4k === is4k).length > 1 && (
{((type === 'music' && data.length > 1) ||
(type !== 'music' &&
data.filter((server) => server.is4k === is4k).length > 1)) && (
<div className="mb-3 w-full flex-shrink-0 flex-grow last:pr-0 md:w-1/4 md:pr-4">
<label htmlFor="server">
{intl.formatMessage(messages.destinationserver)}
@@ -331,26 +334,25 @@ const AdvancedRequester = ({
onBlur={(e) => setSelectedServer(Number(e.target.value))}
className="border-gray-700 bg-gray-800"
>
{data
.filter((server) => server.is4k === is4k)
.map((server) => (
<option
key={`server-list-${server.id}`}
value={server.id}
>
{server.isDefault
? intl.formatMessage(messages.default, {
name: server.name,
})
: server.name}
</option>
))}
{(type === 'music'
? data
: data.filter((server) => server.is4k === is4k)
).map((server) => (
<option key={`server-list-${server.id}`} value={server.id}>
{server.isDefault
? intl.formatMessage(messages.default, {
name: server.name,
})
: server.name}
</option>
))}
</select>
</div>
)}
{(isValidating ||
!serverData ||
serverData.profiles.length > 1) && (
(serverData.profiles.length > 1 &&
(!serverData.server.isDefault || type !== 'music'))) && (
<div className="mb-3 w-full flex-shrink-0 flex-grow last:pr-0 md:w-1/4 md:pr-4">
<label htmlFor="profile">
{intl.formatMessage(messages.qualityprofile)}

View File

@@ -99,6 +99,7 @@ const MusicRequestModal = ({
if (!res.ok) throw new Error();
const mediaRequest: MediaRequest = await res.json();
mutate('/api/v1/request?filter=all&take=10&sort=modified&skip=0');
mutate('/api/v1/request/count');
if (mediaRequest) {
if (onComplete) {
@@ -138,6 +139,7 @@ const MusicRequestModal = ({
if (!res.ok) throw new Error();
mutate('/api/v1/request?filter=all&take=10&sort=modified&skip=0');
mutate('/api/v1/request/count');
if (res.status === 204) {
if (onComplete) {
@@ -185,6 +187,7 @@ const MusicRequestModal = ({
if (!res.ok) throw new Error();
}
mutate('/api/v1/request?filter=all&take=10&sort=modified&skip=0');
mutate('/api/v1/request/count');
addToast(
<span>

View File

@@ -13,22 +13,29 @@ interface OverrideStatus {
}
const useRequestOverride = (request: MediaRequest): OverrideStatus => {
const serviceType =
request.type === 'movie'
? 'radarr'
: request.type === 'tv'
? 'sonarr'
: 'lidarr';
const { data: allServers } = useSWR<ServiceCommonServer[]>(
`/api/v1/service/${request.type === 'movie' ? 'radarr' : 'sonarr'}`
`/api/v1/service/${serviceType}`
);
const { data } = useSWR<ServiceCommonServerWithDetails>(
`/api/v1/service/${request.type === 'movie' ? 'radarr' : 'sonarr'}/${
request.serverId
}`
`/api/v1/service/${serviceType}/${request.serverId}`
);
if (!data || !allServers) {
return {};
}
const defaultServer = allServers.find(
(server) => server.is4k === request.is4k && server.isDefault
const defaultServer = allServers.find((server) =>
request.type === 'music'
? server.isDefault
: server.is4k === request.is4k && server.isDefault
);
const activeServer = allServers.find(