diff --git a/packages/api/src/router/widgets/media-requests.ts b/packages/api/src/router/widgets/media-requests.ts index 8469b3b31..9f024b30a 100644 --- a/packages/api/src/router/widgets/media-requests.ts +++ b/packages/api/src/router/widgets/media-requests.ts @@ -2,7 +2,7 @@ import { observable } from "@trpc/server/observable"; import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; -import { integrationCreator, MediaRequestStatus } from "@homarr/integrations"; +import { integrationCreator } from "@homarr/integrations"; import type { MediaRequest } from "@homarr/integrations/types"; import { mediaRequestListRequestHandler } from "@homarr/request-handler/media-request-list"; import { mediaRequestStatsRequestHandler } from "@homarr/request-handler/media-request-stats"; @@ -30,14 +30,12 @@ export const mediaRequestsRouter = createTRPCRouter({ ); return results .flatMap(({ data, integration }) => data.map((request) => ({ ...request, integrationId: integration.id }))) - .sort(({ status: statusA }, { status: statusB }) => { - if (statusA === MediaRequestStatus.PendingApproval) { - return -1; + .sort((dataA, dataB) => { + if (dataA.status === dataB.status) { + return dataB.createdAt.getTime() - dataA.createdAt.getTime(); } - if (statusB === MediaRequestStatus.PendingApproval) { - return 1; - } - return 0; + + return dataA.status - dataB.status; }); }), subscribeToLatestRequests: publicProcedure diff --git a/packages/widgets/src/media-requests/list/component.tsx b/packages/widgets/src/media-requests/list/component.tsx index 106ca07c4..181ce6b53 100644 --- a/packages/widgets/src/media-requests/list/component.tsx +++ b/packages/widgets/src/media-requests/list/component.tsx @@ -41,14 +41,12 @@ export default function MediaServerWidget({ const newData = filteredData.concat( data.requests.map((request) => ({ ...request, integrationId: data.integrationId })), ); - return newData.sort(({ status: statusA }, { status: statusB }) => { - if (statusA === MediaRequestStatus.PendingApproval) { - return -1; + return newData.sort((dataA, dataB) => { + if (dataA.status === dataB.status) { + return dataB.createdAt.getTime() - dataA.createdAt.getTime(); } - if (statusB === MediaRequestStatus.PendingApproval) { - return 1; - } - return 0; + + return dataA.status - dataB.status; }); }); }, @@ -69,7 +67,7 @@ export default function MediaServerWidget({ {mediaRequests.map((mediaRequest) => (