Code Monkey home page Code Monkey logo

spotifymanager's People

Contributors

staijn1 avatar

Watchers

 avatar  avatar

spotifymanager's Issues

More in-depth comparison

Issue #2 calls for a simplification of the comparing process, which has now been implemented.

However, the more simple solution lacks some features that the old one had, but in a complicated way.

The current, simpler implementation does not let the user know that a song has been removed in the current original playlist vs the original playlist at the time of remixing.

How it will work:

  • When remixing a playlist, store the current original playlist in a file / database, with a reference to the remixed playlist too.
  • When syncing a remixed playlist, look up the state of the original playlist at the time of remixing, and compare it to the original playlist now.
  • Then compare the original playlist now with the remixed playlist now.

Here are some example states

Original Playlist at Remix Original Playlist Now Remixed Playlist Now
Song A (removed) Song A
Song B Song B Song B
Song C Song C (removed)
Song D Song F (added) Song D
Song E Song D Song G
Song E Song E

The comparison view to sync should display:

Song Diff
Song A removed-in-original
Song B unchanged
Song C removed-in-remix
Song D unchanged
Song E unchanged
Song F added-in-original
Song G added-in-remix

Do not stop preview when an action is pressed on another song

Currently, the song preview is stopped when you click one of the actions (add song back or keep removed).
When the preview is playing for song A, and an action is done for B, the preview is stopped, but that should not happen.

Only when the user performs an action for the song he is previewing, the preview should be stopped.

Optimize getAllTracksInPlaylist to request all pages at the same time

In the getAllTracksPlaylist method, each page of tracks in a playlist is requested one by one. We can optimize this method by using Promise.All() to fire all requests at the same time and awaiting all of them. This will be faster than requesting a page, awaiting the result, requesting the next and so on.

'Padding' of tracks in playlist compare page

Add "padding" to the list of songs in the compare page, to make sure unchanged songs are at the same level.

As an example, let's take the following scenario:

Current Remixed Playlist Synced Result Current Original Playlist
Track A Track A Track A
Track B Track B Track B
Track C Track D Track F
Track D Track E Track D
Track E Track E

The desired layout of the page in this scenario is:

Current Remixed Playlist Synced Result Current Original Playlist
Track A Track A Track A
Track B Track B Track B
Track C (placeholder) Track F
Track D Track D Track D
Track E Track E Track E

Because track C and track F are changed (they are not in both playlists), the user can decide what will happen to these songs.
If the user decides to add track C back, the desired layout of the page in that scenario is:

Current Remixed Playlist Synced Result Current Original Playlist
Track A Track A Track A
Track B Track B Track B
Track C Track C (placeholder)
(placeholder) (placeholder) Track F
Track D Track D Track D
Track E Track E Track E

The placeholder should be a component similar to the spotify-track component but with different styling to make it clear it's a placeholder (e.g. maybe make it greyed out, dotted borders or something else)

Syncing playlists is unnecessarily complicated

To sync a playlist, currently you need to compare the Current original playlist vs the Playlist at the time of Remixing.

This can be simplified since the current remixed playlists already has the songs from the playlist at the time of remixing (minus the ones the user did not like, and added with custom songs)

So only current original playlist needs to be compared with current remixed playlist

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.