diff --git a/components/settings/HomeIndex.tsx b/components/settings/HomeIndex.tsx index a212f0a8..4c8ea274 100644 --- a/components/settings/HomeIndex.tsx +++ b/components/settings/HomeIndex.tsx @@ -2,6 +2,7 @@ import { Feather, Ionicons } from "@expo/vector-icons"; import type { Api } from "@jellyfin/sdk"; import type { BaseItemDto, + BaseItemDtoQueryResult, BaseItemKind, } from "@jellyfin/sdk/lib/generated-client/models"; import { @@ -356,6 +357,16 @@ export const HomeIndex = () => { }); return response.data || []; } + if (section.custom) { + const response = await api.get( + section.custom.endpoint, + { + params: { ...(section.custom.query || {}), userId: user?.Id }, + headers: section.custom.headers || {}, + }, + ); + return response.data.Items || []; + } return []; }, type: "ScrollingCollectionList", diff --git a/utils/atoms/settings.ts b/utils/atoms/settings.ts index d7edeb20..03c4e3a8 100644 --- a/utils/atoms/settings.ts +++ b/utils/atoms/settings.ts @@ -93,6 +93,7 @@ export type HomeSection = { items?: HomeSectionItemResolver; nextUp?: HomeSectionNextUpResolver; latest?: HomeSectionLatestResolver; + custom?: HomeSectionCustomEndpointResolver; }; export type HomeSectionItemResolver = { @@ -106,6 +107,13 @@ export type HomeSectionItemResolver = { filters?: Array; }; +export type HomeSectionCustomEndpointResolver = { + title?: string; + endpoint: string; + headers?: any; + query?: any; +}; + export type HomeSectionNextUpResolver = { parentId?: string; limit?: number;