@using ImageBoardServerApp.Auth
@using ImageBoardServerApp.Data.Repository
@inject AuthenticationStateProvider authStateProvider 
@inject NavigationManager navManager

<div class="top-row ps-3 navbar navbar-dark">
    <div class="container-fluid">
        <img src="img/static/logo_trans.png" width="32" height="32" alt="Logo"/>
        <a class="navbar-brand" href="/">BulletBoard</a>
        <button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
            <span class="navbar-toggler-icon"></span>
        </button>
    </div>
</div>

<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
    <nav class="flex-column">
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="/" Match="NavLinkMatch.All">
                <span class="oi oi-home" aria-hidden="true"></span> Home
            </NavLink>
        </div>
        
        <text class="topicTitle">
            Boards
        </text>
        @foreach (BoardData b in boards)
        {
            <div class="nav-item px-3">
                <NavLink class="nav-link" href="@b.Tag" Match="NavLinkMatch.All">
                    <span class="oi oi-chat" aria-hidden="true"></span> /@b.Tag/ - @b.Topic
                </NavLink>
            </div>
        }
        
        <div class="account">
            <text class="topicTitle">
                Account
            </text>
            <AuthorizeView>
                <Authorized>
                    <div class="nav-item px-3">
                        <NavLink class="nav-link" href="/sys/you" Match="NavLinkMatch.All">
                            <span class="oi oi-cog" aria-hidden="true"></span> Account Settings
                        </NavLink>
                    </div>
                    <div class="nav-item px-3">
                        <NavLink class="nav-link" href="/" @onclick="logout" Match="NavLinkMatch.All">
                            <span class="oi oi-account-logout" aria-hidden="true"></span> Logout
                        </NavLink>
                    </div>
                </Authorized>
                <NotAuthorized>
                    <div class="nav-item px-3">
                        <NavLink class="nav-link" href="/sys/login" Match="NavLinkMatch.All">
                            <span class="oi oi-account-login" aria-hidden="true"></span> Login
                        </NavLink>
                    </div>
                    <div class="nav-item px-3">
                        <NavLink class="nav-link" href="/sys/register" Match="NavLinkMatch.All">
                            <span class="oi oi-plus" aria-hidden="true"></span> Register
                        </NavLink>
                    </div>
                </NotAuthorized>
            </AuthorizeView>
        </div>
    </nav>
</div>

@code {
    private bool collapseNavMenu = true;

    private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;

    private void ToggleNavMenu()
    {
        collapseNavMenu = !collapseNavMenu;
    }
    
    private async Task logout()
    {
        var customAuthStateProvider = (CustomAuthenticationStateProvider) authStateProvider;
        await customAuthStateProvider.UpdateAuthenticationStateAsync(null);
        navManager.NavigateTo("/", true);
    }

    public List<BoardData> boards { get; set; }

    protected override async Task OnInitializedAsync()
    {
        boards = await BoardsRepository.getBoardsAsync();
    }

}