about summary refs log tree commit diff
path: root/BugMine.Web/Pages/Projects/NewProject.razor
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");
        }
    }

}