fix(playlists): re-adding a song to a playlist crashed with SQLiteConstraintException
(playlistId, songId) is the playlist_songs PK, so a second @Insert of the same pair threw UNIQUE constraint failed and killed the app (reproduced twice in the crash buffer on 10-03). Switch to OnConflictStrategy.IGNORE: duplicate add is now a silent no-op. Verified on-device on 0.1.5 (7): re-adding 'The Humbling River' to FAVORITES keeps the song list intact, 0 FATALs, no new crash-buffer entries.
This commit is contained in:
parent
d0c5ce86fd
commit
bf9222ab0d
2 changed files with 6 additions and 3 deletions
|
|
@ -15,8 +15,8 @@ android {
|
|||
applicationId = "com.rada"
|
||||
minSdk = 26
|
||||
targetSdk = 35
|
||||
versionCode = 6
|
||||
versionName = "0.1.4"
|
||||
versionCode = 7
|
||||
versionName = "0.1.5"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.rada.data.local.dao
|
|||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import com.rada.data.local.entity.PlaylistEntity
|
||||
import com.rada.data.local.entity.PlaylistSongEntity
|
||||
|
|
@ -30,7 +31,9 @@ interface PlaylistDao {
|
|||
@Query("DELETE FROM playlists WHERE id = :playlistId")
|
||||
suspend fun deletePlaylistById(playlistId: Long)
|
||||
|
||||
@Insert
|
||||
// IGNORE: (playlistId, songId) is the PK — re-adding a song that is
|
||||
// already in the playlist must be a no-op, not a crash.
|
||||
@Insert(onConflict = OnConflictStrategy.IGNORE)
|
||||
suspend fun addSongToPlaylist(playlistSong: PlaylistSongEntity)
|
||||
|
||||
@Query("DELETE FROM playlist_songs WHERE playlistId = :playlistId AND songId = :songId")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue