@implements IDisposable @inject NavigationManager NavigationManager @inject AnalyticsService AnalyticsService @code { protected override void OnInitialized() { NavigationManager.LocationChanged += OnLocationChanged; } private async void OnLocationChanged(object? sender, LocationChangedEventArgs e) { await TrackPageView(e.Location); } private async Task TrackPageView(string url) { try { var relativePath = NavigationManager.ToBaseRelativePath(url); if (!relativePath.StartsWith("/")) { relativePath = "/" + relativePath; } await AnalyticsService.TrackPageView(relativePath); } catch { // Ignore errors during tracking } } public void Dispose() { NavigationManager.LocationChanged -= OnLocationChanged; } }