fix: proper handling of multiple Lidarr servers
This commit is contained in:
@@ -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)}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user