fix: correct "Remove from *arr" button (#1544)

This PR fixes the "Delete from *arr" button in the request list. It checks from the API whether the
*arr server corresponding to the request still exists before displaying the remove button, and fixes
a cache removal issue that could cause problems when deleting recently added media. This PR also
reverts #1476, which introduced problems during removal.

fix #1494
This commit is contained in:
Gauthier
2025-03-31 20:06:33 +02:00
committed by GitHub
parent 63dc27d400
commit 8dc1d8196c
8 changed files with 75 additions and 90 deletions

View File

@@ -189,7 +189,7 @@ requestRoutes.get<Record<string, unknown>, RequestResultsResponse>(
);
// add profile names to the media requests, with undefined if not found
const requestsWithProfileNames = requests.map((r) => {
let mappedRequests = requests.map((r) => {
switch (r.type) {
case MediaType.MOVIE: {
const profileName = radarrServers
@@ -212,6 +212,36 @@ requestRoutes.get<Record<string, unknown>, RequestResultsResponse>(
}
});
// add canRemove prop if user has permission
if (req.user?.hasPermission(Permission.MANAGE_REQUESTS)) {
mappedRequests = mappedRequests.map((r) => {
switch (r.type) {
case MediaType.MOVIE: {
return {
...r,
// check if the radarr server for this request is configured
canRemove: radarrServers.some(
(server) =>
server.id ===
(r.is4k ? r.media.serviceId4k : r.media.serviceId)
),
};
}
case MediaType.TV: {
return {
...r,
// check if the sonarr server for this request is configured
canRemove: sonarrServers.some(
(server) =>
server.id ===
(r.is4k ? r.media.serviceId4k : r.media.serviceId)
),
};
}
}
});
}
return res.status(200).json({
pageInfo: {
pages: Math.ceil(requestCount / pageSize),
@@ -219,7 +249,7 @@ requestRoutes.get<Record<string, unknown>, RequestResultsResponse>(
results: requestCount,
page: Math.ceil(skip / pageSize) + 1,
},
results: requestsWithProfileNames,
results: mappedRequests,
});
} catch (e) {
next({ status: 500, message: e.message });