using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using StrixMusic.Sdk.ViewModels;
using StrixMusic.Shells.Groove.Messages.Navigation.Pages;
namespace StrixMusic.Shells.Groove.ViewModels.Collections
{
///
/// A ViewModel for a .
///
public class GroovePlaylistCollectionViewModel : ObservableObject
{
private IPlaylistCollectionViewModel? _playlistCollectionViewModel;
private PlaylistViewModel? _selectedPlaylist;
///
/// Initializes a new instance of the class.
///
public GroovePlaylistCollectionViewModel()
{
NavigateToPlaylistCommand = new RelayCommand(NavigateToPlaylist);
}
///
/// The to display.
///
public IPlaylistCollectionViewModel? PlaylistCollection
{
get => _playlistCollectionViewModel;
set => SetProperty(ref _playlistCollectionViewModel, value, nameof(PlaylistCollection));
}
///
/// Gets or sets the selected playlist
///
public PlaylistViewModel SelectedPlaylist
{
get => _selectedPlaylist!;
set => SetProperty(ref _selectedPlaylist, value);
}
///
/// A Command that requests a navigation to a playlist page.
///
public RelayCommand NavigateToPlaylistCommand { get; private set; }
private void NavigateToPlaylist(PlaylistViewModel? viewModel)
{
if (viewModel != null)
WeakReferenceMessenger.Default.Send(new PlaylistViewNavigationRequestMessage(viewModel));
}
}
}