import { Favorite, FavoritesFilters, FavoritesFiltersSortByOptions, } from '../redux-types/favorites.redux-types'; export const getFilteredData = ( data: Favorite[], filters: FavoritesFilters, ): Favorite[] => { const { category, instrument, sortBy, type } = filters; return data .filter(favorite => (category ? favorite.category === category : true)) .filter( favorite => instrument ? favorite.instrument.includes(instrument) : true, ) .filter(favorite => (type ? favorite.type === type : true)) .sort( (a, b): number => { switch (sortBy) { case FavoritesFiltersSortByOptions.RECENT: return new Date(a.dateAdded) > new Date(b.dateAdded) ? -1 : 1; case FavoritesFiltersSortByOptions.ALPHABETICAL: return b.title > a.title ? -1 : 1; case FavoritesFiltersSortByOptions.REVERSE_ALPHABETICAL: return a.title > b.title ? -1 : 1; default: return 0; } }, ); };