@page "/admin"
@page "/{Owner}"
@using Microsoft.AspNetCore.Components.Authorization
@inject IRepositoryService RepositoryService

<PageTitle>@CurrentOwner - Forge</PageTitle>

<div class="repo-header">
    <h1>@CurrentOwner</h1>
</div>

@if (repos == null)
{
    <p>Loading...</p>
}
else if (!repos.Any())
{
    <p class="empty-state">No repositories for @CurrentOwner</p>
}
else
{
    @foreach (var repo in repos)
    {
        <div class="card" style="margin-bottom: 0.5rem; padding: 1rem;">
            <a href="/@repo.Owner/@repo.Name" style="font-weight: 600; font-size: 1.1rem;">
                @repo.Owner/@repo.Name
            </a>
            @if (repo.IsPrivate)
            {
                <span class="badge">Private</span>
            }
            @if (!string.IsNullOrEmpty(repo.Description))
            {
                <p style="margin: 0.25rem 0 0 0; color: #8b949e;">@repo.Description</p>
            }
        </div>
    }
}

@code {
    [Parameter] public string? Owner { get; set; }
    [CascadingParameter] private Task<AuthenticationState>? AuthenticationStateTask { get; set; }

    private IEnumerable<Repository>? repos;
    private string CurrentOwner => string.IsNullOrWhiteSpace(Owner) ? "admin" : Owner;

    protected override async Task OnParametersSetAsync()
    {
        var ownerRepos = await RepositoryService.GetByOwnerAsync(CurrentOwner);
        var isAuthenticated = false;

        if (AuthenticationStateTask != null)
        {
            var authState = await AuthenticationStateTask;
            isAuthenticated = authState.User.Identity?.IsAuthenticated == true;
        }

        repos = isAuthenticated
            ? ownerRepos
            : ownerRepos.Where(r => !r.IsPrivate);
    }
}
An unhandled error has occurred. Reload 🗙