Fix playlist reload
This commit is contained in:
parent
54f95dbd92
commit
e5f6e83dd4
5 changed files with 90 additions and 52 deletions
|
@ -68,17 +68,8 @@ class CreatePlaylistDialog : DialogFragment() {
|
|||
) { _, _ ->
|
||||
val playlistName = playlistView.text.toString()
|
||||
if (!TextUtils.isEmpty(playlistName)) {
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
if (libraryViewModel.checkPlaylistExists(playlistName).isEmpty()) {
|
||||
val playlistId: Long =
|
||||
libraryViewModel.createPlaylist(PlaylistEntity(playlistName = playlistName))
|
||||
libraryViewModel.insertSongs(songs.map { it.toSongEntity(playlistId) })
|
||||
libraryViewModel.forceReload(Playlists)
|
||||
} else {
|
||||
Toast.makeText(requireContext(), "Playlist exists", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
}
|
||||
}
|
||||
libraryViewModel.addToPlaylist(playlistName, songs)
|
||||
|
||||
} else {
|
||||
playlistContainer.error = "Playlist is can't be empty"
|
||||
}
|
||||
|
|
|
@ -14,16 +14,32 @@
|
|||
*/
|
||||
package code.name.monkey.retromusic.fragments
|
||||
|
||||
import androidx.lifecycle.*
|
||||
import android.widget.Toast
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.liveData
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import code.name.monkey.retromusic.App
|
||||
import code.name.monkey.retromusic.RECENT_ALBUMS
|
||||
import code.name.monkey.retromusic.RECENT_ARTISTS
|
||||
import code.name.monkey.retromusic.TOP_ALBUMS
|
||||
import code.name.monkey.retromusic.TOP_ARTISTS
|
||||
import code.name.monkey.retromusic.db.*
|
||||
import code.name.monkey.retromusic.db.PlaylistEntity
|
||||
import code.name.monkey.retromusic.db.PlaylistWithSongs
|
||||
import code.name.monkey.retromusic.db.SongEntity
|
||||
import code.name.monkey.retromusic.db.toSong
|
||||
import code.name.monkey.retromusic.db.toSongEntity
|
||||
import code.name.monkey.retromusic.fragments.ReloadType.*
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.interfaces.IMusicServiceEventListener
|
||||
import code.name.monkey.retromusic.model.*
|
||||
import code.name.monkey.retromusic.model.Album
|
||||
import code.name.monkey.retromusic.model.Artist
|
||||
import code.name.monkey.retromusic.model.Contributor
|
||||
import code.name.monkey.retromusic.model.Genre
|
||||
import code.name.monkey.retromusic.model.Home
|
||||
import code.name.monkey.retromusic.model.Playlist
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.repository.RealRepository
|
||||
import code.name.monkey.retromusic.state.NowPlayingPanelState
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
|
@ -226,10 +242,10 @@ class LibraryViewModel(
|
|||
suspend fun removeSongFromPlaylist(songEntity: SongEntity) =
|
||||
repository.removeSongFromPlaylist(songEntity)
|
||||
|
||||
suspend fun checkPlaylistExists(playlistName: String): List<PlaylistEntity> =
|
||||
private suspend fun checkPlaylistExists(playlistName: String): List<PlaylistEntity> =
|
||||
repository.checkPlaylistExists(playlistName)
|
||||
|
||||
suspend fun createPlaylist(playlistEntity: PlaylistEntity): Long =
|
||||
private suspend fun createPlaylist(playlistEntity: PlaylistEntity): Long =
|
||||
repository.createPlaylist(playlistEntity)
|
||||
|
||||
fun importPlaylists() = viewModelScope.launch(IO) {
|
||||
|
@ -303,6 +319,29 @@ class LibraryViewModel(
|
|||
searchResults.postValue(emptyList())
|
||||
}
|
||||
}
|
||||
|
||||
fun addToPlaylist(playlistName: String, songs: List<Song>) {
|
||||
viewModelScope.launch(IO) {
|
||||
val playlists = checkPlaylistExists(playlistName)
|
||||
if (playlists.isEmpty()) {
|
||||
val playlistId: Long = createPlaylist(PlaylistEntity(playlistName = playlistName))
|
||||
insertSongs(songs.map { it.toSongEntity(playlistId) })
|
||||
forceReload(Playlists)
|
||||
} else {
|
||||
val playlist = playlists.firstOrNull()
|
||||
if (playlist != null) {
|
||||
insertSongs(songs.map {
|
||||
it.toSongEntity(playListId = playlist.playListId)
|
||||
})
|
||||
}
|
||||
Toast.makeText(
|
||||
App.getContext(),
|
||||
"Adding songs to $playlistName",
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum class ReloadType {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue