wabbajack/Wabbajack.App.Wpf/ViewModels/HomeVM.cs

66 lines
1.9 KiB
C#
Raw Normal View History

using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using System;
using System.IO;
using System.Linq;
using System.Reactive;
using System.Reactive.Linq;
using System.Windows.Input;
using Wabbajack.Common;
using Wabbajack;
using Wabbajack.Messages;
using Wabbajack.Paths.IO;
2023-11-26 19:15:53 +00:00
using Wabbajack.Networking.WabbajackClientApi;
using System.Threading.Tasks;
using Wabbajack.DTOs;
using Microsoft.Extensions.Logging;
using System.Reactive.Disposables;
using System.Diagnostics;
using DynamicData;
namespace Wabbajack
{
public class HomeVM : ViewModel
{
private readonly ILogger<HomeVM> _logger;
2023-11-26 19:15:53 +00:00
private readonly Client _wjClient;
public HomeVM(ILogger<HomeVM> logger, Client wjClient)
{
_logger = logger;
2023-11-26 19:15:53 +00:00
_wjClient = wjClient;
2023-12-23 14:44:54 +00:00
BrowseCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(ScreenType.ModListGallery));
2023-11-26 19:15:53 +00:00
VisitModlistWizardCommand = ReactiveCommand.Create(() =>
{
ProcessStartInfo processStartInfo = new(Consts.WabbajackModlistWizardUri.ToString())
{
UseShellExecute = true
};
Process.Start(processStartInfo);
});
LoadModLists().FireAndForget();
}
private async Task LoadModLists()
{
using var ll = LoadingLock.WithLoading();
try
2023-11-26 19:15:53 +00:00
{
Modlists = await _wjClient.LoadLists();
}
catch (Exception ex)
{
_logger.LogError(ex, "While loading lists");
ll.Fail();
}
ll.Succeed();
}
2023-11-26 19:15:53 +00:00
public ICommand VisitModlistWizardCommand { get; }
public ICommand BrowseCommand { get; }
2023-11-26 19:15:53 +00:00
public ReactiveCommand<Unit, Unit> UpdateCommand { get; }
[Reactive]
public ModlistMetadata[] Modlists { get; private set; }
}
}