feat(widgets): add missing & queued media widget for Radarr and Sonarr (#6078)
Co-authored-by: Thomas <thomas@ajnart.fr>
This commit is contained in:
1 parent
713fcd6f3f
commit
9fb2e37605
26 files changed
+930
-10
No files matched your search
@@ -0,0 +1,36 @@
|
||||
import dayjs from "dayjs";
|
||||
|
||||
import type { IntegrationKindByCategory } from "@homarr/definitions";
|
||||
import { createIntegrationAsync } from "@homarr/integrations";
|
||||
import type { IMediaOrganizerIntegration, MissingMediaItem, QueuedMediaItem } from "@homarr/integrations/types";
|
||||
|
||||
import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler";
|
||||
|
||||
interface MediaOrganizerData {
|
||||
missing: MissingMediaItem[];
|
||||
missingCount: number;
|
||||
queued: QueuedMediaItem[];
|
||||
queuedCount: number;
|
||||
}
|
||||
|
||||
export const mediaOrganizerRequestHandler = createCachedIntegrationRequestHandler<
|
||||
MediaOrganizerData,
|
||||
IntegrationKindByCategory<"mediaOrganizer">,
|
||||
{ pageSize: number }
|
||||
>({
|
||||
async requestAsync(integration, input) {
|
||||
const integrationInstance = (await createIntegrationAsync(integration)) as unknown as IMediaOrganizerIntegration;
|
||||
const [missingResult, queueResult] = await Promise.all([
|
||||
integrationInstance.getMissingAsync(input.pageSize),
|
||||
integrationInstance.getMediaQueueAsync(input.pageSize),
|
||||
]);
|
||||
return {
|
||||
missing: missingResult.items,
|
||||
missingCount: missingResult.totalCount,
|
||||
queued: queueResult.items,
|
||||
queuedCount: queueResult.totalCount,
|
||||
};
|
||||
},
|
||||
cacheDuration: dayjs.duration(1, "minute"),
|
||||
queryKey: "mediaOrganizer",
|
||||
});
|
||||
Reference in new issue
Block a user