gamenight/FrontendAvalonia/FrontendAvalonia/ViewModels/GamenightsViewModel.cs

44 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using DynamicData.Binding;
using FrontendAvalonia.Models;
using FrontendAvalonia.Services.GamenightApi;
using ReactiveUI;
namespace FrontendAvalonia.ViewModels;
public class GamenightsViewModel : PageViewModelBase
{
private IGamenight Gamenight { get; }
private GamenightModel Model { get; }
private LoginViewModel LoginViewModel { get; }
public AddGamenightViewModel AddGamenightViewModel { get; }
private ObservableCollectionExtended<ReactiveObject> _gamenightItems = new ObservableCollectionExtended<ReactiveObject>();
public ObservableCollectionExtended<ReactiveObject> GamenightItems {
get => _gamenightItems;
set => this.RaiseAndSetIfChanged(ref _gamenightItems, value);
}
public GamenightsViewModel(IScreen screen, IGamenight gamenight, GamenightModel model, LoginViewModel loginViewModel)
: base(screen)
{
Gamenight = gamenight;
Model = model;
LoginViewModel = loginViewModel;
AddGamenightViewModel = new AddGamenightViewModel(Gamenight, model);
this._gamenightItems.Add(AddGamenightViewModel);
this.WhenActivated(OnActivated);
}
private IEnumerable<IDisposable> OnActivated()
{
if (Model.UserToken == null)
{
HostScreen.Router.Navigate.Execute(LoginViewModel);
}
return Enumerable.Empty<IDisposable>();
}
}