feat: Support skipping duplicates

This commit is contained in:
SinTan1729 2025-09-26 16:24:21 -05:00
parent 1223062388
commit e1d63a9eef
No known key found for this signature in database
GPG key ID: 0538DD402EA50898
4 changed files with 32 additions and 6 deletions

View file

@ -1,6 +1,7 @@
package com.cappielloantonio.tempo.viewmodel;
import android.app.Application;
import android.app.Dialog;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
@ -14,7 +15,6 @@ import com.cappielloantonio.tempo.subsonic.models.Playlist;
import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class PlaylistChooserViewModel extends AndroidViewModel {
@ -34,8 +34,19 @@ public class PlaylistChooserViewModel extends AndroidViewModel {
return playlists;
}
public void addSongsToPlaylist(String playlistId) {
playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(Lists.transform(toAdd, Child::getId)));
public void addSongsToPlaylist(LifecycleOwner owner, Dialog dialog, String playlistId, boolean skipDuplicates) {
List<String> songIds = Lists.transform(toAdd, Child::getId);
if (skipDuplicates) {
playlistRepository.getPlaylistSongs(playlistId).observe(owner, playlistSongs -> {
List<String> playlistSongIds = Lists.transform(playlistSongs, Child::getId);
songIds.removeAll(playlistSongIds);
playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(songIds));
dialog.dismiss();
});
} else {
playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(songIds));
dialog.dismiss();
}
}
public void setSongsToAdd(ArrayList<Child> songs) {