diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx index 379ebef3b..2f610328a 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx @@ -149,7 +149,8 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => }; const integrationCategories = integrationDefs[searchParams.kind].category.flat(); - const supportsSearchEngine = integrationCategories.includes("search") && !integrationCategories.includes("mediaSearch"); + const supportsSearchEngine = + integrationCategories.includes("search") && !integrationCategories.includes("mediaSearch"); return (
void handleSubmitAsync(value))}> diff --git a/packages/api/src/router/integration/integration-router.ts b/packages/api/src/router/integration/integration-router.ts index 8d9f18ffc..4375644cc 100644 --- a/packages/api/src/router/integration/integration-router.ts +++ b/packages/api/src/router/integration/integration-router.ts @@ -82,7 +82,7 @@ export const integrationRouter = createTRPCRouter({ }, }; }) - .sort( + .toSorted( (integrationA, integrationB) => integrationKinds.indexOf(integrationA.kind) - integrationKinds.indexOf(integrationB.kind), ); @@ -130,7 +130,7 @@ export const integrationRouter = createTRPCRouter({ }, }; }) - .sort( + .toSorted( (integrationA, integrationB) => integrationKinds.indexOf(integrationA.kind) - integrationKinds.indexOf(integrationB.kind), ); @@ -181,7 +181,7 @@ export const integrationRouter = createTRPCRouter({ }, }; }) - .sort( + .toSorted( (integrationA, integrationB) => integrationKinds.indexOf(integrationA.kind) - integrationKinds.indexOf(integrationB.kind), ); @@ -484,7 +484,7 @@ export const integrationRouter = createTRPCRouter({ }); return { - inherited: dbGroupPermissions.sort((permissionA, permissionB) => { + inherited: dbGroupPermissions.toSorted((permissionA, permissionB) => { return permissionA.group.name.localeCompare(permissionB.group.name); }), users: userPermissions @@ -492,7 +492,7 @@ export const integrationRouter = createTRPCRouter({ user, permission, })) - .sort((permissionA, permissionB) => { + .toSorted((permissionA, permissionB) => { return (permissionA.user.name ?? "").localeCompare(permissionB.user.name ?? ""); }), groups: dbGroupIntegrationPermission @@ -503,7 +503,7 @@ export const integrationRouter = createTRPCRouter({ }, permission, })) - .sort((permissionA, permissionB) => { + .toSorted((permissionA, permissionB) => { return permissionA.group.name.localeCompare(permissionB.group.name); }), }; diff --git a/packages/integrations/src/overseerr/overseerr-integration.ts b/packages/integrations/src/overseerr/overseerr-integration.ts index 7710779ed..255642cde 100644 --- a/packages/integrations/src/overseerr/overseerr-integration.ts +++ b/packages/integrations/src/overseerr/overseerr-integration.ts @@ -115,9 +115,7 @@ export class OverseerrIntegration const response = await client.fetchAsync(url); const data = await mediaInformationSchema.parseAsync(await response.json()); const requestedSeasons = [ - ...new Set( - data.mediaInfo?.requests?.flatMap((req) => req.seasons.map((s) => s.seasonNumber)) ?? [], - ), + ...new Set(data.mediaInfo?.requests?.flatMap((req) => req.seasons.map((s) => s.seasonNumber)) ?? []), ]; const { mediaInfo: _strip, ...rest } = data; return { ...rest, requestedSeasons }; @@ -290,43 +288,47 @@ export class OverseerrIntegration public async approveRequestAsync(requestId: number): Promise { logger.info("Approving media request", { requestId, integration: this.integration.name }); const client = await this.createFetchClientAsync(); - await client.fetchUncheckedAsync(this.url(`/api/v1/request/${requestId}/approve`), { - method: "POST", - }).then((response) => { - if (!response.ok) { - logger.error( - new ErrorWithMetadata("Failed to approve media request", { - requestId, - integration: this.integration.name, - reason: `${response.status} ${response.statusText}`, - url: response.url, - }), - ); - } + await client + .fetchUncheckedAsync(this.url(`/api/v1/request/${requestId}/approve`), { + method: "POST", + }) + .then((response) => { + if (!response.ok) { + logger.error( + new ErrorWithMetadata("Failed to approve media request", { + requestId, + integration: this.integration.name, + reason: `${response.status} ${response.statusText}`, + url: response.url, + }), + ); + } - logger.info("Successfully approved media request", { requestId, integration: this.integration.name }); - }); + logger.info("Successfully approved media request", { requestId, integration: this.integration.name }); + }); } public async declineRequestAsync(requestId: number): Promise { logger.info("Declining media request", { requestId, integration: this.integration.name }); const client = await this.createFetchClientAsync(); - await client.fetchUncheckedAsync(this.url(`/api/v1/request/${requestId}/decline`), { - method: "POST", - }).then((response) => { - if (!response.ok) { - logger.error( - new ErrorWithMetadata("Failed to decline media request", { - requestId, - integration: this.integration.name, - reason: `${response.status} ${response.statusText}`, - url: response.url, - }), - ); - } + await client + .fetchUncheckedAsync(this.url(`/api/v1/request/${requestId}/decline`), { + method: "POST", + }) + .then((response) => { + if (!response.ok) { + logger.error( + new ErrorWithMetadata("Failed to decline media request", { + requestId, + integration: this.integration.name, + reason: `${response.status} ${response.statusText}`, + url: response.url, + }), + ); + } - logger.info("Successfully declined media request", { requestId, integration: this.integration.name }); - }); + logger.info("Successfully declined media request", { requestId, integration: this.integration.name }); + }); } private async getItemInformationAsync( @@ -386,13 +388,21 @@ const mediaInformationFromResponse = { }), } satisfies Record MediaInformation>; -const mediaInfoRequestsSchema = z.object({ - requests: z.array(z.object({ - seasons: z.array(z.object({ - seasonNumber: z.number(), - })), - })).optional(), -}).optional(); +const mediaInfoRequestsSchema = z + .object({ + requests: z + .array( + z.object({ + seasons: z.array( + z.object({ + seasonNumber: z.number(), + }), + ), + }), + ) + .optional(), + }) + .optional(); const mediaInformationSchema = z.union([ z.object({ @@ -418,9 +428,11 @@ const mediaInformationSchema = z.union([ }), ]); -const searchMediaInfoSchema = z.object({ - status: z.number(), -}).optional(); +const searchMediaInfoSchema = z + .object({ + status: z.number(), + }) + .optional(); const searchSchema = z.object({ results: z diff --git a/packages/spotlight/src/modes/home/home-search-engine-group.tsx b/packages/spotlight/src/modes/home/home-search-engine-group.tsx index 0bd304e23..799d2216d 100644 --- a/packages/spotlight/src/modes/home/home-search-engine-group.tsx +++ b/packages/spotlight/src/modes/home/home-search-engine-group.tsx @@ -78,12 +78,8 @@ export const homeSearchEngineGroup = createGroup({ return { isLoading: - defaultSearchEngineQuery.isLoading || - (resultQuery.isLoading && fromIntegrationEnabled) || - status === "loading", - isError: - defaultSearchEngineQuery.isError || - (resultQuery.isError && fromIntegrationEnabled), + defaultSearchEngineQuery.isLoading || (resultQuery.isLoading && fromIntegrationEnabled) || status === "loading", + isError: defaultSearchEngineQuery.isError || (resultQuery.isError && fromIntegrationEnabled), data: createDefaultSearchEntries(defaultSearchEngine, results, session, query, t), }; }, diff --git a/packages/spotlight/src/modes/media/media-request-search-group.tsx b/packages/spotlight/src/modes/media/media-request-search-group.tsx index fc27792be..36a83f202 100644 --- a/packages/spotlight/src/modes/media/media-request-search-group.tsx +++ b/packages/spotlight/src/modes/media/media-request-search-group.tsx @@ -72,7 +72,11 @@ export const mediaRequestSearchGroup = createGroup({ {result.name} - {badgeLabel && {badgeLabel}} + {badgeLabel && ( + + {badgeLabel} + + )} {result.text ?? getIntegrationName(result.integration.kind)} diff --git a/packages/widgets/src/media-requests/list/component.tsx b/packages/widgets/src/media-requests/list/component.tsx index f93ccacc3..3a17c5e0f 100644 --- a/packages/widgets/src/media-requests/list/component.tsx +++ b/packages/widgets/src/media-requests/list/component.tsx @@ -58,7 +58,7 @@ export default function MediaServerWidget({ const newData = filteredData.concat( data.requests.map((request) => ({ ...request, integrationId: data.integrationId })), ); - return newData.sort((dataA, dataB) => { + return newData.toSorted((dataA, dataB) => { if (dataA.status === dataB.status) { return dataB.createdAt.getTime() - dataA.createdAt.getTime(); } diff --git a/packages/widgets/src/media-requests/stats/component.tsx b/packages/widgets/src/media-requests/stats/component.tsx index 5f5bddbf7..2960d7ae6 100644 --- a/packages/widgets/src/media-requests/stats/component.tsx +++ b/packages/widgets/src/media-requests/stats/component.tsx @@ -120,13 +120,7 @@ export default function MediaServerWidget({ > - + {stat.number} @@ -142,13 +136,7 @@ export default function MediaServerWidget({ {t("titles.users.main")} ({t("titles.users.requests")}) - + {requestStats.users.slice(0, 10).map((user) => ( - +