3900-MyRecipes-backup / Client / Shared / NavMenu.razor
NavMenu.razor
Raw
@using Microsoft.AspNetCore.Authorization;
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
@using MyRecipes2.Shared;
@attribute [Authorize];
@inject HttpClient Http;
@inject AuthenticationStateProvider AuthenticationStateProvider;
@inject NavigationManager NavManager;
@using MyRecipes2.Client.Services;
@inject UtilityService UtilityService;

<div class="top-row pl-4 navbar navbar-dark">
    <a class="navbar-brand" href="">Head Over Meals</a>
    <button class="navbar-toggler" @onclick="ToggleNavMenu">
        <span class="navbar-toggler-icon"></span>
    </button>
</div>

<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
    <ul class="nav flex-column">
        <li class="nav-item px-3">
            <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
                <div style="margin: 0px 14px 0px 1.5px">
                    <span class="fas fa-home fa-lg" aria-hidden="true"></span>
                </div>Home
            </NavLink>
        </li>

        <AuthorizeView>
            <Authorized>
                <li class="nav-item px-3">
                    <NavLink class="nav-link" href="MyRecipes">
                        <div style="margin: 0px 14px 0px 1.5px">
                            <span class="fas fa-pizza-slice fa-lg" aria-hidden="true"></span>
                        </div>My Recipes
                    </NavLink>
                </li>

                <li class="nav-item px-3">
                    <NavLink class="nav-link" href=@("/PublicProfile/" + userId)>
                        <div style="margin: 0px 14px 0px 1.5px">
                            <span class="fas fa-user-alt fa-lg" aria-hidden="true"></span>
                        </div>My Profile
                    </NavLink>
                </li>

                <li class="nav-item px-3">
                    <NavLink class="nav-link" href="Subscriptions">
                        <div style="margin: 0px 14px 0px 1.5px">
                            <span class="fas fa-stream fa-lg" aria-hidden="true"></span>
                        </div>Subscriptions
                    </NavLink>
                </li>

                <li class="nav-item px-3">
                    <NavLink class="nav-link" href="SubscriptionList">
                        <div style="margin: 0px 14px 0px 1.5px">
                            <span class="fas fa-list-ul fa-lg" aria-hidden="true"></span>
                        </div>Subscription List
                    </NavLink>
                </li>

                <li class="nav-item px-3">
                    <NavLink class="nav-link" href="LikedRecipes">
                        <div style="margin: 0px 14px 0px 1.5px">
                            <span class="fas fa-thumbs-up fa-lg" aria-hidden="true"></span>
                        </div>Liked Recipes
                    </NavLink>
                </li>
            </Authorized>
        </AuthorizeView>
    </ul>
</div>

@code {
    private bool collapseNavMenu = true;
    //private bool expandSubNav;

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

    private string userId;

    protected override async Task OnInitializedAsync()
    {
        AuthenticationState authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
        var user = authState.User;


        if (user.Identity.IsAuthenticated)
        {
            try
            {
                userId = user.FindFirst(c => c.Type == "sub")?.Value;

            }
            catch (AccessTokenNotAvailableException exception)
            {
                exception.Redirect();
            }
        }
    }

    private void ToggleNavMenu()
    {
        collapseNavMenu = !collapseNavMenu;
    }
}