mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Merge pull request #348 from Noggog/downloader-adjustments
Downloader adjustments
This commit is contained in:
commit
cf2f988156
@ -129,6 +129,30 @@ namespace Wabbajack.Common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void CatchAndLog(Action a)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
a();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.Error(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task CatchAndLog(Func<Task> f)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await f();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.Error(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// MurMur3 hashes the file pointed to by this string
|
/// MurMur3 hashes the file pointed to by this string
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -8,7 +8,7 @@ using System.Windows.Input;
|
|||||||
|
|
||||||
namespace Wabbajack.Lib.Downloaders
|
namespace Wabbajack.Lib.Downloaders
|
||||||
{
|
{
|
||||||
public interface INeedsLogin : INotifyPropertyChanged
|
public interface INeedsLogin
|
||||||
{
|
{
|
||||||
ICommand TriggerLogin { get; }
|
ICommand TriggerLogin { get; }
|
||||||
ICommand ClearLogin { get; }
|
ICommand ClearLogin { get; }
|
||||||
@ -17,6 +17,5 @@ namespace Wabbajack.Lib.Downloaders
|
|||||||
string MetaInfo { get; }
|
string MetaInfo { get; }
|
||||||
Uri SiteURL { get; }
|
Uri SiteURL { get; }
|
||||||
Uri IconUri { get; }
|
Uri IconUri { get; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ using File = Alphaleonis.Win32.Filesystem.File;
|
|||||||
|
|
||||||
namespace Wabbajack.Lib.Downloaders
|
namespace Wabbajack.Lib.Downloaders
|
||||||
{
|
{
|
||||||
public class LoversLabDownloader : ViewModel, IDownloader, INeedsLogin
|
public class LoversLabDownloader : IDownloader, INeedsLogin
|
||||||
{
|
{
|
||||||
internal HttpClient _authedClient;
|
internal HttpClient _authedClient;
|
||||||
|
|
||||||
@ -40,8 +40,12 @@ namespace Wabbajack.Lib.Downloaders
|
|||||||
|
|
||||||
public LoversLabDownloader()
|
public LoversLabDownloader()
|
||||||
{
|
{
|
||||||
TriggerLogin = ReactiveCommand.Create(async () => await Utils.Log(new RequestLoversLabLogin()).Task, IsLoggedIn.Select(b => !b).ObserveOn(RxApp.MainThreadScheduler));
|
TriggerLogin = ReactiveCommand.CreateFromTask(
|
||||||
ClearLogin = ReactiveCommand.Create(() => Utils.DeleteEncryptedJson("loverslabcookies"), IsLoggedIn.ObserveOn(RxApp.MainThreadScheduler));
|
execute: () => Utils.CatchAndLog(async () => await Utils.Log(new RequestLoversLabLogin()).Task),
|
||||||
|
canExecute: IsLoggedIn.Select(b => !b).ObserveOn(RxApp.MainThreadScheduler));
|
||||||
|
ClearLogin = ReactiveCommand.Create(
|
||||||
|
execute: () => Utils.CatchAndLog(() => Utils.DeleteEncryptedJson("loverslabcookies")),
|
||||||
|
canExecute: IsLoggedIn.ObserveOn(RxApp.MainThreadScheduler));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -222,7 +226,7 @@ namespace Wabbajack.Lib.Downloaders
|
|||||||
public override void Cancel()
|
public override void Cancel()
|
||||||
{
|
{
|
||||||
Handled = true;
|
Handled = true;
|
||||||
_source.SetCanceled();
|
_source.TrySetCanceled();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,31 +13,18 @@ using Wabbajack.Lib.Validation;
|
|||||||
|
|
||||||
namespace Wabbajack.Lib.Downloaders
|
namespace Wabbajack.Lib.Downloaders
|
||||||
{
|
{
|
||||||
public class NexusDownloader : ViewModel, IDownloader, INeedsLogin
|
public class NexusDownloader : IDownloader, INeedsLogin
|
||||||
{
|
{
|
||||||
private bool _prepared;
|
private bool _prepared;
|
||||||
private SemaphoreSlim _lock = new SemaphoreSlim(1);
|
private SemaphoreSlim _lock = new SemaphoreSlim(1);
|
||||||
private UserStatus _status;
|
private UserStatus _status;
|
||||||
private NexusApiClient _client;
|
private NexusApiClient _client;
|
||||||
|
|
||||||
public NexusDownloader()
|
|
||||||
{
|
|
||||||
TriggerLogin = ReactiveCommand.Create(async () => await NexusApiClient.RequestAndCacheAPIKey(), IsLoggedIn.Select(b => !b).ObserveOn(RxApp.MainThreadScheduler));
|
|
||||||
ClearLogin = ReactiveCommand.Create(() => Utils.DeleteEncryptedJson("nexusapikey"), IsLoggedIn.ObserveOn(RxApp.MainThreadScheduler));
|
|
||||||
}
|
|
||||||
|
|
||||||
public IObservable<bool> IsLoggedIn => Utils.HaveEncryptedJsonObservable("nexusapikey");
|
public IObservable<bool> IsLoggedIn => Utils.HaveEncryptedJsonObservable("nexusapikey");
|
||||||
|
|
||||||
public string SiteName => "Nexus Mods";
|
public string SiteName => "Nexus Mods";
|
||||||
|
|
||||||
public string MetaInfo
|
public string MetaInfo => "";
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Uri SiteURL => new Uri("https://www.nexusmods.com");
|
public Uri SiteURL => new Uri("https://www.nexusmods.com");
|
||||||
|
|
||||||
@ -46,6 +33,16 @@ namespace Wabbajack.Lib.Downloaders
|
|||||||
public ICommand TriggerLogin { get; }
|
public ICommand TriggerLogin { get; }
|
||||||
public ICommand ClearLogin { get; }
|
public ICommand ClearLogin { get; }
|
||||||
|
|
||||||
|
public NexusDownloader()
|
||||||
|
{
|
||||||
|
TriggerLogin = ReactiveCommand.CreateFromTask(
|
||||||
|
execute: () => Utils.CatchAndLog(NexusApiClient.RequestAndCacheAPIKey),
|
||||||
|
canExecute: IsLoggedIn.Select(b => !b).ObserveOn(RxApp.MainThreadScheduler));
|
||||||
|
ClearLogin = ReactiveCommand.Create(
|
||||||
|
execute: () => Utils.CatchAndLog(() => Utils.DeleteEncryptedJson("nexusapikey")),
|
||||||
|
canExecute: IsLoggedIn.ObserveOn(RxApp.MainThreadScheduler));
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<AbstractDownloadState> GetDownloaderState(dynamic archiveINI)
|
public async Task<AbstractDownloadState> GetDownloaderState(dynamic archiveINI)
|
||||||
{
|
{
|
||||||
var general = archiveINI?.General;
|
var general = archiveINI?.General;
|
||||||
|
@ -24,7 +24,7 @@ namespace Wabbajack.Lib.NexusApi
|
|||||||
public override void Cancel()
|
public override void Cancel()
|
||||||
{
|
{
|
||||||
Handled = true;
|
Handled = true;
|
||||||
_source.SetCanceled();
|
_source.TrySetCanceled();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,9 @@
|
|||||||
<LangVersion>7.3</LangVersion>
|
<LangVersion>7.3</LangVersion>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||||
|
<WarningsAsErrors>CS4014</WarningsAsErrors>
|
||||||
|
<NoWarn>CS1998</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||||
<OutputPath>bin\x64\Release\</OutputPath>
|
<OutputPath>bin\x64\Release\</OutputPath>
|
||||||
@ -55,6 +58,8 @@
|
|||||||
<LangVersion>7.3</LangVersion>
|
<LangVersion>7.3</LangVersion>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<WarningsAsErrors>CS4014</WarningsAsErrors>
|
||||||
|
<NoWarn>CS1998</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="MongoDB.Bson">
|
<Reference Include="MongoDB.Bson">
|
||||||
|
@ -28,8 +28,6 @@ namespace Wabbajack
|
|||||||
|
|
||||||
public FilePickerVM ModListLocation { get; }
|
public FilePickerVM ModListLocation { get; }
|
||||||
|
|
||||||
public IReactiveCommand BeginCommand { get; }
|
|
||||||
|
|
||||||
[Reactive]
|
[Reactive]
|
||||||
public ACompiler ActiveCompilation { get; private set; }
|
public ACompiler ActiveCompilation { get; private set; }
|
||||||
|
|
||||||
|
@ -20,8 +20,6 @@ namespace Wabbajack
|
|||||||
|
|
||||||
private readonly VortexCompilationSettings _settings;
|
private readonly VortexCompilationSettings _settings;
|
||||||
|
|
||||||
public IReactiveCommand BeginCommand { get; }
|
|
||||||
|
|
||||||
private readonly ObservableAsPropertyHelper<ModlistSettingsEditorVM> _modListSettings;
|
private readonly ObservableAsPropertyHelper<ModlistSettingsEditorVM> _modListSettings;
|
||||||
public ModlistSettingsEditorVM ModlistSettings => _modListSettings.Value;
|
public ModlistSettingsEditorVM ModlistSettings => _modListSettings.Value;
|
||||||
|
|
||||||
|
@ -74,7 +74,29 @@ namespace Wabbajack
|
|||||||
Utils.LogMessages
|
Utils.LogMessages
|
||||||
.OfType<IUserIntervention>()
|
.OfType<IUserIntervention>()
|
||||||
.ObserveOnGuiThread()
|
.ObserveOnGuiThread()
|
||||||
.SelectTask(msg => UserInterventionHandlers.Handle(msg))
|
.SelectTask(async msg =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await UserInterventionHandlers.Handle(msg);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
when (ex.GetType() != typeof(TaskCanceledException))
|
||||||
|
{
|
||||||
|
Utils.Error(ex, $"Error while handling user intervention of type {msg?.GetType()}");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!msg.Handled)
|
||||||
|
{
|
||||||
|
msg.Cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception cancelEx)
|
||||||
|
{
|
||||||
|
Utils.Error(cancelEx, $"Error while cancelling user intervention of type {msg?.GetType()}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
.Subscribe()
|
.Subscribe()
|
||||||
.DisposeWith(CompositeDisposable);
|
.DisposeWith(CompositeDisposable);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user