Untitled

Anonymous
plain_text
02/18/2026 5:45 AM
2.5 KB
10
Indexable
interface HomeScreenSection {
	// Identification
	id: string;
	name: string;
	enabled: boolean;
	order: number;
	sectionType?: string;

	// Display Options
	cardFormat?: "Poster" | "Thumb" | "Backdrop" | "Random";
	spotlight?: boolean; // Legacy: Use renderMode instead. Kept for backward compatibility.
	renderMode?: "Normal" | "Spotlight" | "Random"; // Preferred: Controls rendering mode. "Spotlight" = spotlight section, "Random" = random spotlight/cards, "Normal" = cards only.
	spotlightConfig?: object;
	discoveryEnabled?: boolean;
	flattenSeries?: boolean;
	minimumItems?: number;
	viewMoreUrl?: string;
	hidden?: boolean;

	// Multi-Query Sorting (only used when queries.length > 1)
	sortBy?: string; // Field to sort merged results by (e.g., 'DatePlayed', 'DateCreated')
	sortOrder?: "Ascending" | "Descending"; // Sort direction for merged results

	// Query Construction
	queries: Array<{
		path?: string; // Custom endpoint path (e.g., '/Shows/NextUp', '/Shows/Upcoming')
		dataSource?: string; // Cache/custom data source (e.g., 'MoviesCache.getImdbTop250Movies')
		minAge?: number; // Minimum age in days
		maxAge?: number; // Maximum age in days
		queryOptions?: {
			// Query parameters for /Items or custom endpoints
			IncludeItemTypes?: string[];
			SearchTerm?: string;
			SortBy?: string;
			SortOrder?: "Ascending" | "Descending";
			Limit?: number;
			Filters?: string;
			Genres?: string;
			GenreIds?: string;
			Tags?: string;
			PersonIds?: string;
			Studios?: string;
			StudioIds?: string;
			ParentId?: string;
			ExcludeItemIds?: string;
			[key: string]: any; // Allow additional query params
		};
	}>;

	// Legacy Support (for migration)
	type?: string; // Will be deprecated
	source?: string; // Will be deprecated

	// Seasonal Config
	startDate?: string;
	endDate?: string;

	// Cache Settings
	ttl?: number;
}
Editor is loading...
Leave a Comment