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 _gamenightItems = new ObservableCollectionExtended(); public ObservableCollectionExtended 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 OnActivated() { if (Model.UserToken == null) { HostScreen.Router.Navigate.Execute(LoginViewModel); } return Enumerable.Empty(); } }