Fixed PlaylistDetailViewModels's "Playlist" object not properly synchronizing (events, locking) to the playlist manager's current playlist at constructor time.

This commit is contained in:
2026-08-09 11:28:45 -04:00
parent afcae0761b
commit 2be865d445
5 changed files with 29 additions and 16 deletions

View File

@@ -2,8 +2,8 @@
namespace Harmonia.Core.Player;
public class PlaylistChangedEventArgs(Playlist? oldPlaylist, Playlist? newPlaylist) : EventArgs
{
public Playlist? OldPlaylist { get; } = oldPlaylist;
public Playlist? NewPlaylist { get; } = newPlaylist;
}
//public class PlaylistChangedEventArgs(Playlist? oldPlaylist, Playlist? newPlaylist) : EventArgs
//{
// public Playlist? OldPlaylist { get; } = oldPlaylist;
// public Playlist? NewPlaylist { get; } = newPlaylist;
//}

View File

@@ -11,7 +11,7 @@ public interface IPlaylistManager
Playlist? FindPlaylistContaining(PlaylistSong playlistSong);
Playlist? FindPlaylistContaining(string playlistSongUID);
event EventHandler? CurrentPlaylistChanged;
event EventHandler<PlaylistChangedEventArgs>? CurrentPlaylistChanged;
event EventHandler<PlaylistAddedEventArgs> PlaylistAdded;
event EventHandler<PlaylistRemovedEventArgs> PlaylistRemoved;
event EventHandler<PlaylistSaveFailedEventArgs>? PlaylistSaveFailed;

View File

@@ -0,0 +1,7 @@
namespace Harmonia.Core.Playlists;
public class PlaylistChangedEventArgs(Playlist? oldPlaylist, Playlist? newPlaylist) : EventArgs
{
public readonly Playlist? OldPlaylist = oldPlaylist;
public readonly Playlist? NewPlaylist = newPlaylist;
}

View File

@@ -17,12 +17,14 @@ public class PlaylistManager : IPlaylistManager
}
set
{
Playlist? oldPlaylist = _currentPlaylist;
_currentPlaylist = value;
CurrentPlaylistChanged?.Invoke(this, new());
CurrentPlaylistChanged?.Invoke(this, new(oldPlaylist, _currentPlaylist));
}
}
public event EventHandler? CurrentPlaylistChanged;
public event EventHandler<PlaylistChangedEventArgs>? CurrentPlaylistChanged;
public event EventHandler<PlaylistAddedEventArgs>? PlaylistAdded;
public event EventHandler<PlaylistRemovedEventArgs>? PlaylistRemoved;
public event EventHandler<PlaylistSaveFailedEventArgs>? PlaylistSaveFailed;