brutal-legends/src/containers/album-list.ts

27 lines
857 B
TypeScript
Raw Normal View History

2020-03-05 08:07:46 +01:00
import { connect } from "react-redux";
import AlbumList from "../components/album-list";
import { selectAlbum } from "../actions";
import { Album, State } from "../interfaces";
const atos = (o: Album) =>
[o.artist, o.title, o.songs.join(" "), o.year].join(" ").toLowerCase();
const getAlbums = (albums: Array<Object>, filter: string) => {
if (filter) {
const term = filter.toLowerCase();
return albums.filter((album: Album) => atos(album).match(term));
}
return albums;
};
const mapStateToProps = (state: State) => ({
albums: getAlbums(state.albums, state.visibilityFilter),
blurred: "id" in state.selectedAlbum
});
const mapDispatchToProps = (dispatch: Function) => ({
handleOnClick: (album: Album) => dispatch(selectAlbum(album))
});
export default connect(mapStateToProps, mapDispatchToProps)(AlbumList);