Save the last install path, and load it next time we open the app

This commit is contained in:
Timothy Baldridge 2021-12-30 17:18:20 -07:00
parent 7faa65ca77
commit de21eebe14
3 changed files with 39 additions and 4 deletions

View File

@ -0,0 +1,12 @@
using ReactiveUI;
namespace Wabbajack.Messages;
public class LoadLastLoadedModlist
{
public static void Send()
{
MessageBus.Current.SendMessage(new LoadLastLoadedModlist());
}
}

View File

@ -24,6 +24,7 @@ using Wabbajack.Paths;
using Wabbajack.RateLimiter;
using Wabbajack.View_Models;
using Wabbajack.Paths.IO;
using Wabbajack.Services.OSIntegrated;
using Consts = Wabbajack.Consts;
using KnownFolders = Wabbajack.Paths.IO.KnownFolders;
@ -36,6 +37,8 @@ public enum ModManager
public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
{
private const string LastLoadedModlist = "last-loaded-modlist";
[Reactive]
public ModList ModList { get; set; }
@ -72,7 +75,8 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
private readonly ObservableAsPropertyHelper<bool> _installing;
private readonly DTOSerializer _dtos;
private readonly ILogger<InstallerVM> _logger;
private readonly SettingsManager _settingsManager;
[Reactive]
public bool Installing { get; set; }
@ -89,9 +93,10 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
public ReactiveCommand<Unit, Unit> BackCommand { get; }
public InstallerVM(ILogger<InstallerVM> logger, DTOSerializer dtos) : base(logger)
public InstallerVM(ILogger<InstallerVM> logger, DTOSerializer dtos, SettingsManager settingsManager) : base(logger)
{
_logger = logger;
_settingsManager = settingsManager;
_dtos = dtos;
Installer = new MO2InstallerVM(this);
@ -119,6 +124,12 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
.Subscribe(msg => LoadModlist(msg.Path).FireAndForget())
.DisposeWith(CompositeDisposable);
MessageBus.Current.Listen<LoadLastLoadedModlist>()
.Subscribe(msg =>
{
LoadLastModlist().FireAndForget();
});
this.WhenActivated(disposables =>
{
ModListLocation.WhenAnyValue(l => l.TargetPath)
@ -129,6 +140,13 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
}
private async Task LoadLastModlist()
{
var lst = await _settingsManager.Load<AbsolutePath>(LastLoadedModlist);
if (lst.FileExists())
await LoadModlist(lst);
}
private async Task LoadModlist(AbsolutePath path)
{
using var ll = LoadingLock.WithLoading();
@ -140,6 +158,7 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
PopulateSlideShow(ModList);
ll.Succeed();
await _settingsManager.Save(LastLoadedModlist, path);
}
catch (Exception ex)
{
@ -148,7 +167,6 @@ public class InstallerVM : BackNavigatingVM, IBackNavigatingVM
}
}
private void PopulateSlideShow(ModList modList)
{
SlideShowTitle = modList.Name;

View File

@ -19,11 +19,16 @@ namespace Wabbajack
public ICommand BrowseCommand { get; }
public ICommand InstallCommand { get; }
public ICommand CompileCommand { get; }
public ReactiveCommand<Unit, Unit> UpdateCommand { get; }
public ModeSelectionVM()
{
InstallCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Installer));
InstallCommand = ReactiveCommand.Create(() =>
{
LoadLastLoadedModlist.Send();
NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Installer);
});
CompileCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Compiler));
BrowseCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.ModListGallery));
}