@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;
}
}