Skip to content

Commit 4668e6c

Browse files
committed
fix: Uri update is now correctly registered
1 parent fc07973 commit 4668e6c

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

src/LinkDotNet.Blog.Web/Shared/NavMenu.razor

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
@inject AppConfiguration configuration
22
@inject NavigationManager navigationManager
3+
@implements IDisposable
34

45
<nav class="navbar navbar-expand-lg position-absolute navbar-background inverted-colors navbar-dark" style="width: 100%">
56
<div class="container-fluid">
@@ -29,7 +30,7 @@
2930
me</a></li>
3031
}
3132

32-
<AccessControl CurrentUri="@navigationManager.Uri"></AccessControl>
33+
<AccessControl CurrentUri="@currentUri"></AccessControl>
3334
<li class="nav-item d-flex">
3435
<SearchInput SearchEntered="NavigateToSearchPage"></SearchInput>
3536
</li>
@@ -38,9 +39,29 @@
3839
</div>
3940
</nav>
4041
@code {
42+
private string currentUri = string.Empty;
43+
44+
protected override void OnInitialized()
45+
{
46+
navigationManager.LocationChanged += UpdateUri;
47+
currentUri = navigationManager.Uri;
48+
}
49+
4150
private void NavigateToSearchPage(string searchTerm)
4251
{
4352
var escapeDataString = Uri.EscapeDataString(searchTerm);
4453
navigationManager.NavigateTo($"search/{escapeDataString}");
4554
}
55+
56+
public void Dispose()
57+
{
58+
navigationManager.LocationChanged -= UpdateUri;
59+
}
60+
61+
private void UpdateUri(object sender, LocationChangedEventArgs e)
62+
{
63+
currentUri = e.Location;
64+
StateHasChanged();
65+
}
66+
4667
}

tests/LinkDotNet.Blog.IntegrationTests/Web/Shared/NavMenuTests.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,20 @@ public void ShouldDisplayAboutMePage()
6969
.Cast<IHtmlAnchorElement>()
7070
.Count(a => a.Href.Contains("AboutMe")).Should().Be(1);
7171
}
72-
}
72+
73+
[Fact]
74+
public void ShouldPassCorrectUriToComponent()
75+
{
76+
var config = new AppConfiguration
77+
{
78+
ProfileInformation = new ProfileInformation(),
79+
};
80+
Services.AddScoped(_ => config);
81+
this.AddTestAuthorization();
82+
var cut = RenderComponent<NavMenu>();
83+
84+
Services.GetService<NavigationManager>()!.NavigateTo("test");
85+
86+
cut.FindComponent<AccessControl>().Instance.CurrentUri.Should().Contain("test");
87+
}
88+
}

0 commit comments

Comments
 (0)