import React, { useState } from 'react'; import { View } from 'react-native'; import { Button, Menu, IconButton, Divider, useTheme, Searchbar, } from 'react-native-paper'; import { useDispatch, useSelector } from 'react-redux'; import { RootScrollView } from '../components'; import styles from '../styles'; import { SORT, SORT_DIRECTION } from '../types'; import { getSortIcon, getViewIcon } from '../utilities'; import { RootState, cycleView, toggleSortDirection, setSortDirection, toggleFavoritesOnly, setSort, setFilter, } from '../state'; import { MEME_TYPE, memeTypePlural } from '../database'; const Home = () => { const theme = useTheme(); const sort = useSelector((state: RootState) => state.home.sort); const sortDirection = useSelector( (state: RootState) => state.home.sortDirection, ); const view = useSelector((state: RootState) => state.home.view); const favoritesOnly = useSelector( (state: RootState) => state.home.favoritesOnly, ); const filter = useSelector((state: RootState) => state.home.filter); const dispatch = useDispatch(); const [sortMenuVisible, setSortMenuVisible] = useState(false); const [filterMenuVisible, setFilterMenuVisible] = useState(false); const handleSortModeChange = (newSort: SORT) => { if (newSort === sort) { dispatch(toggleSortDirection()); } else { dispatch(setSort(newSort)); if (newSort === SORT.TITLE) { dispatch(setSortDirection(SORT_DIRECTION.ASCENDING)); } else { dispatch(setSortDirection(SORT_DIRECTION.DESCENDING)); } } setSortMenuVisible(false); }; const handleFilterChange = (newFilter: MEME_TYPE | undefined) => { dispatch(setFilter(newFilter)); setFilterMenuVisible(false); }; const [search, setSearch] = useState(''); return ( setSortMenuVisible(false)} anchor={ }> {Object.keys(SORT).map(key => { return ( handleSortModeChange(SORT[key as keyof typeof SORT]) } title={SORT[key as keyof typeof SORT]} /> ); })} dispatch(cycleView())} /> dispatch(toggleFavoritesOnly())} /> setFilterMenuVisible(false)} anchor={ setFilterMenuVisible(true)} icon={filter ? 'filter' : 'filter-outline'} iconColor={theme.colors.primary} size={18} /> }> handleFilterChange(undefined)} title="All" /> {Object.keys(MEME_TYPE).map(key => { return ( handleFilterChange(MEME_TYPE[key as keyof typeof MEME_TYPE]) } title={ memeTypePlural[MEME_TYPE[key as keyof typeof MEME_TYPE]] } /> ); })} ); }; export default Home;