Fixed Same track added multiple times in a playlist 98/318398/4
authorMd. Shahrukh Islam/NC eXperience Group /SRBD/Engineer/Samsung Electronics <shahrukh.i@samsung.com>
Fri, 27 Sep 2024 09:51:50 +0000 (15:51 +0600)
committerMd. Shahrukh Islam/NC eXperience Group /SRBD/Engineer/Samsung Electronics <shahrukh.i@samsung.com>
Fri, 27 Sep 2024 11:00:17 +0000 (17:00 +0600)
[Problem] [TNINE-4666] Same track added multiple times in a playlist

[Cause & Measure]
 Cause : Track was not checked if existed or not in playlist.
 Measure : Before adding track is not checked if it is existing in that playlist or not.

Change-Id: Ib123371df2e377220bb236f1bffd34c9d8b221f6
Signed-off-by: Md. Shahrukh Islam/NC eXperience Group /SRBD/Engineer/Samsung Electronics <shahrukh.i@samsung.com>
music-player/ViewModels/PlaylistSelectorViewModel.cs

index d88c8787a85565ea0bafcb0e0b0c7a4c36cc2e9b..41063f1131ce3272d63fb26ef835f0a9597e0b29 100755 (executable)
@@ -85,7 +85,8 @@ namespace MusicPlayer.ViewModels
         public PlaylistMemberAddStatus AddTracksToPlaylist(object selectedItemData)
         {
             PlaylistModel playlistModel = (PlaylistModel)selectedItemData;
-            if(addingTrackList == null || addingTrackList.Count <= 0)
+
+            if (addingTrackList == null || addingTrackList.Count <= 0)
             {
                 return PlaylistMemberAddStatus.PlaylistCreationFailed;
             }
@@ -104,10 +105,38 @@ namespace MusicPlayer.ViewModels
                 }
             }
 
-            bool result = PlaylistManager.Instance.AddTracks(playlistModel.PlaylistId, addingTrackList);
+            // Same track should not be allowed to be added multiple times in a playlist
+            List<string> updatedTrackList = TrackExistInPlaylist(addingTrackList, playlistModel);
+
+            bool result = PlaylistManager.Instance.AddTracks(playlistModel.PlaylistId, updatedTrackList);
             return result ? PlaylistMemberAddStatus.Added : PlaylistMemberAddStatus.Failed;
         }
 
+        private List<string> TrackExistInPlaylist(List<string> addingTrackList, PlaylistModel playlistModel)
+        {
+            PlaylistDetailViewModel playlistDetailViewModel = new PlaylistDetailViewModel(playlistModel.PlaylistId);
+
+            List<string> updatedTrackList = new List<string>();
+            foreach (string id in addingTrackList)
+            {
+                bool flag = true;
+
+                foreach (Track existingTrack in playlistDetailViewModel.ListViewModel)
+                {
+                    if (id == existingTrack.Id)
+                    {
+                        flag = false;
+                        break;
+                    }
+                }
+                if (flag)
+                {
+                    updatedTrackList.Add(id);
+                }
+            }
+            return updatedTrackList;
+        }
+
         public bool IsPlaylistExists(string playlistName)
         {
             Playlist playlist = PlaylistManager.Instance.GetPlaylist(playlistName);