diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt index be3904175..b462da4aa 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt @@ -49,6 +49,7 @@ class LibraryViewModel( private val genres = MutableLiveData>() private val searchResults = MutableLiveData>() private val fabMargin = MutableLiveData(0) + private val songHistory = MutableLiveData>() val paletteColor: LiveData = _paletteColor init { @@ -320,20 +321,30 @@ class LibraryViewModel( emit(repository.contributor()) } - fun observableHistorySongs(): LiveData> = liveData { + fun observableHistorySongs(): LiveData> { val songs = repository.historySong().map { it.toSong() } - emit(songs) + songHistory.value = songs // Cleaning up deleted or moved songs - songs.forEach { song -> - if (!File(song.data).exists() || song.id == -1L) { - repository.deleteSongInHistory(song.id) + viewModelScope.launch { + songs.forEach { song -> + if (!File(song.data).exists() || song.id == -1L) { + repository.deleteSongInHistory(song.id) + } } } - emit(repository.historySong().map { + songHistory.value = repository.historySong().map { it.toSong() - }) + } + return songHistory + } + + fun clearHistory() { + viewModelScope.launch(IO) { + repository.clearSongHistory() + } + songHistory.value = emptyList() } fun favorites() = repository.favorites()