Redux Controls Slice API Reference
This API reference documents the Redux controls slice used for managing music player state including playlists, playback, history, favorites, and audio controls.
Playlist Management
addRecommendationInThePlaylist(songs: SongReduxPlaylistSchema[])
Appends new songs to the end of the existing playlist without changing the active song.
addSongsInThePlaylist(songs: SongReduxPlaylistSchema[])
Replaces the entire playlist with a new set of songs and sets the active song index to 0.
- Clears existing playlist
- Sets
activeSongIndex
to 0 - Sets
isPlaying
to false - Sets
isReady
to false
History Management
addActiveSongInTheHistory()
Adds the currently active song to the history.
- If the song already exists in history, it's removed from its current position
- The song is then added to the beginning of the history array
Favorites Management
addSongInTheFavourites({ songId: string })
Adds a song to the favorites collection.
- Adds the songId to the beginning of the favorites array
removeSongFromTheFavourites({ songId: string })
Removes a song from the favorites collection.
- Filters out the specified songId from the favorites array
Playback Control
changeActiveSongTrackByStep(step: number)
Changes the active song by a relative step (forward or backward).
- Validates that the new index is within bounds
- Resets progress indicators
- Sets
isPlaying
to false - Sets
isReady
to false
changeActiveSongTrack({ songId: string })
Changes the active song to a specific song by its ID.
- Finds the song index in the playlist
- Resets progress indicators
- Sets
isPlaying
to false - Sets
isReady
to false
setActiveSongIndex(index: number)
Directly sets the active song index without changing other playback states.
setIsReady(isReady: boolean)
Sets whether the current song is ready for playback.
setIsPlaying(isPlaying: boolean)
Sets the playing state of the current song.
setRepeatOfActiveSong(loop: boolean)
Sets whether the active song should loop when it ends.
Playback Progress
setBufferedProgress(buffered: number)
Sets the buffered duration of the active song.
setTotalSongDuration(duration: number)
Sets the total duration of the active song.
setSeekProgress(progress: number)
Sets the current playback position of the active song.
setIsSeeking(isSeeking: boolean)
Sets whether the user is currently seeking within the track.
setActiveSongPlayback({ seekPercentage?: number; seekTime?: number })
Sets the playback position of the active song either by percentage or absolute time.
- Accepts either
seekPercentage
(0-100) orseekTime
(seconds) - Throws an error if both are provided
- Sets
isSeeking
to true
Volume Control
setVolume(volume: number)
Sets the playback volume (0 to 1).
- Throws an error if the volume is outside the 0-1 range
Selectors
Playlist Selectors
selectPlaylistSongs(state)
Returns the full array of songs in the current playlist.
selectActiveSongIndex(state)
Returns the current active song index.
selectActiveSong(state)
Returns the currently active song object.
Playback State Selectors
selectActiveSongStates(state)
Returns the complete active song state object.
selectIsActiveSongCurrentlyPlaying(state)
Returns whether the active song is currently playing.
selectIsMusicToBeRepeated(state)
Returns whether the current song is set to loop.
Progress Selectors
selectTotalSongDurationOfActiveSong(state)
Returns the total duration of the active song in seconds.
selectActiveSongSeekProgress(state)
Returns the current playback position in seconds.
User Collections Selectors
selectHistorySongIds(state)
Returns the array of song IDs in the listening history.
selectFavouriteSongIds(state)
Returns the array of song IDs in the favorites collection.
Volume Selector
selectVolumeBarProgress(state)
Returns the current volume level (0-1).