diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt index 1d9489bb8..f9f05c919 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsMusicServiceActivity.kt @@ -122,14 +122,8 @@ abstract class AbsMusicServiceActivity : AbsBaseActivity(), IMusicServiceEventLi listener.onPlayingMetaChanged() } lifecycleScope.launch(Dispatchers.IO) { - val entity = repository.songPresentInHistory(MusicPlayerRemote.currentSong) - if (entity != null) { - repository.updateHistorySong(MusicPlayerRemote.currentSong) - } else { - // Check whether pause history option is ON or OFF - if (!PreferenceUtil.pauseHistory) { - repository.addSongToHistory(MusicPlayerRemote.currentSong) - } + if (!PreferenceUtil.pauseHistory) { + repository.upsertSongInHistory(MusicPlayerRemote.currentSong) } val song = repository.findSongExistInPlayCount(MusicPlayerRemote.currentSong.id) ?.apply { playCount += 1 } diff --git a/app/src/main/java/code/name/monkey/retromusic/db/HistoryDao.kt b/app/src/main/java/code/name/monkey/retromusic/db/HistoryDao.kt index c8b2e3165..2ceb309db 100644 --- a/app/src/main/java/code/name/monkey/retromusic/db/HistoryDao.kt +++ b/app/src/main/java/code/name/monkey/retromusic/db/HistoryDao.kt @@ -23,16 +23,11 @@ interface HistoryDao { private const val HISTORY_LIMIT = 100 } - @Insert(onConflict = OnConflictStrategy.REPLACE) - suspend fun insertSongInHistory(historyEntity: HistoryEntity) + @Upsert + suspend fun upsertSongInHistory(historyEntity: HistoryEntity) @Query("DELETE FROM HistoryEntity WHERE id= :songId") fun deleteSongInHistory(songId: Long) - @Query("SELECT * FROM HistoryEntity WHERE id = :songId LIMIT 1") - suspend fun isSongPresentInHistory(songId: Long): HistoryEntity? - - @Update - suspend fun updateHistorySong(historyEntity: HistoryEntity) @Query("SELECT * FROM HistoryEntity ORDER BY time_played DESC LIMIT $HISTORY_LIMIT") fun historySongs(): List 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 ec7ab57b1..696efcabe 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 @@ -311,7 +311,7 @@ class LibraryViewModel( if (previousSongHistory.isNotEmpty()) { val history = ArrayList() for (song in previousSongHistory) { - repository.addSongToHistory(song.toSong()) + repository.upsertSongInHistory(song.toSong()) history.add(song.toSong()) } songHistory.postValue(history) diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt index d02b900b4..11857bcc8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/repository/Repository.kt @@ -78,9 +78,7 @@ interface Repository { suspend fun deletePlaylistSongs(playlists: List) suspend fun favoritePlaylist(): PlaylistEntity suspend fun isFavoriteSong(songEntity: SongEntity): List - suspend fun addSongToHistory(currentSong: Song) - suspend fun songPresentInHistory(currentSong: Song): HistoryEntity? - suspend fun updateHistorySong(currentSong: Song) + suspend fun upsertSongInHistory(currentSong: Song) suspend fun favoritePlaylistSongs(): List suspend fun recentSongs(): List suspend fun topPlayedSongs(): List @@ -268,14 +266,8 @@ class RealRepository( override suspend fun isFavoriteSong(songEntity: SongEntity): List = roomRepository.isFavoriteSong(songEntity) - override suspend fun addSongToHistory(currentSong: Song) = - roomRepository.addSongToHistory(currentSong) - - override suspend fun songPresentInHistory(currentSong: Song): HistoryEntity? = - roomRepository.songPresentInHistory(currentSong) - - override suspend fun updateHistorySong(currentSong: Song) = - roomRepository.updateHistorySong(currentSong) + override suspend fun upsertSongInHistory(currentSong: Song) = + roomRepository.upsertSongInHistory(currentSong) override suspend fun favoritePlaylistSongs(): List = roomRepository.favoritePlaylistSongs(context.getString(R.string.favorites)) diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt index 04d1da4ba..38edf8386 100644 --- a/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/repository/RoomRepository.kt @@ -30,9 +30,7 @@ interface RoomRepository { suspend fun favoritePlaylist(favorite: String): PlaylistEntity suspend fun isFavoriteSong(songEntity: SongEntity): List suspend fun removeSongFromPlaylist(songEntity: SongEntity) - suspend fun addSongToHistory(currentSong: Song) - suspend fun songPresentInHistory(song: Song): HistoryEntity? - suspend fun updateHistorySong(song: Song) + suspend fun upsertSongInHistory(currentSong: Song) suspend fun favoritePlaylistSongs(favorite: String): List suspend fun upsertSongInPlayCount(playCountEntity: PlayCountEntity) suspend fun deleteSongInPlayCount(playCountEntity: PlayCountEntity) @@ -132,14 +130,8 @@ class RealRoomRepository( override suspend fun removeSongFromPlaylist(songEntity: SongEntity) = playlistDao.deleteSongFromPlaylist(songEntity.playlistCreatorId, songEntity.id) - override suspend fun addSongToHistory(currentSong: Song) = - historyDao.insertSongInHistory(currentSong.toHistoryEntity(System.currentTimeMillis())) - - override suspend fun songPresentInHistory(song: Song): HistoryEntity? = - historyDao.isSongPresentInHistory(song.id) - - override suspend fun updateHistorySong(song: Song) = - historyDao.updateHistorySong(song.toHistoryEntity(System.currentTimeMillis())) + override suspend fun upsertSongInHistory(currentSong: Song) = + historyDao.upsertSongInHistory(currentSong.toHistoryEntity(System.currentTimeMillis())) override fun observableHistorySongs(): LiveData> = historyDao.observableHistorySongs()