A web app that allows Spotify users combine personal and public playlists together to either create a new one or merge selected playlist songs with an existing playlist. Also, you can reorder your personal playlist tracks with drag and drop and update playlist cover images..
Separate code that deals with Yar session management, such as setting and getting session, into an individual module to make it make code more flexible and Yar module testable (Mocha for testing).
To make sure that the user doesn't click "Load more" multiple times and causes multiple requests, we would need to set the status of the button to disabled when the redux store property of public playlists reducer is set to true.
PropType bug: bundle.js:141887 Warning: Failed prop type: The prop `myPlaylists.playlists[15].images[0].height` is marked as required in `MyPlaylists`, but its value is `null`. in MyPlaylists (created by withStyles(MyPlaylists)) in withStyles(MyPlaylists) (created by Route) in Route (created by withRouter(withStyles(MyPlaylists))) in withRouter(withStyles(MyPlaylists)) (created by Connect(withRouter(withStyles(MyPlaylists)))) in Connect(withRouter(withStyles(MyPlaylists))) (created by Route) in Route (at index.js:37) in div (created by Grid) in Grid (created by GridWrapper) in GridWrapper (created by withStyles(GridWrapper)) in withStyles(GridWrapper) (at index.js:36) in div (created by Grid) in Grid (created by GridWrapper) in GridWrapper (created by withStyles(GridWrapper)) in withStyles(GridWrapper) (at index.js:27) in Main (created by withStyles(Main)) in withStyles(Main) (at PrivateRoute.js:25) in Route (at PrivateRoute.js:22) in PrivateRoute (created by Route) in Route (created by withRouter(PrivateRoute)) in withRouter(PrivateRoute) (created by Connect(withRouter(PrivateRoute))) in Connect(withRouter(PrivateRoute)) (at App.js:27) in Switch (at App.js:25) in MuiThemeProvider (created by MuiThemeProviderWrapper) in MuiThemeProviderWrapper (at App.js:24) in App (at index.js:40) in Router (created by ConnectedRouter) in ConnectedRouter (at index.js:39) in Provider (at index.js:38)
Create a common prop called Playlist with shape of the formatted playlist. The passed object should have a formatted shape which will be done by the util function.
Currently all reducers (2 so far) are in src/reducers/index.js file. What we need to do is to create one file for each reducer (such as user.js for the user state or myplaylists.js for user playlists state) in src/reducers directory, import them in reducers/index.js file and export it from that index file. This change should not impact the way reducers are imported from files that need any of the reducers included.
This should be done after we will finish setting up Jest and will write tests. This should run all types of tests (integration, unit, functional), and output the status of the build based on the result. We will add more steps on deployment to it once we get there as well.
In the load more button, add a small number tag (surrounded by the circle or something, maybe fab button from Material UI) that displays the number of playlists from the list of playlists has not been shown yet.
The Material-UI library is currently out of date, so are other important packages. Should be upgraded and new badge that indicates that the libraries are up-to-date should be added to README.
Create a button and a functionality that is active when the user scrolls below the playlist header. Should be disabled if the user is at the top of the playlist list.
Accordion-like component that contains list of Track components
Should have a check mark to the left.
If this check mark is selected, then mark all the Track components inside of it. That means that all tracks should be included in the final merged list of tracks.
Track component contains control such as add/remove/preview/etc.
In Playlist component, add a new action/reducer/ability to search for playlists of the same category in /public route. The endpoint that will help one achieve this API method would be used:
Create an endpoint for a specific track for more information about it /api/track/:id. In the future, the plan is to have set of requests placed in the redux store.
Create new state called isAuthenticated (type: Boolean, defaultValue: False)
Create new action for that state SET_AS_AUTHENTICATED that will be used in MyPlaylists component's componentDidMount lifecycle method. In this method, make an api call to /auth route in the server that returns back a status whether the user is authenticated.