SPT-AKI-Installer/SPTInstaller/ViewModels/PreChecksViewModel.cs

60 lines
1.7 KiB
C#
Raw Normal View History

2023-05-11 23:11:39 -04:00
using ReactiveUI;
using SPTInstaller.Controllers;
using SPTInstaller.Helpers;
using SPTInstaller.Models;
using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using System.Windows.Input;
namespace SPTInstaller.ViewModels
{
public class PreChecksViewModel : ViewModelBase
{
private string _InstallPath;
public string InstallPath
{
get => _InstallPath;
set => this.RaiseAndSetIfChanged(ref _InstallPath, value);
}
ObservableCollection<PreCheckBase> PreChecks { get; set; }
= new ObservableCollection<PreCheckBase>(ServiceHelper.GetAll<PreCheckBase>());
ICommand StartInstallCommand { get; set; }
public PreChecksViewModel(IScreen host) : base(host)
{
var data = ServiceHelper.Get<InternalData>();
var installer = ServiceHelper.Get<InstallController>();
if(data == null || installer == null)
{
2023-05-14 22:35:06 -04:00
NavigateTo(new MessageViewModel(HostScreen, "Failed to get required service for prechecks"));
return;
2023-05-11 23:11:39 -04:00
}
data.TargetInstallPath = Environment.CurrentDirectory;
InstallPath = data.TargetInstallPath;
StartInstallCommand = ReactiveCommand.Create(() =>
{
NavigateTo(new InstallViewModel(HostScreen));
});
Task.Run(async () =>
{
var result = await installer.RunPreChecks();
2023-05-14 22:35:06 -04:00
if(!result.Succeeded)
{
//if a required precheck fails, abort to message view
NavigateTo(new MessageViewModel(HostScreen ,result.Message));
}
2023-05-11 23:11:39 -04:00
});
}
}
}