blob: 2a7c7daa9840ced31e012eaa896d74cd241115e0 (
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
|
@page "/Projects/New"
@using ArcaneLibs.Extensions
@using BugMine.Sdk.Events.State
@using LibMatrix
@inject ILogger<NewProject> Logger
<h3>New project</h3>
<span>Project name: </span>
<FancyTextBox @bind-Value="@_request.Name"></FancyTextBox>
<br/>
<span>Project repository: </span>
<FancyTextBox @bind-Value="@_request.Repository"></FancyTextBox>
<br/>
@* <span>Room alias: </span> *@
@* <FancyTextBox @bind-Value="@_request."></FancyTextBox> *@
@* <br/> *@
@if (Constants.Debug) {
<span>Debug: </span>
<pre>
@_request.ToJson()
</pre>
<br/>
}
@if (!_busy) {
<LinkButton OnClick="@CreateProject">Create project</LinkButton>
}
else {
<p>Powering up the framework... <SimpleSpinner/></p>
}
@code {
private bool _busy = false;
private bool Busy {
get => _busy;
set {
_busy = value;
StateHasChanged();
}
}
private BugMineClient? Client { get; set; }
private readonly ProjectInfo _request = new();
protected override async Task OnInitializedAsync() {
Client = await BugMineStorage.GetCurrentSessionOrNavigate();
if (Client == null) {
return;
}
}
private async Task CreateProject() {
if (Client == null) {
return;
}
Busy = true;
try {
var proj = await Client.CreateProject(_request);
NavigationManager.NavigateTo($"/Projects/{proj.ProjectSlug}/");
}
catch (MatrixException e) {
Logger.LogError(e, "Failed to create project");
}
}
}
|