Skip to content

Commit 00dd108

Browse files
committed
Automatically update M3U files
1 parent 69ceac8 commit 00dd108

File tree

1 file changed

+31
-18
lines changed

1 file changed

+31
-18
lines changed

android/mediaprovider/local/src/main/java/com/simplecityapps/localmediaprovider/local/repository/LocalPlaylistRepository.kt

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -110,31 +110,40 @@ class LocalPlaylistRepository(
110110
override suspend fun addToPlaylist(
111111
playlist: Playlist,
112112
songs: List<Song>
113-
) = playlistSongJoinDao.insert(
114-
songs.mapIndexed { i, song ->
115-
PlaylistSongJoin(
116-
playlistId = playlist.id,
117-
songId = song.id,
118-
sortOrder = (playlist.songCount + i).toLong()
119-
)
120-
}
121-
)
113+
) {
114+
playlistSongJoinDao.insert(
115+
songs.mapIndexed { i, song ->
116+
PlaylistSongJoin(
117+
playlistId = playlist.id,
118+
songId = song.id,
119+
sortOrder = (playlist.songCount + i).toLong()
120+
)
121+
}
122+
)
123+
updateM3uFile(playlist)
124+
}
122125

123126
override suspend fun removeFromPlaylist(
124127
playlist: Playlist,
125128
playlistSongs: List<PlaylistSong>
126-
) = playlistSongJoinDao.delete(
127-
playlistId = playlist.id,
128-
playlistSongIds = playlistSongs.map { playlistSong -> playlistSong.id }.toTypedArray()
129-
)
129+
) {
130+
playlistSongJoinDao.delete(
131+
playlistId = playlist.id,
132+
playlistSongIds = playlistSongs.map { playlistSong -> playlistSong.id }.toTypedArray()
133+
)
134+
updateM3uFile(playlist)
135+
}
130136

131137
override suspend fun removeSongsFromPlaylist(
132138
playlist: Playlist,
133139
songs: List<Song>
134-
) = playlistSongJoinDao.deleteSongs(
135-
playlistId = playlist.id,
136-
songIds = songs.map { it.id }.toTypedArray()
137-
)
140+
) {
141+
playlistSongJoinDao.deleteSongs(
142+
playlistId = playlist.id,
143+
songIds = songs.map { it.id }.toTypedArray()
144+
)
145+
updateM3uFile(playlist)
146+
}
138147

139148
override fun getSongsForPlaylist(playlist: Playlist): Flow<List<PlaylistSong>> = playlistSongJoinDao.getSongsForPlaylist(playlist.id)
140149
.map { playlistSong ->
@@ -145,7 +154,10 @@ class LocalPlaylistRepository(
145154

146155
override suspend fun deleteAll(mediaProviderType: MediaProviderType) = playlistDataDao.deleteAll(mediaProviderType)
147156

148-
override suspend fun clearPlaylist(playlist: Playlist) = playlistDataDao.clear(playlist.id)
157+
override suspend fun clearPlaylist(playlist: Playlist) {
158+
playlistDataDao.clear(playlist.id)
159+
updateM3uFile(playlist)
160+
}
149161

150162
override suspend fun renamePlaylist(
151163
playlist: Playlist,
@@ -216,6 +228,7 @@ class LocalPlaylistRepository(
216228
}
217229
}
218230
)
231+
updateM3uFile(playlist)
219232
}
220233

221234
override suspend fun updatePlaylistMediaProviderType(

0 commit comments

Comments
 (0)