about summary refs log tree commit diff
path: root/BugMine.Web/Components
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2024-04-20 23:48:43 +0200
committerRory& <root@rory.gay>2024-04-20 23:48:43 +0200
commit68fe1a2284045908d92ef06c1c26cd937ded784e (patch)
tree71144f404f060888dcc5e4036e038abe857adc4e /BugMine.Web/Components
parentStart adding pages (diff)
downloadBugMine-68fe1a2284045908d92ef06c1c26cd937ded784e.tar.xz
Add basic project management
Diffstat (limited to 'BugMine.Web/Components')
-rw-r--r--BugMine.Web/Components/IssueImportWorker.razor25
-rw-r--r--BugMine.Web/Components/ProgressLog.razor16
-rw-r--r--BugMine.Web/Components/SimpleSpinner.razor18
-rw-r--r--BugMine.Web/Components/UpdateAvailableDetector.razor38
-rw-r--r--BugMine.Web/Components/UpdateAvailableDetector.razor.css15
5 files changed, 112 insertions, 0 deletions
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<IssueImportWorker> Logger +@if(Client == null) { + <span>Not logged in.</span> + <a href="/Auth/Login">Login</a> +} else { + + <span>Logged in as @Client.Homeserver.UserId</span> + <a href="/Auth/Logout">Logout</a> +} + +@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<string> _messages = new ObservableCollection<string>(); + + private ObservableCollection<string> 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 @@ +<pre style="width: fit-content; height: fit-content; background-color: transparent; color: white; rotate: @(i)deg;">|</pre> + +@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) +{ + <button type="button" class="btn btn-warning shadow floating-update-button" onclick="window.location.reload()"> + A new version of the application is available. Click here to reload. + </button> +} + +@code { + + private bool _newVersionAvailable = false; + + protected override async Task OnInitializedAsync() + { + await RegisterForUpdateAvailableNotification(); + } + + private async Task RegisterForUpdateAvailableNotification() + { + await _jsRuntime.InvokeAsync<object>( + 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; } +}