diff --git a/CHANGELOG.md b/CHANGELOG.md index f36033dc..97f3b900 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ### Changelog +#### Version - 2.3.4.3 - 12/6/2020 +* Disable the back button during install/compilation + #### Version - 2.3.4.2 - 11/24/2020 * Add Support for Kingdom Come : Deliverance (via MO2) * Several other small bug fixes and deps updates diff --git a/Compression.BSA/Compression.BSA.csproj b/Compression.BSA/Compression.BSA.csproj index 7b51c3b9..25f52db0 100644 --- a/Compression.BSA/Compression.BSA.csproj +++ b/Compression.BSA/Compression.BSA.csproj @@ -21,7 +21,7 @@ - + diff --git a/Wabbajack.CLI/Wabbajack.CLI.csproj b/Wabbajack.CLI/Wabbajack.CLI.csproj index 111105c0..16237353 100644 --- a/Wabbajack.CLI/Wabbajack.CLI.csproj +++ b/Wabbajack.CLI/Wabbajack.CLI.csproj @@ -6,8 +6,8 @@ wabbajack-cli Wabbajack x64 - 2.3.4.2 - 2.3.4.2 + 2.3.4.3 + 2.3.4.3 Copyright © 2019-2020 An automated ModList installer true @@ -19,7 +19,7 @@ - + diff --git a/Wabbajack.Common/Wabbajack.Common.csproj b/Wabbajack.Common/Wabbajack.Common.csproj index 3bebdf1c..ef4895e7 100644 --- a/Wabbajack.Common/Wabbajack.Common.csproj +++ b/Wabbajack.Common/Wabbajack.Common.csproj @@ -56,7 +56,7 @@ - + diff --git a/Wabbajack.Launcher/Wabbajack.Launcher.csproj b/Wabbajack.Launcher/Wabbajack.Launcher.csproj index acd5d1ac..9bdb83d4 100644 --- a/Wabbajack.Launcher/Wabbajack.Launcher.csproj +++ b/Wabbajack.Launcher/Wabbajack.Launcher.csproj @@ -4,8 +4,8 @@ WinExe netcoreapp3.1 true - 2.3.4.2 - 2.3.4.2 + 2.3.4.3 + 2.3.4.3 Copyright © 2019-2020 Wabbajack Application Launcher true diff --git a/Wabbajack.Lib/Wabbajack.Lib.csproj b/Wabbajack.Lib/Wabbajack.Lib.csproj index 5f42ead1..a00d3242 100644 --- a/Wabbajack.Lib/Wabbajack.Lib.csproj +++ b/Wabbajack.Lib/Wabbajack.Lib.csproj @@ -8,10 +8,10 @@ - 85.3.130 + 86.0.241 - 85.3.130 + 86.0.241 3.1.0 diff --git a/Wabbajack.Server/Services/DiscordFrontend.cs b/Wabbajack.Server/Services/DiscordFrontend.cs index 9d7061af..d324debb 100644 --- a/Wabbajack.Server/Services/DiscordFrontend.cs +++ b/Wabbajack.Server/Services/DiscordFrontend.cs @@ -6,6 +6,7 @@ using Discord.WebSocket; using Microsoft.Extensions.Logging; using OMODFramework; using Wabbajack.BuildServer; +using Wabbajack.Common; using Wabbajack.Server.DataLayer; using Utils = Wabbajack.Common.Utils; @@ -57,6 +58,25 @@ namespace Wabbajack.Server.Services } await PurgeNexusCache(arg, parts[2]); } + else if (parts[1] == "cyberpunk") + { + var random = new Random(); + var releaseDate = new DateTime(2020, 12, 10, 0, 0, 0, DateTimeKind.Utc); + var r = releaseDate - DateTime.UtcNow; + if (r < TimeSpan.Zero) + { + await ReplyTo(arg, "It's out, what are you doing here?"); + } + else + { + var msgs = (await "cyberpunk_message.txt".RelativeTo(AbsolutePath.EntryPoint) + .ReadAllLinesAsync()).ToArray(); + var msg = msgs[random.Next(0, msgs.Length)]; + var fullmsg = String.Format(msg, + $"{r.Days} days, {r.Hours} hours, {r.Minutes} minutes, {r.Seconds} seconds"); + await ReplyTo(arg, fullmsg); + } + } } } @@ -64,7 +84,7 @@ namespace Wabbajack.Server.Services { if (Uri.TryCreate(mod, UriKind.Absolute, out var url)) { - mod = url.AbsolutePath.Split("/", StringSplitOptions.RemoveEmptyEntries).Last(); + mod = Enumerable.Last(url.AbsolutePath.Split("/", StringSplitOptions.RemoveEmptyEntries)); } if (int.TryParse(mod, out var mod_id)) diff --git a/Wabbajack.Server/Wabbajack.Server.csproj b/Wabbajack.Server/Wabbajack.Server.csproj index a9854d4e..9eb7a5f2 100644 --- a/Wabbajack.Server/Wabbajack.Server.csproj +++ b/Wabbajack.Server/Wabbajack.Server.csproj @@ -3,8 +3,8 @@ Exe netcoreapp3.1 - 2.3.4.2 - 2.3.4.2 + 2.3.4.3 + 2.3.4.3 Copyright © 2019-2020 Wabbajack Server win-x64 diff --git a/Wabbajack.Test/Wabbajack.Test.csproj b/Wabbajack.Test/Wabbajack.Test.csproj index 4ef2cd16..9ebc4f4d 100644 --- a/Wabbajack.Test/Wabbajack.Test.csproj +++ b/Wabbajack.Test/Wabbajack.Test.csproj @@ -28,9 +28,9 @@ - - - + + + diff --git a/Wabbajack.VirtualFileSystem.Test/Wabbajack.VirtualFileSystem.Test.csproj b/Wabbajack.VirtualFileSystem.Test/Wabbajack.VirtualFileSystem.Test.csproj index 0fa7d79b..c5041fcd 100644 --- a/Wabbajack.VirtualFileSystem.Test/Wabbajack.VirtualFileSystem.Test.csproj +++ b/Wabbajack.VirtualFileSystem.Test/Wabbajack.VirtualFileSystem.Test.csproj @@ -8,7 +8,7 @@ - + diff --git a/Wabbajack.VirtualFileSystem/Wabbajack.VirtualFileSystem.csproj b/Wabbajack.VirtualFileSystem/Wabbajack.VirtualFileSystem.csproj index 505d0256..bc1043c9 100644 --- a/Wabbajack.VirtualFileSystem/Wabbajack.VirtualFileSystem.csproj +++ b/Wabbajack.VirtualFileSystem/Wabbajack.VirtualFileSystem.csproj @@ -16,7 +16,7 @@ - + diff --git a/Wabbajack/View Models/BackNavigatingVM.cs b/Wabbajack/View Models/BackNavigatingVM.cs index 8dad3ebc..b4cef5e5 100644 --- a/Wabbajack/View Models/BackNavigatingVM.cs +++ b/Wabbajack/View Models/BackNavigatingVM.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Reactive; using System.Reactive.Linq; +using System.Reactive.Subjects; using System.Text; using System.Threading.Tasks; using System.Windows.Input; @@ -17,6 +18,9 @@ namespace Wabbajack { ViewModel NavigateBackTarget { get; set; } ReactiveCommand BackCommand { get; } + + Subject IsBackEnabledSubject { get; } + IObservable IsBackEnabled { get; } } public class BackNavigatingVM : ViewModel, IBackNavigatingVM @@ -27,9 +31,13 @@ namespace Wabbajack private readonly ObservableAsPropertyHelper _IsActive; public bool IsActive => _IsActive.Value; + + public Subject IsBackEnabledSubject { get; } = new Subject(); + public IObservable IsBackEnabled { get; } public BackNavigatingVM(MainWindowVM mainWindowVM) { + IsBackEnabled = IsBackEnabledSubject.StartWith(true); BackCommand = ReactiveCommand.Create( execute: () => Utils.CatchAndLog(() => { @@ -53,7 +61,8 @@ namespace Wabbajack public static IObservable ConstructCanNavigateBack(this IBackNavigatingVM vm) { return vm.WhenAny(x => x.NavigateBackTarget) - .Select(x => x != null); + .CombineLatest(vm.IsBackEnabled) + .Select(x => x.First != null && x.Second); } public static IObservable ConstructIsActive(this IBackNavigatingVM vm, MainWindowVM mwvm) diff --git a/Wabbajack/View Models/Compilers/CompilerVM.cs b/Wabbajack/View Models/Compilers/CompilerVM.cs index 6ac4d3aa..38f78933 100644 --- a/Wabbajack/View Models/Compilers/CompilerVM.cs +++ b/Wabbajack/View Models/Compilers/CompilerVM.cs @@ -10,6 +10,7 @@ using System.Linq; using System.Reactive; using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Reactive.Subjects; using System.Windows.Input; using System.Windows.Media.Imaging; using Wabbajack.Common; @@ -18,16 +19,13 @@ using Wabbajack.Lib; namespace Wabbajack { - public class CompilerVM : ViewModel, IBackNavigatingVM, ICpuStatusVM + public class CompilerVM : BackNavigatingVM, IBackNavigatingVM, ICpuStatusVM { public MainWindowVM MWVM { get; } private readonly ObservableAsPropertyHelper _image; public BitmapImage Image => _image.Value; - [Reactive] - public ViewModel NavigateBackTarget { get; set; } - [Reactive] public ModManager SelectedCompilerType { get; set; } @@ -69,7 +67,7 @@ namespace Wabbajack private readonly ObservableAsPropertyHelper<(int CurrentCPUs, int DesiredCPUs)> _CurrentCpuCount; public (int CurrentCPUs, int DesiredCPUs) CurrentCpuCount => _CurrentCpuCount.Value; - public CompilerVM(MainWindowVM mainWindowVM) + public CompilerVM(MainWindowVM mainWindowVM) : base(mainWindowVM) { MWVM = mainWindowVM; @@ -178,6 +176,7 @@ namespace Wabbajack { try { + IsBackEnabledSubject.OnNext(false); var modList = await this.Compiler.Compile(); Completed = ErrorResponse.Create(modList.Succeeded); } @@ -187,6 +186,10 @@ namespace Wabbajack while (ex.InnerException != null) ex = ex.InnerException; Utils.Error(ex, $"Compiler error"); } + finally + { + IsBackEnabledSubject.OnNext(true); + } }); // When sub compiler begins a compile, mark state variable diff --git a/Wabbajack/View Models/Installers/InstallerVM.cs b/Wabbajack/View Models/Installers/InstallerVM.cs index a56e3a66..ab8de50d 100644 --- a/Wabbajack/View Models/Installers/InstallerVM.cs +++ b/Wabbajack/View Models/Installers/InstallerVM.cs @@ -19,13 +19,14 @@ using DynamicData.Binding; using Wabbajack.Common.StatusFeed; using System.Reactive; using System.Collections.Generic; +using System.Reactive.Subjects; using System.Windows.Input; using Microsoft.WindowsAPICodePack.Dialogs; using Wabbajack.Common.IO; namespace Wabbajack { - public class InstallerVM : ViewModel, IBackNavigatingVM, ICpuStatusVM + public class InstallerVM : BackNavigatingVM, IBackNavigatingVM, ICpuStatusVM { public SlideShow Slideshow { get; } @@ -36,9 +37,6 @@ namespace Wabbajack public FilePickerVM ModListLocation { get; } - [Reactive] - public ViewModel NavigateBackTarget { get; set; } - private readonly ObservableAsPropertyHelper _installer; public ISubInstallerVM Installer => _installer.Value; @@ -95,12 +93,15 @@ namespace Wabbajack public ReactiveCommand OpenReadmeCommand { get; } public ReactiveCommand VisitModListWebsiteCommand { get; } public ReactiveCommand BackCommand { get; } + + public ReactiveCommand CloseWhenCompleteCommand { get; } public ReactiveCommand GoToInstallCommand { get; } public ReactiveCommand BeginCommand { get; } - public InstallerVM(MainWindowVM mainWindowVM) + public InstallerVM(MainWindowVM mainWindowVM) : base(mainWindowVM) { + if (Path.GetDirectoryName(Assembly.GetEntryAssembly().Location.ToLower()) == KnownFolders.Downloads.Path.ToLower()) { Utils.Error(new CriticalFailureIntervention( @@ -369,6 +370,7 @@ namespace Wabbajack try { Utils.Log($"Starting to install {ModList.Name}"); + IsBackEnabledSubject.OnNext(false); var success = await this.Installer.Install(); Completed = ErrorResponse.Create(success); try @@ -381,11 +383,15 @@ namespace Wabbajack } } catch (Exception ex) - { + { Utils.Error(ex, $"Encountered error, can't continue"); while (ex.InnerException != null) ex = ex.InnerException; Completed = ErrorResponse.Fail(ex); } + finally + { + IsBackEnabledSubject.OnNext(true); + } }); // When sub installer begins an install, mark state variable diff --git a/Wabbajack/View Models/WebBrowserVM.cs b/Wabbajack/View Models/WebBrowserVM.cs index aac18c58..2885c8df 100644 --- a/Wabbajack/View Models/WebBrowserVM.cs +++ b/Wabbajack/View Models/WebBrowserVM.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Reactive; +using System.Reactive.Linq; +using System.Reactive.Subjects; using System.Text; using System.Threading.Tasks; using CefSharp; @@ -28,8 +30,12 @@ namespace Wabbajack [Reactive] public ReactiveCommand BackCommand { get; set; } + public Subject IsBackEnabledSubject { get; } = new Subject(); + public IObservable IsBackEnabled { get; } + private WebBrowserVM(string url = "http://www.wabbajack.org") { + IsBackEnabled = IsBackEnabledSubject.StartWith(true); Instructions = "Wabbajack Web Browser"; } diff --git a/Wabbajack/Wabbajack.csproj b/Wabbajack/Wabbajack.csproj index 58ff96eb..0580401c 100644 --- a/Wabbajack/Wabbajack.csproj +++ b/Wabbajack/Wabbajack.csproj @@ -6,8 +6,8 @@ true x64 win10-x64 - 2.3.4.2 - 2.3.4.2 + 2.3.4.3 + 2.3.4.3 Copyright © 2019-2020 An automated ModList installer true @@ -55,7 +55,7 @@ - + @@ -67,7 +67,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - +