import { Platform, View } from "react-native"; import { FilterButton } from "@/components/filters/FilterButton"; import { JellyseerrSearchSort } from "@/components/jellyseerr/JellyseerrIndexPage"; // @expo/ui's SwiftUI native module (ExpoUI) does not exist in tvOS builds. // A static top-level import crashes the route tree on tvOS at module load. // Load it lazily and only off-TV; TV never renders this component. const { Button, Host, Menu } = Platform.isTV ? ({} as typeof import("@expo/ui/swift-ui")) : require("@expo/ui/swift-ui"); const { buttonStyle } = Platform.isTV ? ({} as typeof import("@expo/ui/swift-ui/modifiers")) : require("@expo/ui/swift-ui/modifiers"); interface DiscoverFiltersProps { searchFilterId: string; orderFilterId: string; jellyseerrOrderBy: JellyseerrSearchSort; setJellyseerrOrderBy: (value: JellyseerrSearchSort) => void; jellyseerrSortOrder: "asc" | "desc"; setJellyseerrSortOrder: (value: "asc" | "desc") => void; t: (key: string) => string; } const sortOptions = Object.keys(JellyseerrSearchSort).filter((v) => Number.isNaN(Number(v)), ); const orderOptions = ["asc", "desc"] as const; export const DiscoverFilters: React.FC = ({ searchFilterId, orderFilterId, jellyseerrOrderBy, setJellyseerrOrderBy, jellyseerrSortOrder, setJellyseerrSortOrder, t, }) => { if (Platform.OS === "ios" && !Platform.isTV) { return ( } > {sortOptions.map((item) => { const isSelected = jellyseerrOrderBy === (item as unknown as JellyseerrSearchSort); return ( {orderOptions.map((item) => { const isSelected = jellyseerrSortOrder === item; return ( ); } // Android UI return ( Object.keys(JellyseerrSearchSort).filter((v) => Number.isNaN(Number(v)), ) } set={(value) => setJellyseerrOrderBy(value[0])} values={[jellyseerrOrderBy]} title={t("library.filters.sort_by")} renderItemLabel={(item) => t(`home.settings.plugins.jellyseerr.order_by.${item}`) } disableSearch={true} /> ["asc", "desc"]} set={(value) => setJellyseerrSortOrder(value[0])} values={[jellyseerrSortOrder]} title={t("library.filters.sort_order")} renderItemLabel={(item) => t(`library.filters.${item}`)} disableSearch={true} /> ); };