11using System ;
2+ using System . Collections . Generic ;
23using System . Threading . Tasks ;
34using Blazor . Analytics . Abstractions ;
45using Blazor . Analytics . Constants ;
@@ -12,8 +13,10 @@ public sealed class GoogleAnalyticsStrategy : IAnalytics
1213 private bool _isGloballyEnabledTracking = true ;
1314
1415 private string _trackingId = null ;
15- public bool _isInitialized = false ;
16- public bool _debug = false ;
16+ private Dictionary < string , object > _globalConfigData = new Dictionary < string , object > ( ) ;
17+ private Dictionary < string , object > _globalEventData = new Dictionary < string , object > ( ) ;
18+ private bool _isInitialized = false ;
19+ private bool _debug = false ;
1720
1821 public GoogleAnalyticsStrategy (
1922 IJSRuntime jsRuntime
@@ -28,20 +31,34 @@ public void Configure(string trackingId, bool debug)
2831 _debug = debug ;
2932 }
3033
31- public async Task Initialize ( string trackingId )
34+ private async Task Initialize ( )
3235 {
33- if ( trackingId == null )
36+ if ( _trackingId == null )
3437 {
3538 throw new InvalidOperationException ( "Invalid TrackingId" ) ;
3639 }
3740
3841 await _jsRuntime . InvokeAsync < string > (
39- GoogleAnalyticsInterop . Configure , trackingId , _debug ) ;
40-
41- _trackingId = trackingId ;
42+ GoogleAnalyticsInterop . Configure , _trackingId , _globalConfigData , _debug ) ;
43+
4244 _isInitialized = true ;
4345 }
4446
47+ public async Task ConfigureGlobalConfigData ( Dictionary < string , object > globalConfigData )
48+ {
49+ if ( ! _isInitialized )
50+ {
51+ this . _globalConfigData = globalConfigData ;
52+
53+ await Initialize ( ) ;
54+ }
55+ }
56+
57+ public async Task ConfigureGlobalEventData ( Dictionary < string , object > globalEventData )
58+ {
59+ this . _globalEventData = globalEventData ;
60+ }
61+
4562 public async Task TrackNavigation ( string uri )
4663 {
4764 if ( ! _isGloballyEnabledTracking )
@@ -51,7 +68,7 @@ public async Task TrackNavigation(string uri)
5168
5269 if ( ! _isInitialized )
5370 {
54- await Initialize ( _trackingId ) ;
71+ await Initialize ( ) ;
5572 }
5673
5774 await _jsRuntime . InvokeAsync < string > (
@@ -86,12 +103,12 @@ public async Task TrackEvent(string eventName, object eventData)
86103
87104 if ( ! _isInitialized )
88105 {
89- await Initialize ( _trackingId ) ;
106+ await Initialize ( ) ;
90107 }
91108
92109 await _jsRuntime . InvokeAsync < string > (
93110 GoogleAnalyticsInterop . TrackEvent ,
94- eventName , eventData ) ;
111+ eventName , eventData , _globalEventData ) ;
95112 }
96113
97114 public void Enable ( ) => _isGloballyEnabledTracking = true ;
0 commit comments