@page "/Projects"
@using LibMatrix.Homeservers
Projects
@if (Client == null) {
Authenticating...
}
else if (Projects is null) {
Loading projects...
}
else if (Projects.Count == 0) {
There are no projects to display.
}
else {
@foreach (var project in Projects) {
Navigate(project))">
@if (string.IsNullOrWhiteSpace(project.Info.ProjectIcon)) {

}
else {

}
@project.Info.Name
@*
@project.Info.Name
*@
}
}
Did not find the project board you are looking for?
Create new board
@code {
private BugMineClient? Client { get; set; }
private List? Projects { get; set; }
private CancellationTokenSource? _cts = new();
protected override async Task OnInitializedAsync() {
Client = await BugMineStorage.GetCurrentSessionOrNavigate();
if (Client == null) {
return;
}
StateHasChanged();
int count = 0;
SemaphoreSlim semaphore = new(16, 16);
await foreach (var project in Client.GetProjects(semaphore)) {
Projects ??= [];
Projects.Add(project);
if(count++ <= 250 || count % 4 == 0)
StateHasChanged();
}
Projects ??= [];
StateHasChanged();
}
private async Task Navigate(BugMineProject project) {
Console.WriteLine($"Navigating to {project.ProjectSlug}");
NavigationManager.NavigateTo($"/Projects/{project.ProjectSlug}/");
}
}