From 1688829cafb65d16d29a77c6ef7d387b315044aa Mon Sep 17 00:00:00 2001 From: thornbill Date: Wed, 5 Jun 2024 17:03:52 -0400 Subject: [PATCH] Backport pull request #5661 from jellyfin-web/release-10.9.z Use display missing episodes setting in search Original-merge: 2a110f6b5dd29655eb7e8d7c4682dd6658adefb5 Merged-by: thornbill Backported-by: Joshua M. Boniface --- src/components/search/SearchResults.tsx | 35 ++++++++++++++++++------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/components/search/SearchResults.tsx b/src/components/search/SearchResults.tsx index f7ab5909b3..b48ef97498 100644 --- a/src/components/search/SearchResults.tsx +++ b/src/components/search/SearchResults.tsx @@ -1,4 +1,5 @@ import type { BaseItemDto, BaseItemDtoQueryResult } from '@jellyfin/sdk/lib/generated-client'; +import { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; import type { ApiClient } from 'jellyfin-apiclient'; import classNames from 'classnames'; import React, { type FC, useCallback, useEffect, useState } from 'react'; @@ -77,16 +78,32 @@ const SearchResults: FC = ({ serverId = window.ApiClient.ser ).then(ensureNonNullItems) ), [getDefaultParameters]); - const fetchItems = useCallback((apiClient: ApiClient, params = {}) => ( - apiClient?.getItems( - apiClient.getCurrentUserId(), - { - ...getDefaultParameters(), - IncludeMedia: true, - ...params + const fetchItems = useCallback(async (apiClient?: ApiClient, params = {}) => { + if (!apiClient) { + console.error('[SearchResults] no apiClient; unable to fetch items'); + return { + Items: [] + }; + } + + const options = { + ...getDefaultParameters(), + IncludeMedia: true, + ...params + }; + + if (params.IncludeItemTypes === BaseItemKind.Episode) { + const user = await apiClient.getCurrentUser(); + if (!user?.Configuration?.DisplayMissingEpisodes) { + options.IsMissing = false; } - ).then(ensureNonNullItems) - ), [getDefaultParameters]); + } + + return apiClient.getItems( + apiClient.getCurrentUserId(), + options + ).then(ensureNonNullItems); + }, [getDefaultParameters]); const fetchPeople = useCallback((apiClient: ApiClient, params = {}) => ( apiClient?.getPeople(