initial load
This commit is contained in:
111
YouTubeViewers.WPF/ViewModels/YouTubeViewersListingViewModel.cs
Normal file
111
YouTubeViewers.WPF/ViewModels/YouTubeViewersListingViewModel.cs
Normal file
@ -0,0 +1,111 @@
|
||||
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 _selectedYouTubeViewerListingItemViewModel; }
|
||||
set
|
||||
{
|
||||
_selectedYouTubeViewerListingItemViewModel = value;
|
||||
OnPropertyChanged(nameof(SelectedYouTubeViewerListingItemViewModel));
|
||||
_selectedYouTubeViewerStore.SelectedYouTubeViewer = _selectedYouTubeViewerListingItemViewModel?.YouTubeViewer;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public YouTubeViewersListingViewModel(
|
||||
YouTubeViewersStore youTubeViewersStore,
|
||||
SelectedYouTubeViewerStore selectedYouTubeViewerStore,
|
||||
ModalNavigationStore modalNavigationStore)
|
||||
{
|
||||
_youTubeViewersStore = youTubeViewersStore;
|
||||
_selectedYouTubeViewerStore = selectedYouTubeViewerStore;
|
||||
_modalNavigationStore = modalNavigationStore;
|
||||
_youtubeViewersListingItemViewModels = new ObservableCollection<YouTubeViewersListingItemViewModel>();
|
||||
|
||||
|
||||
_youTubeViewersStore.YouTubeViewersLoaded += _youTubeViewersStore_YouTubeViewersLoaded;
|
||||
_youTubeViewersStore.YouTubeViewerAdded += YouTubeViewersStore_YouTubeViewerAdded;
|
||||
_youTubeViewersStore.YouTubeViewerUpdated += YouTubeViewersStore_YouTubeViewerUpdated;
|
||||
_youTubeViewersStore.YouTubeViewerDeleted += YouTubeViewersStore_YouTubeViewerDeleted;
|
||||
}
|
||||
|
||||
|
||||
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()
|
||||
{
|
||||
_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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user