blob: dac3e973c1da0a04e9549abd89c4a1ea48228a03 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
@using System.Text.Json.Serialization
@using ArcaneLibs.Extensions
@using BugMine.Web.Classes.Exceptions
@using LibMatrix
@inject ILogger<ProjectContainer> Logger
@if (Constants.Debug) {
<details>
<summary>IssueContainer Debug info - Debug build, here be dragons!</summary>
<p>IssueContainer 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> *@
@* } *@
@* } *@
</details>
<hr/>
}
@if (ProjectContext?.Client is null) {
<p>Authenticating</p>
}
else {
<CascadingValue Value="ProjectContext">
@ChildContent
</CascadingValue>
}
@code {
private Status? _progress = Status.Loading;
[Parameter]
public string IssueId { get; set; } = null!;
[Parameter, CascadingParameter]
public ProjectContainer.ProjectContainerContext? ProjectContext { get; set; }
[Parameter]
public IssueContainerContext? IssueContext { 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;
Progress = Status.Done;
if (Loaded != null) {
await Loaded.Invoke();
}
StateHasChanged();
}
public class IssueContainerContext {
public ProjectContainer.ProjectContainerContext ProjectContext { get; set; }
}
private enum Status {
Loading,
NotInRoom,
RoomNotFound,
Done
}
}
|