From 2a297d45b28006c8cc9713d68f24bca1121470d5 Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Tue, 9 Nov 2021 15:40:21 -0700 Subject: [PATCH] Fix login/logout buttons --- Wabbajack.App/Screens/SettingsView.axaml.cs | 13 ++++++++++ Wabbajack.App/Screens/SettingsViewModel.cs | 27 ++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/Wabbajack.App/Screens/SettingsView.axaml.cs b/Wabbajack.App/Screens/SettingsView.axaml.cs index fb7fc1cb..14d0306e 100644 --- a/Wabbajack.App/Screens/SettingsView.axaml.cs +++ b/Wabbajack.App/Screens/SettingsView.axaml.cs @@ -15,6 +15,19 @@ public partial class SettingsView : ScreenBase .DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.NexusLogout, view => view.NexusLogOut) .DisposeWith(disposables); + + this.BindCommand(ViewModel, vm => vm.LoversLabLogin, view => view.LoversLabLogIn) + .DisposeWith(disposables); + this.BindCommand(ViewModel, vm => vm.LoversLabLogout, view => view.LoversLabLogOut) + .DisposeWith(disposables); + + + this.BindCommand(ViewModel, vm => vm.VectorPlexusLogin, view => view.VectorPlexusLogIn) + .DisposeWith(disposables); + this.BindCommand(ViewModel, vm => vm.VectorPlexusLogout, view => view.VectorPlexusLogOut) + .DisposeWith(disposables); + + this.OneWayBind(ViewModel, vm => vm.Resources, view => view.ResourceList.Items) .DisposeWith(disposables); }); diff --git a/Wabbajack.App/Screens/SettingsViewModel.cs b/Wabbajack.App/Screens/SettingsViewModel.cs index e2cbbe40..679b910d 100644 --- a/Wabbajack.App/Screens/SettingsViewModel.cs +++ b/Wabbajack.App/Screens/SettingsViewModel.cs @@ -24,7 +24,7 @@ public class SettingsViewModel : ViewModelBase public readonly IEnumerable Resources; public SettingsViewModel(ILogger logger, Configuration configuration, - NexusApiTokenProvider nexusProvider, IEnumerable resources) + NexusApiTokenProvider nexusProvider, IEnumerable resources, LoversLabTokenProvider llProvider, VectorPlexusTokenProvider vpProvider) { _logger = logger; Resources = resources.Select(r => new ResourceViewModel(r)).ToArray(); @@ -50,12 +50,37 @@ public class SettingsViewModel : ViewModelBase ReactiveCommand.Create(() => { MessageBus.Current.SendMessage(new NavigateTo(typeof(NexusLoginViewModel))); }, haveNexusToken.Select(x => !x)); NexusLogout = ReactiveCommand.Create(nexusProvider.DeleteToken, haveNexusToken.Select(x => x)); + + var haveLLToken = _fileSystemEvents + .StartWith(AbsolutePath.Empty) + .Select(_ => llProvider.HaveToken()); + + LoversLabLogin = + ReactiveCommand.Create(() => { MessageBus.Current.SendMessage(new NavigateTo(typeof(LoversLabOAuthLoginViewModel))); }, + haveLLToken.Select(x => !x)); + LoversLabLogout = ReactiveCommand.Create(llProvider.DeleteToken, haveLLToken.Select(x => x)); + + var haveVectorPlexusToken = _fileSystemEvents + .StartWith(AbsolutePath.Empty) + .Select(_ => vpProvider.HaveToken()); + + VectorPlexusLogin = + ReactiveCommand.Create(() => { MessageBus.Current.SendMessage(new NavigateTo(typeof(VectorPlexusOAuthLoginViewModel))); }, + haveVectorPlexusToken.Select(x => !x)); + VectorPlexusLogout = ReactiveCommand.Create(vpProvider.DeleteToken, haveVectorPlexusToken.Select(x => x)); }); } public ReactiveCommand NexusLogin { get; set; } public ReactiveCommand NexusLogout { get; set; } + + public ReactiveCommand LoversLabLogin { get; set; } + public ReactiveCommand LoversLabLogout { get; set; } + + public ReactiveCommand VectorPlexusLogin { get; set; } + public ReactiveCommand VectorPlexusLogout { get; set; } + public FileSystemWatcher Watcher { get; set; } private void Pulse(object sender, FileSystemEventArgs e)