about summary refs log tree commit diff
path: root/BugMine.Web/Components/ProjectContainer.razor
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2024-07-09 00:18:44 +0200
committerRory& <root@rory.gay>2024-07-09 00:18:44 +0200
commit63677f70bf0663ef3fae47b4fce64d9de7f428f4 (patch)
treed7fba0f181c45fee61952e3d01b67d5c2c9a9a92 /BugMine.Web/Components/ProjectContainer.razor
parentAdd basic issues, abstract project loading to component in web (diff)
downloadBugMine-master.tar.xz
Older changes HEAD github/master master
Diffstat (limited to 'BugMine.Web/Components/ProjectContainer.razor')
-rw-r--r--BugMine.Web/Components/ProjectContainer.razor152
1 files changed, 0 insertions, 152 deletions
diff --git a/BugMine.Web/Components/ProjectContainer.razor b/BugMine.Web/Components/ProjectContainer.razor
deleted file mode 100644

index f7621be..0000000 --- a/BugMine.Web/Components/ProjectContainer.razor +++ /dev/null
@@ -1,152 +0,0 @@ -@using System.Text.Json.Serialization -@using ArcaneLibs.Extensions -@using BugMine.Web.Classes.Exceptions -@using LibMatrix -@inject ILogger<ProjectContainer> Logger - -@if (Constants.Debug) { - <p>Debug, beware: here be dragons!</p> - <p>ProjectContainer debug info:</p> - <pre>Slug: @ProjectSlug</pre> - <pre>Progress: @Progress.ToString()</pre> - @if (ProjectContext is null) { - <pre>ProjectContext is null!</pre> - } - else { - <details> - <summary>Context json dump</summary> - <pre>@ProjectContext.ToJson()</pre> - </details> - @if (ProjectContext?.Project?.Room is not null) { - <LinkButton OnClick="@ProjectContext.Project.Room.PermanentlyBrickRoomAsync">Dispose room</LinkButton> - } - } - - <hr/> -} -@if (ProjectContext.Client is null) { - <p>Authenticating</p> -} -else if (ProjectContext?.Project is null) { - @if (Progress == Status.Loading) { - <p>Loading project <SimpleSpinner/></p> - } - else if (Progress == Status.NotInRoom) { - <p>You are not in the project room.</p> - <p>You must join before you can view or interact with this project.</p> - <LinkButton OnClick="TryJoin">Attempt to join</LinkButton> - } - else if (Progress == Status.RoomNotFound) { - <p>Project not found.</p> - <p>If you believe this is an error, please contact the project in order to obtain a new room.</p> - } -} -else { - @ChildContent -} - -@code { - private Status? _progress = Status.Loading; - - [Parameter] - public string ProjectSlug { get; set; } = null!; - - [Parameter] - public ProjectContainerContext? ProjectContext { get; set; } - - [Parameter] - public RenderFragment ChildContent { get; set; } - - [Parameter] - public Func<Task>? Loaded { get; set; } - - private Status? Progress { - get => _progress; - set { - _progress = value; - StateHasChanged(); - } - } - - protected override async Task OnInitializedAsync() { - if (ProjectContext is null) { - Logger.LogError("ProjectContext is null"); - ProjectContext = new(); - } - - if (ProjectContext.Project != null) { - Logger.LogWarning("ProjectContext.Project is not null"); - } - - ProjectContext.Client ??= await BugMineStorage.GetCurrentSessionOrNavigate(); - if (ProjectContext.Client == null) { - return; - } - - Progress = Status.Loading; - - try { - ProjectContext.Project = await ProjectContext.Client.GetProject(ProjectSlug); - } - catch (MatrixException e) { - if (e.ErrorCode == BugMineException.ErrorCodes.UserNotInRoom) { - Progress = Status.NotInRoom; - return; - } - else if (e.ErrorCode == BugMineException.ErrorCodes.ProjectNotFound) { - Progress = Status.RoomNotFound; - return; - } - - throw; - } - - Progress = Status.Done; - if (Loaded != null) { - await Loaded.Invoke(); - } - - - StateHasChanged(); - } - - private async Task TryJoin() { - var room = await ProjectContext.Client.ResolveProjectSlug(ProjectSlug); - bool success = false; - while (!success) { - try { - await room.JoinAsync(); - if (!string.IsNullOrWhiteSpace(room.RoomId)) { - success = true; - } - else { - await Task.Delay(1000); - } - } - catch (MatrixException e) { - // if (e.ErrorCode == MatrixException.ErrorCodes.) { - // await Task.Delay(1000); - // continue; - // } - - throw; - } - } - - await OnInitializedAsync(); - } - - public class ProjectContainerContext { - public BugMineClient? Client { get; set; } - - public BugMineProject? Project { get; set; } - } - - private enum Status { - Loading, - NotInRoom, - RoomNotFound, - Done - } - -} \ No newline at end of file