Skip to content

Commit 8febc94

Browse files
CrahunGitTomás López
andauthored
Added ability to disable tracking on certain pages (#38)
Co-authored-by: Tomás López <tlopez@facephi.com>
1 parent 796d07d commit 8febc94

File tree

7 files changed

+66
-6
lines changed

7 files changed

+66
-6
lines changed

demo/DemoApp/DemoApp.Client/Pages/Counter.razor

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
@page "/counter"
22

3+
@using Blazor.Analytics.Abstractions
4+
@inject ITrackingNavigationState TrackingNavigationState
5+
36
<h1>Counter</h1>
47

58
<p>Current count: @currentCount</p>
@@ -12,12 +15,17 @@
1215
[Inject]
1316
private Blazor.Analytics.IAnalytics Analytics { get; set; }
1417

18+
protected override void OnInitialized()
19+
{
20+
TrackingNavigationState.DisableTracking();
21+
}
22+
1523
private void IncrementCount()
1624
{
1725
currentCount++;
18-
Analytics.TrackEvent("Increment", currentCount, "CountPage");
26+
Analytics.TrackEvent("Increment", currentCount, "CountPage");
1927

2028
//Example of how to track a generic event (see also https://developers.google.com/gtagjs/reference/ga4-events)
21-
Analytics.TrackEvent("generate_lead", new {currency = "USD", value = 99.99});
29+
Analytics.TrackEvent("generate_lead", new { currency = "USD", value = 99.99 });
2230
}
2331
}

demo/DemoApp/DemoApp.Server/Pages/Counter.razor

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
@page "/counter"
22

3+
@using Blazor.Analytics.Abstractions
4+
@inject ITrackingNavigationState TrackingNavigationState
5+
36
<h1>Counter</h1>
47

58
<p>Current count: @currentCount</p>
@@ -12,12 +15,17 @@
1215
[Inject]
1316
private Blazor.Analytics.IAnalytics Analytics { get; set; }
1417

18+
protected override void OnInitialized()
19+
{
20+
TrackingNavigationState.DisableTracking();
21+
}
22+
1523
private void IncrementCount()
1624
{
1725
currentCount++;
1826
//Analytics.TrackEvent("Increment", currentCount, "CountPage");
1927
2028
//Example of how to track a generic event (see also https://developers.google.com/gtagjs/reference/ga4-events)
21-
Analytics.TrackEvent("generate_lead", new {currency = "USD", value = currentCount});
29+
Analytics.TrackEvent("generate_lead", new { currency = "USD", value = currentCount });
2230
}
2331
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace Blazor.Analytics.Abstractions
6+
{
7+
public interface ITrackingNavigationState
8+
{
9+
void EnableTracking();
10+
11+
void DisableTracking();
12+
13+
bool IsTrackingEnabled();
14+
}
15+
}

src/Blazor.Analytics/Blazor.Analytics.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
<!-- TypeScript Build -->
4040
<ItemGroup>
41-
<PackageReference Include="Microsoft.TypeScript.MSBuild" Version="4.2.4">
41+
<PackageReference Include="Microsoft.TypeScript.MSBuild" Version="4.3.5">
4242
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
4343
<PrivateAssets>all</PrivateAssets>
4444
</PackageReference>

src/Blazor.Analytics/Components/NavigationTracker.razor

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
@using System.Threading.Tasks
22
@using Microsoft.AspNetCore.Components
33
@using Microsoft.AspNetCore.Components.Routing
4+
@using Blazor.Analytics.Abstractions
45

56
@code
67
{
@@ -10,6 +11,9 @@
1011
[Inject]
1112
protected NavigationManager NavigationManager { get; set; } = null;
1213

14+
[Inject]
15+
protected ITrackingNavigationState TrackingNavigationState { get; set; } = null;
16+
1317
protected override async Task OnInitializedAsync()
1418
{
1519
await base.OnInitializedAsync();
@@ -38,6 +42,11 @@
3842

3943
private async Task OnLocationChanged(string location)
4044
{
41-
await Analytics.TrackNavigation(location);
45+
if (TrackingNavigationState.IsTrackingEnabled())
46+
{
47+
await Analytics.TrackNavigation(location);
48+
}
49+
50+
TrackingNavigationState.EnableTracking();
4251
}
4352
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Blazor.Analytics.Abstractions;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Text;
5+
6+
namespace Blazor.Analytics.GoogleAnalytics
7+
{
8+
public class TrackingNavigationState : ITrackingNavigationState
9+
{
10+
private bool _isEnableTracking = true;
11+
12+
public void DisableTracking() => _isEnableTracking = false;
13+
14+
public void EnableTracking() => _isEnableTracking = true;
15+
16+
public bool IsTrackingEnabled() => _isEnableTracking;
17+
}
18+
}

src/Blazor.Analytics/GoogleAnalytics/GoogleAnalyticsExtensions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Blazor.Analytics.GoogleAnalytics;
1+
using Blazor.Analytics.Abstractions;
2+
using Blazor.Analytics.GoogleAnalytics;
23
using Microsoft.Extensions.DependencyInjection;
34

45
namespace Blazor.Analytics
@@ -14,6 +15,7 @@ public static IServiceCollection AddGoogleAnalytics(
1415
string trackingId,
1516
bool debug)
1617
{
18+
services.AddScoped<ITrackingNavigationState, TrackingNavigationState>();
1719
return services.AddScoped<IAnalytics>(p =>
1820
{
1921
var googleAnalytics = ActivatorUtilities.CreateInstance<GoogleAnalyticsStrategy>(p);

0 commit comments

Comments
 (0)