From 4be0acf76c50a9263401051df038ecb1da47094c Mon Sep 17 00:00:00 2001 From: eddyizm Date: Tue, 26 Aug 2025 21:57:20 -0700 Subject: [PATCH] fix: catches null value and prepares bundle appropriately adding single track to expected array list. closes #58 --- .../tempo/ui/dialog/PlaylistChooserDialog.java | 11 ++++++++--- .../tempo/ui/fragment/PlayerCoverFragment.java | 6 +++++- .../tempo/viewmodel/PlaylistChooserViewModel.java | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java index 5c0b119c..360a5ec5 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java @@ -3,6 +3,7 @@ package com.cappielloantonio.tempo.ui.dialog; import android.app.Dialog; import android.os.Bundle; import android.view.View; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; @@ -97,8 +98,12 @@ public class PlaylistChooserDialog extends DialogFragment implements ClickCallba @Override public void onPlaylistClick(Bundle bundle) { - Playlist playlist = bundle.getParcelable(Constants.PLAYLIST_OBJECT); - playlistChooserViewModel.addSongsToPlaylist(playlist.getId()); - dismiss(); + if (playlistChooserViewModel.getSongsToAdd() != null && !playlistChooserViewModel.getSongsToAdd().isEmpty()) { + Playlist playlist = bundle.getParcelable(Constants.PLAYLIST_OBJECT); + playlistChooserViewModel.addSongsToPlaylist(playlist.getId()); + dismiss(); + } else { + Toast.makeText(requireContext(), R.string.playlist_chooser_dialog_toast_add_failure, Toast.LENGTH_SHORT).show(); + } } } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java index 15f647c8..392c5786 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerCoverFragment.java @@ -9,6 +9,7 @@ import android.transition.TransitionManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import java.util.ArrayList; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; @@ -31,6 +32,7 @@ import com.cappielloantonio.tempo.util.DownloadUtil; import com.cappielloantonio.tempo.util.MappingUtil; import com.cappielloantonio.tempo.util.Preferences; import com.cappielloantonio.tempo.viewmodel.PlayerBottomSheetViewModel; +import com.cappielloantonio.tempo.subsonic.models.Child; import com.google.android.material.snackbar.Snackbar; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; @@ -120,8 +122,10 @@ public class PlayerCoverFragment extends Fragment { }); bind.innerButtonTopRight.setOnClickListener(view -> { + ArrayList tracks = new ArrayList<>(); + tracks.add(song); Bundle bundle = new Bundle(); - bundle.putParcelable(Constants.TRACK_OBJECT, song); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, tracks); PlaylistChooserDialog dialog = new PlaylistChooserDialog(); dialog.setArguments(bundle); diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java index fdee85c6..2ec6c21f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java @@ -21,7 +21,7 @@ public class PlaylistChooserViewModel extends AndroidViewModel { private final PlaylistRepository playlistRepository; private final MutableLiveData> playlists = new MutableLiveData<>(null); - private ArrayList toAdd; + private ArrayList toAdd = new ArrayList<>(); public PlaylistChooserViewModel(@NonNull Application application) { super(application);