From 68fe1a2284045908d92ef06c1c26cd937ded784e Mon Sep 17 00:00:00 2001 From: Rory& Date: Sat, 20 Apr 2024 23:48:43 +0200 Subject: Add basic project management --- BugMine.Web/Components/IssueImportWorker.razor | 25 ++++++++++++++ BugMine.Web/Components/ProgressLog.razor | 16 +++++++++ BugMine.Web/Components/SimpleSpinner.razor | 18 ++++++++++ .../Components/UpdateAvailableDetector.razor | 38 ++++++++++++++++++++++ .../Components/UpdateAvailableDetector.razor.css | 15 +++++++++ 5 files changed, 112 insertions(+) create mode 100644 BugMine.Web/Components/IssueImportWorker.razor create mode 100644 BugMine.Web/Components/ProgressLog.razor create mode 100644 BugMine.Web/Components/SimpleSpinner.razor create mode 100644 BugMine.Web/Components/UpdateAvailableDetector.razor create mode 100644 BugMine.Web/Components/UpdateAvailableDetector.razor.css (limited to 'BugMine.Web/Components') diff --git a/BugMine.Web/Components/IssueImportWorker.razor b/BugMine.Web/Components/IssueImportWorker.razor new file mode 100644 index 0000000..bc72156 --- /dev/null +++ b/BugMine.Web/Components/IssueImportWorker.razor @@ -0,0 +1,25 @@ +@using LibMatrix.Homeservers +@inject ILogger Logger +@if(Client == null) { + Not logged in. + Login +} else { + + Logged in as @Client.Homeserver.UserId + Logout +} + +@code { + + private BugMineClient? Client { get; set; } + private string Status { get; set; } = ""; + protected override async Task OnInitializedAsync() { + while(Client == null) { + Client = await BugMineStorage.GetCurrentSessionOrNull(); + if(Client == null) { + await Task.Delay(1000); + } + } + } + +} \ No newline at end of file diff --git a/BugMine.Web/Components/ProgressLog.razor b/BugMine.Web/Components/ProgressLog.razor new file mode 100644 index 0000000..f149ac6 --- /dev/null +++ b/BugMine.Web/Components/ProgressLog.razor @@ -0,0 +1,16 @@ +@using System.Collections.ObjectModel + + +@code { + private ObservableCollection _messages = new ObservableCollection(); + + private ObservableCollection Messages { + get => _messages; + set { + _messages = value; + _messages.CollectionChanged += (_, _) => StateHasChanged(); + StateHasChanged(); + } + } + +} \ No newline at end of file diff --git a/BugMine.Web/Components/SimpleSpinner.razor b/BugMine.Web/Components/SimpleSpinner.razor new file mode 100644 index 0000000..920247d --- /dev/null +++ b/BugMine.Web/Components/SimpleSpinner.razor @@ -0,0 +1,18 @@ +
|
+ +@code { + int i = 0; + protected override void OnInitialized() + { + base.OnInitialized(); + Task.Run(async () => + { + while (true) + { + await Task.Delay(12); + i+=10; + StateHasChanged(); + } + }); + } +} \ No newline at end of file diff --git a/BugMine.Web/Components/UpdateAvailableDetector.razor b/BugMine.Web/Components/UpdateAvailableDetector.razor new file mode 100644 index 0000000..5197a6f --- /dev/null +++ b/BugMine.Web/Components/UpdateAvailableDetector.razor @@ -0,0 +1,38 @@ +@* Source: https://whuysentruit.medium.com/blazor-wasm-pwa-adding-a-new-update-available-notification-d9f65c4ad13 *@ +@inject IJSRuntime _jsRuntime + +@if (_newVersionAvailable) +{ + +} + +@code { + + private bool _newVersionAvailable = false; + + protected override async Task OnInitializedAsync() + { + await RegisterForUpdateAvailableNotification(); + } + + private async Task RegisterForUpdateAvailableNotification() + { + await _jsRuntime.InvokeAsync( + identifier: "registerForUpdateAvailableNotification", + DotNetObjectReference.Create(this), + nameof(OnUpdateAvailable)); + } + + [JSInvokable(nameof(OnUpdateAvailable))] + public Task OnUpdateAvailable() + { + _newVersionAvailable = true; + + StateHasChanged(); + + return Task.CompletedTask; + } + +} \ No newline at end of file diff --git a/BugMine.Web/Components/UpdateAvailableDetector.razor.css b/BugMine.Web/Components/UpdateAvailableDetector.razor.css new file mode 100644 index 0000000..047ea8d --- /dev/null +++ b/BugMine.Web/Components/UpdateAvailableDetector.razor.css @@ -0,0 +1,15 @@ +.floating-update-button { + position: fixed; + + right: 2rem; + bottom: 2rem; + + padding: 1rem 1.5rem; + + animation: fadein 2s ease-out; +} + +@keyframes fadein { + from { right: -100%; } + to { right: 2rem; } +} -- cgit 1.5.1