From d3ded255bfcd308bb990d4d63bc34735a17bf6f3 Mon Sep 17 00:00:00 2001 From: Unnoen Date: Wed, 12 Jan 2022 03:26:47 +1100 Subject: [PATCH] Controllers are dumb. --- .../Components/ModlistItem.razor | 7 +-- .../Components/ModlistItem.razor.cs | 30 ++++++----- .../Components/ModlistItem.razor.scss | 2 +- .../Components/ProgressBar.razor | 5 +- .../Controllers/DownloadController.cs | 51 ------------------- Wabbajack.App.Blazor/Pages/Configure.razor | 11 ++-- Wabbajack.App.Blazor/Pages/Gallery.razor | 28 ++++++++-- Wabbajack.App.Blazor/Pages/Gallery.razor.cs | 30 ----------- Wabbajack.App.Blazor/Store/DownloadState.cs | 11 ++-- 9 files changed, 58 insertions(+), 117 deletions(-) delete mode 100644 Wabbajack.App.Blazor/Controllers/DownloadController.cs delete mode 100644 Wabbajack.App.Blazor/Pages/Gallery.razor.cs diff --git a/Wabbajack.App.Blazor/Components/ModlistItem.razor b/Wabbajack.App.Blazor/Components/ModlistItem.razor index de69b886..5223f027 100644 --- a/Wabbajack.App.Blazor/Components/ModlistItem.razor +++ b/Wabbajack.App.Blazor/Components/ModlistItem.razor @@ -1,12 +1,13 @@ @namespace Wabbajack.App.Blazor.Components @using Wabbajack.App.Blazor.Store +@using Wabbajack.RateLimiter @inherits Fluxor.Blazor.Web.Components.FluxorComponent
@Metadata.Title Image
- @if (_installState.Value.CurrentInstallState != InstallState.InstallStateEnum.Configuration) + @if (_downloadState.Value.CurrentDownloadState == DownloadState.DownloadStateEnum.Downloading) { } @@ -17,9 +18,9 @@ Information
- @if (_installState.Value.CurrentInstallState == InstallState.InstallStateEnum.Downloading && _installState.Value.CurrentModlistMetadata == Metadata) + @if (DownloadProgress != Percent.Zero) { - + }
@Metadata.Title
diff --git a/Wabbajack.App.Blazor/Components/ModlistItem.razor.cs b/Wabbajack.App.Blazor/Components/ModlistItem.razor.cs index 0527d9f7..a95c0996 100644 --- a/Wabbajack.App.Blazor/Components/ModlistItem.razor.cs +++ b/Wabbajack.App.Blazor/Components/ModlistItem.razor.cs @@ -1,29 +1,29 @@ using System; using System.Diagnostics; -using System.Reactive.Disposables; using System.Threading; using System.Threading.Tasks; using Fluxor; using Microsoft.AspNetCore.Components; -using Microsoft.CodeAnalysis; -using Microsoft.Extensions.Logging; using Wabbajack.App.Blazor.Store; +using Wabbajack.Common; using Wabbajack.DTOs; -using Wabbajack.Networking.WabbajackClientApi; +using Wabbajack.Paths.IO; using Wabbajack.RateLimiter; using Wabbajack.Services.OSIntegrated.Services; + namespace Wabbajack.App.Blazor.Components { public partial class ModlistItem { - [Inject] private ModListDownloadMaintainer _maintainer { get; set; } - [Inject] private IState _downloadState { get; set; } - [Inject] private IDispatcher _dispatcher { get; set; } + [Inject] private IState _downloadState { get; set; } + [Inject] private ModListDownloadMaintainer _maintainer { get; set; } + [Inject] private IDispatcher _dispatcher { get; set; } + [Inject] private NavigationManager NavigationManager { get; set; } [Parameter] public ModlistMetadata Metadata { get; set; } - public double PercentDownloaded { get; set; } + public Percent DownloadProgress { get; set; } private async Task Download() { @@ -31,25 +31,27 @@ namespace Wabbajack.App.Blazor.Components timer.Change(TimeSpan.FromMilliseconds(250), TimeSpan.FromMilliseconds(250)); try { - UpdateInstallState(InstallState.InstallStateEnum.Downloading, Metadata); - + UpdateDownloadState(DownloadState.DownloadStateEnum.Downloading, Metadata); (IObservable progress, Task task) = _maintainer.DownloadModlist(Metadata); - IDisposable dispose = progress.Subscribe(p => { PercentDownloaded = p.Value * 100; }); + IDisposable dispose = progress.Subscribe(p => DownloadProgress = p); await task; //await _wjClient.SendMetric("downloading", Metadata.Title); - Debug.Print("##### WE DOWNLOADED THE THING!"); - UpdateInstallState(InstallState.InstallStateEnum.Configuration); + UpdateDownloadState(DownloadState.DownloadStateEnum.Downloaded, Metadata); dispose.Dispose(); + NavigationManager.NavigateTo($"configure/{Metadata.Links.MachineURL}"); + } catch (Exception e) { Debug.Print(e.Message); + UpdateDownloadState(DownloadState.DownloadStateEnum.Failure, Metadata); } await timer.DisposeAsync(); } - private void UpdateInstallState(InstallState.InstallStateEnum state, ModlistMetadata? metadata = null) => _dispatcher.Dispatch(new UpdateInstallState(state, metadata)); + private void UpdateDownloadState(DownloadState.DownloadStateEnum state, ModlistMetadata metadata) => + _dispatcher.Dispatch(new UpdateDownloadState(state, metadata)); } } \ No newline at end of file diff --git a/Wabbajack.App.Blazor/Components/ModlistItem.razor.scss b/Wabbajack.App.Blazor/Components/ModlistItem.razor.scss index 3c83ad1f..54f9261f 100644 --- a/Wabbajack.App.Blazor/Components/ModlistItem.razor.scss +++ b/Wabbajack.App.Blazor/Components/ModlistItem.razor.scss @@ -49,7 +49,7 @@ $hover-icon-size: 75px; margin: 0; transition: all 150ms ease-in-out; - .hidden { + &.hidden { opacity: 0.25; } diff --git a/Wabbajack.App.Blazor/Components/ProgressBar.razor b/Wabbajack.App.Blazor/Components/ProgressBar.razor index f82c61d5..393c3ce7 100644 --- a/Wabbajack.App.Blazor/Components/ProgressBar.razor +++ b/Wabbajack.App.Blazor/Components/ProgressBar.razor @@ -1,7 +1,8 @@ - +@using Wabbajack.RateLimiter + @code { [Parameter] - public double Percentage { get; set; } + public Percent Percentage { get; set; } } \ No newline at end of file diff --git a/Wabbajack.App.Blazor/Controllers/DownloadController.cs b/Wabbajack.App.Blazor/Controllers/DownloadController.cs deleted file mode 100644 index 90461cdc..00000000 --- a/Wabbajack.App.Blazor/Controllers/DownloadController.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Diagnostics; -using System.Threading.Tasks; -using Fluxor; -using Wabbajack.App.Blazor.Store; -using Wabbajack.DTOs; -using Wabbajack.RateLimiter; -using Wabbajack.Services.OSIntegrated.Services; - -namespace Wabbajack.App.Blazor.Controllers; - -public class DownloadController -{ - private readonly ModListDownloadMaintainer _maintainer; - private readonly IState _downloadState; - private IDispatcher _dispatcher; - - public DownloadController(ModListDownloadMaintainer maintainer, IState downloadState, IDispatcher dispatcher) - { - _maintainer = maintainer; - _downloadState = downloadState; - _dispatcher = dispatcher; - } - - private async Task DownloadModlist(ModlistMetadata metadata) - { - // await using Timer timer = new(_ => InvokeAsync(StateHasChanged)); - // timer.Change(TimeSpan.FromMilliseconds(250), TimeSpan.FromMilliseconds(250)); - try - { - (IObservable progress, Task task) = _maintainer.DownloadModlist(metadata); - IDisposable dispose = progress.Subscribe(p => - { - UpdateDownloadState(DownloadState.DownloadStateEnum.Downloading, metadata, p); - }); - - await task; - //await _wjClient.SendMetric("downloading", Metadata.Title); - UpdateDownloadState(DownloadState.DownloadStateEnum.Downloaded, metadata); - dispose.Dispose(); - } - catch (Exception e) - { - Debug.Print(e.Message); - } - - // await timer.DisposeAsync(); - } - - private void UpdateDownloadState(DownloadState.DownloadStateEnum state, ModlistMetadata metadata, Percent? progress = null) => _dispatcher.Dispatch(new UpdateDownloadState(state, metadata, progress)); -} \ No newline at end of file diff --git a/Wabbajack.App.Blazor/Pages/Configure.razor b/Wabbajack.App.Blazor/Pages/Configure.razor index f281a439..eb2c4536 100644 --- a/Wabbajack.App.Blazor/Pages/Configure.razor +++ b/Wabbajack.App.Blazor/Pages/Configure.razor @@ -1,7 +1,7 @@ -@page "/configure/{path}" +@page "/configure/{machineURL}" @layout Shared.MainLayout @using System.Diagnostics -@using Wabbajack.Paths +@using Wabbajack.Common @using Wabbajack.Paths.IO @inherits Fluxor.Blazor.Web.Components.FluxorComponent @@ -32,15 +32,16 @@ @code { [Parameter] - public string path { get; set; } + public string machineURL { get; set; } protected override void OnInitialized() { - var file = path.ToAbsolutePath(); - if (file.FileExists()) + var Location = KnownFolders.EntryPoint.Combine("downloaded_mod_lists", machineURL).WithExtension(Ext.Wabbajack); + if (Location.FileExists()) { Debug.Print("IT EXISTS I GUESS"); } + base.OnInitialized(); } } \ No newline at end of file diff --git a/Wabbajack.App.Blazor/Pages/Gallery.razor b/Wabbajack.App.Blazor/Pages/Gallery.razor index 35ab9724..65db4093 100644 --- a/Wabbajack.App.Blazor/Pages/Gallery.razor +++ b/Wabbajack.App.Blazor/Pages/Gallery.razor @@ -1,7 +1,5 @@ @page "/gallery" @layout Shared.MainLayout -@inherits Fluxor.Blazor.Web.Components.FluxorComponent - @using Wabbajack.Networking.WabbajackClientApi; @using Wabbajack.DTOs @@ -12,4 +10,28 @@ { } -
\ No newline at end of file +
+ +@code { + + List _listItems = new(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (!firstRender) return base.OnAfterRenderAsync(firstRender); + + try + { + ModlistMetadata[] modLists = await _client.LoadLists(); + _listItems = modLists.ToList(); + StateHasChanged(); + } + catch (Exception ex) + { + Console.WriteLine(ex); + } + + return base.OnAfterRenderAsync(firstRender); + } + +} \ No newline at end of file diff --git a/Wabbajack.App.Blazor/Pages/Gallery.razor.cs b/Wabbajack.App.Blazor/Pages/Gallery.razor.cs deleted file mode 100644 index 9f75c15b..00000000 --- a/Wabbajack.App.Blazor/Pages/Gallery.razor.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Wabbajack.DTOs; - -namespace Wabbajack.App.Blazor.Pages; - -public partial class Gallery -{ - List _listItems = new(); - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (!firstRender) return base.OnAfterRenderAsync(firstRender); - - try - { - ModlistMetadata[] modLists = await _client.LoadLists(); - _listItems = modLists.ToList(); - StateHasChanged(); - } - catch (Exception ex) - { - Console.WriteLine(ex); - } - - return base.OnAfterRenderAsync(firstRender); - } -} \ No newline at end of file diff --git a/Wabbajack.App.Blazor/Store/DownloadState.cs b/Wabbajack.App.Blazor/Store/DownloadState.cs index ea1e635a..1831c95d 100644 --- a/Wabbajack.App.Blazor/Store/DownloadState.cs +++ b/Wabbajack.App.Blazor/Store/DownloadState.cs @@ -1,6 +1,5 @@ using Fluxor; using Wabbajack.DTOs; -using Wabbajack.RateLimiter; namespace Wabbajack.App.Blazor.Store; @@ -9,16 +8,14 @@ public class DownloadState { public DownloadStateEnum CurrentDownloadState { get; } public ModlistMetadata CurrentModlistMetadata { get; } - public Percent CurrentDownloadProgress { get; } // Required for initial state. private DownloadState() { } - public DownloadState(DownloadStateEnum newState, ModlistMetadata newModlist, Percent newProgress) + public DownloadState(DownloadStateEnum newState, ModlistMetadata newModlist) { CurrentDownloadState = newState; CurrentModlistMetadata = newModlist; - CurrentDownloadProgress = newProgress; } public enum DownloadStateEnum @@ -34,13 +31,11 @@ public class UpdateDownloadState { public DownloadState.DownloadStateEnum State { get; } public ModlistMetadata Modlist { get; } - public Percent DownloadProgress { get; } - public UpdateDownloadState(DownloadState.DownloadStateEnum state, ModlistMetadata modlist, Percent? currentDownloadProgress) + public UpdateDownloadState(DownloadState.DownloadStateEnum state, ModlistMetadata modlist) { State = state; Modlist = modlist; - DownloadProgress = currentDownloadProgress ?? Percent.Zero; } } @@ -48,5 +43,5 @@ public static class DownloadStateReducers { [ReducerMethod] public static DownloadState ReduceChangeDownloadState(DownloadState state, UpdateDownloadState action) => - new(action.State, action.Modlist, action.DownloadProgress); + new(action.State, action.Modlist); } \ No newline at end of file