diff --git a/apps/mobile/app/screens/settings/theme-selector.tsx b/apps/mobile/app/screens/settings/theme-selector.tsx index 8193b40c6..10e01bce0 100644 --- a/apps/mobile/app/screens/settings/theme-selector.tsx +++ b/apps/mobile/app/screens/settings/theme-selector.tsx @@ -86,11 +86,13 @@ function ThemeSelector() { const { colors } = useThemeColors(); const themeColors = colors; const [searchQuery, setSearchQuery] = useState(); - const [colorScheme, setColorScheme] = useState(); + const [colorScheme, setColorScheme] = useState<"all" | "dark" | "light">( + "all" + ); const filters = []; if (searchQuery) filters.push({ type: "term" as const, value: searchQuery }); - if (colorScheme) + if (colorScheme !== "all") filters.push({ type: "colorScheme" as const, value: colorScheme }); const themes = trpc.themes.useInfiniteQuery( @@ -105,6 +107,14 @@ function ThemeSelector() { } ); + if (themes?.isError) { + DatabaseLogger.error( + new Error(themes.error.message), + "themes loading error", + themes.error?.data || undefined + ); + } + const select = (item: Partial, fromFile?: boolean) => { presentSheet({ context: "theme-details", @@ -114,204 +124,209 @@ function ThemeSelector() { }); }; - const renderItem = ({ - item, - index - }: { - item: ThemeMetadata; - index: number; - }) => { - const colors = - item.previewColors || - getPreviewColors(item as unknown as ThemeDefinition); + const renderItem = React.useCallback( + ({ item, index }: { item: ThemeMetadata; index: number }) => { + const colors = + item.previewColors || + getPreviewColors(item as unknown as ThemeDefinition); - return ( - <> - select(item)} - > - + select(item)} > - {MenuItemsList.map((item, index) => ( - - - - - - ))} - - - + {MenuItemsList.map((item, index) => ( + + + + + + ))} + + + - - - {strings.dataTypesPluralCamelCase.note()} - - + + + {strings.dataTypesPluralCamelCase.note()} + + - + + + + + + {darkTheme.id === item.id || lightTheme.id === item.id ? ( + + ) : null} + +