128 lines
5.2 KiB
C#
128 lines
5.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
using YouTubeViewers.WPF.Commands;
|
|
using YouTubeViewers.Domain.Models;
|
|
using YouTubeViewers.WPF.Stores;
|
|
|
|
namespace YouTubeViewers.WPF.ViewModels
|
|
{
|
|
public class YouTubeViewersListingViewModel : ViewModelBase
|
|
{
|
|
private readonly ObservableCollection<YouTubeViewersListingItemViewModel> _youtubeViewersListingItemViewModels;
|
|
private readonly YouTubeViewersStore _youTubeViewersStore;
|
|
private readonly SelectedYouTubeViewerStore _selectedYouTubeViewerStore;
|
|
private readonly ModalNavigationStore _modalNavigationStore;
|
|
|
|
public IEnumerable<YouTubeViewersListingItemViewModel> YouTubeViewersListingItemViewModels => _youtubeViewersListingItemViewModels;
|
|
|
|
//private YouTubeViewersListingItemViewModel _selectedYouTubeViewerListingItemViewModel;
|
|
|
|
public YouTubeViewersListingItemViewModel SelectedYouTubeViewerListingItemViewModel
|
|
{
|
|
get {
|
|
return _youtubeViewersListingItemViewModels
|
|
.FirstOrDefault(y => y.YouTubeViewer?.Id == _selectedYouTubeViewerStore.SelectedYouTubeViewer?.Id);
|
|
}
|
|
set
|
|
{
|
|
|
|
_selectedYouTubeViewerStore.SelectedYouTubeViewer = value?.YouTubeViewer;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public YouTubeViewersListingViewModel(
|
|
YouTubeViewersStore youTubeViewersStore,
|
|
SelectedYouTubeViewerStore selectedYouTubeViewerStore,
|
|
ModalNavigationStore modalNavigationStore)
|
|
{
|
|
_youTubeViewersStore = youTubeViewersStore;
|
|
_selectedYouTubeViewerStore = selectedYouTubeViewerStore;
|
|
_modalNavigationStore = modalNavigationStore;
|
|
_youtubeViewersListingItemViewModels = new ObservableCollection<YouTubeViewersListingItemViewModel>();
|
|
|
|
_selectedYouTubeViewerStore.SelectedYouTubeViewerChanged += _selectedYouTubeViewerStore_SelectedYouTubeViewerChanged;
|
|
|
|
_youTubeViewersStore.YouTubeViewersLoaded += _youTubeViewersStore_YouTubeViewersLoaded;
|
|
_youTubeViewersStore.YouTubeViewerAdded += YouTubeViewersStore_YouTubeViewerAdded;
|
|
_youTubeViewersStore.YouTubeViewerUpdated += YouTubeViewersStore_YouTubeViewerUpdated;
|
|
_youTubeViewersStore.YouTubeViewerDeleted += YouTubeViewersStore_YouTubeViewerDeleted;
|
|
|
|
_youtubeViewersListingItemViewModels.CollectionChanged += _youtubeViewersListingItemViewModels_CollectionChanged;
|
|
}
|
|
|
|
private void _youtubeViewersListingItemViewModels_CollectionChanged(object? sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
|
|
{
|
|
OnPropertyChanged(nameof(SelectedYouTubeViewerListingItemViewModel));
|
|
}
|
|
|
|
private void _selectedYouTubeViewerStore_SelectedYouTubeViewerChanged()
|
|
{
|
|
OnPropertyChanged(nameof(SelectedYouTubeViewerListingItemViewModel));
|
|
}
|
|
|
|
private void _youTubeViewersStore_YouTubeViewersLoaded()
|
|
{
|
|
_youtubeViewersListingItemViewModels.Clear();
|
|
foreach (YouTubeViewer youTubeViewer in _youTubeViewersStore.YouTubeViewers)
|
|
{
|
|
AddYouTubeViewer(youTubeViewer);
|
|
}
|
|
}
|
|
|
|
private void YouTubeViewersStore_YouTubeViewerUpdated(YouTubeViewer youTubeViewer)
|
|
{
|
|
YouTubeViewersListingItemViewModel youTubeViewerViewModel =
|
|
_youtubeViewersListingItemViewModels.FirstOrDefault(x => x.YouTubeViewer.Id == youTubeViewer.Id);
|
|
|
|
if (youTubeViewerViewModel != null)
|
|
{
|
|
youTubeViewerViewModel.Update(youTubeViewer);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
protected override void Dispose()
|
|
{
|
|
_selectedYouTubeViewerStore.SelectedYouTubeViewerChanged -= _selectedYouTubeViewerStore_SelectedYouTubeViewerChanged;
|
|
|
|
_youTubeViewersStore.YouTubeViewersLoaded -= _youTubeViewersStore_YouTubeViewersLoaded;
|
|
_youTubeViewersStore.YouTubeViewerAdded -= YouTubeViewersStore_YouTubeViewerAdded;
|
|
_youTubeViewersStore.YouTubeViewerUpdated -= YouTubeViewersStore_YouTubeViewerUpdated;
|
|
_youTubeViewersStore.YouTubeViewerDeleted -= YouTubeViewersStore_YouTubeViewerDeleted;
|
|
|
|
base.Dispose();
|
|
}
|
|
private void YouTubeViewersStore_YouTubeViewerAdded(YouTubeViewer youTubeViewer)
|
|
{
|
|
AddYouTubeViewer(youTubeViewer);
|
|
}
|
|
|
|
private void AddYouTubeViewer(YouTubeViewer youTubeViewer)
|
|
{
|
|
YouTubeViewersListingItemViewModel itemViewModel =
|
|
new YouTubeViewersListingItemViewModel(youTubeViewer, _youTubeViewersStore, _modalNavigationStore);
|
|
_youtubeViewersListingItemViewModels.Add(itemViewModel);
|
|
}
|
|
|
|
private void YouTubeViewersStore_YouTubeViewerDeleted(Guid id)
|
|
{
|
|
YouTubeViewersListingItemViewModel itemViewModel = _youtubeViewersListingItemViewModels.FirstOrDefault(y => y.YouTubeViewer?.Id == id);
|
|
|
|
if (itemViewModel != null)
|
|
{
|
|
_youtubeViewersListingItemViewModels.Remove(itemViewModel);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|