before adding LoadingSpinner

This commit is contained in:
Natlinux81
2022-08-27 19:06:39 +02:00
parent fa278fc245
commit 7fe2fd08ea
7 changed files with 52 additions and 24 deletions

View File

@@ -55,10 +55,10 @@ namespace Apollon.WPF
context.Database.Migrate(); context.Database.Migrate();
} }
OverviewViewModel overviewViewModel = new OverviewViewModel( OverviewViewModel overviewViewModel = OverviewViewModel.LoadViewModel(
_tournamentStore,
_selectedTournamentStore, _selectedTournamentStore,
_modalNavigationStore, _modalNavigationStore,
_tournamentStore,
_navigationStore); _navigationStore);
_navigationStore.CurrentViewModel = new OverviewViewModel( _navigationStore.CurrentViewModel = new OverviewViewModel(

View File

@@ -47,6 +47,7 @@ namespace Apollon.WPF.Commands
await _tournamentStore.Add(tournament); await _tournamentStore.Add(tournament);
_modalNavigationStore.Close(); _modalNavigationStore.Close();
} }
catch (Exception) catch (Exception)
{ {

View File

@@ -1,4 +1,5 @@
using Apollon.WPF.Stores; using Apollon.WPF.Stores;
using Apollon.WPF.ViewModels;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -9,15 +10,19 @@ namespace Apollon.WPF.Commands
{ {
public class LoadTournamentsCommand : AsyncCommandBase public class LoadTournamentsCommand : AsyncCommandBase
{ {
private readonly OverviewViewModel _overviewViewModel;
private readonly TournamentsStore _tournamentStore; private readonly TournamentsStore _tournamentStore;
public LoadTournamentsCommand(TournamentsStore tournamentStore) public LoadTournamentsCommand(OverviewViewModel overviewViewModel, TournamentsStore tournamentStore)
{ {
_overviewViewModel = overviewViewModel;
_tournamentStore = tournamentStore; _tournamentStore = tournamentStore;
} }
public override async Task ExecuteAsync(object parameter) public override async Task ExecuteAsync(object parameter)
{ {
_overviewViewModel.IsLoading = true;
try try
{ {
await _tournamentStore.Load(); await _tournamentStore.Load();
@@ -26,6 +31,10 @@ namespace Apollon.WPF.Commands
{ {
throw; throw;
} }
finally
{
_overviewViewModel.IsLoading = false;
}
} }
} }
} }

View File

@@ -50,6 +50,9 @@ namespace Apollon.WPF.Stores
public async Task Add(Tournament tournament) public async Task Add(Tournament tournament)
{ {
await _createTournamentCommand.Execute(tournament); await _createTournamentCommand.Execute(tournament);
_tournaments.Add(tournament);
TournamentAdded?.Invoke(tournament); TournamentAdded?.Invoke(tournament);
} }
@@ -59,7 +62,7 @@ namespace Apollon.WPF.Stores
int currentIndex = _tournaments.FindIndex(y => y.Id == tournament.Id); int currentIndex = _tournaments.FindIndex(y => y.Id == tournament.Id);
if (currentIndex == -1) if (currentIndex != -1)
{ {
_tournaments[currentIndex] = tournament; _tournaments[currentIndex] = tournament;
} }

View File

@@ -17,16 +17,14 @@ namespace Apollon.WPF.ViewModels
public string TournamentName => Tournament.TournamentName; public string TournamentName => Tournament.TournamentName;
public string Location => Tournament.Location; public string Location => Tournament.Location;
public ICommand EditCommand { get; } public ICommand EditCommand { get; }
//public ICommand DeleteCommand { get; }
public ICommand WarningDeleteCommand { get; } public ICommand WarningDeleteCommand { get; }
public OverviewListingItemViewModel(Tournament tournament, TournamentsStore tournamentStore, ModalNavigationStore modalNavigationStore) public OverviewListingItemViewModel(Tournament tournament, TournamentsStore tournamentStore, ModalNavigationStore modalNavigationStore)
{ {
Tournament = tournament; Tournament = tournament;
EditCommand = new OpenEditTournamentCommand(this, tournamentStore, modalNavigationStore); EditCommand = new OpenEditTournamentCommand(this, tournamentStore, modalNavigationStore);
//DeleteCommand = new DeleteTournamentCommand(this, tournamentStore);
WarningDeleteCommand = new OpenWarningDeleteCommand(this, modalNavigationStore, tournamentStore); WarningDeleteCommand = new OpenWarningDeleteCommand(this, modalNavigationStore, tournamentStore);
} }

View File

@@ -33,16 +33,13 @@ namespace Apollon.WPF.ViewModels
} }
} }
public ICommand LoadTournamentsCommand { get;}
public OverviewListingViewModel(SelectedTournamentsStore selectedTournamentStore, ModalNavigationStore modalNavigationStore, TournamentsStore tournamentStore) public OverviewListingViewModel(SelectedTournamentsStore selectedTournamentStore, ModalNavigationStore modalNavigationStore, TournamentsStore tournamentStore)
{ {
_tournamentStore = tournamentStore; _tournamentStore = tournamentStore;
_selectedTournamentStore = selectedTournamentStore; _selectedTournamentStore = selectedTournamentStore;
_modalNavigationStore = modalNavigationStore; _modalNavigationStore = modalNavigationStore;
_overviewListingItemViewModels = new ObservableCollection<OverviewListingItemViewModel>(); _overviewListingItemViewModels = new ObservableCollection<OverviewListingItemViewModel>();
LoadTournamentsCommand = new LoadTournamentsCommand(tournamentStore);
_selectedTournamentStore.SelectedTournamentChanged += SelectedTournamentStore_SelectedTournamentChanged; _selectedTournamentStore.SelectedTournamentChanged += SelectedTournamentStore_SelectedTournamentChanged;
@@ -52,16 +49,7 @@ namespace Apollon.WPF.ViewModels
_tournamentStore.TournamentDeleted += TournamentStore_TournamentDeleted; _tournamentStore.TournamentDeleted += TournamentStore_TournamentDeleted;
_overviewListingItemViewModels.CollectionChanged += OverviewListingItemViewModels_CollectionChanged; _overviewListingItemViewModels.CollectionChanged += OverviewListingItemViewModels_CollectionChanged;
} }
public static OverviewListingViewModel LoadViewModel(SelectedTournamentsStore selectedTournamentStore, ModalNavigationStore modalNavigationStore, TournamentsStore tournamentStore)
{
OverviewListingViewModel viewModel = new OverviewListingViewModel(selectedTournamentStore, modalNavigationStore, tournamentStore);
viewModel.LoadTournamentsCommand.Execute(null);
return viewModel;
}
protected override void Dispose() protected override void Dispose()
{ {

View File

@@ -15,17 +15,46 @@ namespace Apollon.WPF.ViewModels
public OverviewListingViewModel OverviewListingViewModel { get; } public OverviewListingViewModel OverviewListingViewModel { get; }
public OverviewDetailsViewModel OverviewDetailsViewModel{ get; } public OverviewDetailsViewModel OverviewDetailsViewModel{ get; }
private bool _isLoading;
public bool IsLoading
{
get
{
return IsLoading;
}
set
{
_isLoading = value;
OnPropertyChanged(nameof(IsLoading));
}
}
public ICommand AddTournamentCommand { get; } public ICommand AddTournamentCommand { get; }
public ICommand LoadTournamentsCommand { get; }
public ICommand NavigateNavBarCommand { get; } public ICommand NavigateNavBarCommand { get; }
public OverviewViewModel(TournamentsStore tournamentStore, SelectedTournamentsStore selectedTournamentStore, ModalNavigationStore modalNavigationStore, NavigationStore navigationStore) public OverviewViewModel(TournamentsStore tournamentStore, SelectedTournamentsStore selectedTournamentStore,
ModalNavigationStore modalNavigationStore, NavigationStore navigationStore)
{ {
OverviewListingViewModel = OverviewListingViewModel.LoadViewModel(selectedTournamentStore, modalNavigationStore, tournamentStore); OverviewListingViewModel = new OverviewListingViewModel(selectedTournamentStore, modalNavigationStore, tournamentStore);
OverviewDetailsViewModel = new OverviewDetailsViewModel(selectedTournamentStore); OverviewDetailsViewModel = new OverviewDetailsViewModel(selectedTournamentStore);
LoadTournamentsCommand = new LoadTournamentsCommand(this, tournamentStore);
AddTournamentCommand = new OpenAddTournamentCommand(tournamentStore, modalNavigationStore); AddTournamentCommand = new OpenAddTournamentCommand(tournamentStore, modalNavigationStore);
NavigateNavBarCommand = new NavigatCommand<NavBarViewModel>(navigationStore, () => new NavBarViewModel(navigationStore)); NavigateNavBarCommand = new NavigatCommand<NavBarViewModel>(navigationStore, () => new NavBarViewModel(navigationStore));
} }
public static OverviewViewModel LoadViewModel(SelectedTournamentsStore selectedTournamentStore,
ModalNavigationStore modalNavigationStore,
TournamentsStore tournamentStore,
NavigationStore navigationStore)
{
OverviewViewModel viewModel = new OverviewViewModel(tournamentStore, selectedTournamentStore, modalNavigationStore, navigationStore);
viewModel.LoadTournamentsCommand.Execute(null);
return viewModel;
}
} }
} }