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
-
+