You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
using Blazor.Analytics; |
|
|
|
namespace Services.Website; |
|
|
|
public class DataCollectionKeys |
|
{ |
|
// Inputs people are using in the build calculator |
|
public static string BuildCalcInput = "buildcalc-input"; |
|
public static string PageInitialized = "page-initialized"; |
|
public static string FirstPage = "first-page"; |
|
} |
|
|
|
public class DataCollectionService : IDataCollectionService, IDisposable |
|
{ |
|
private readonly IAnalytics _globalTracking; |
|
private readonly IStorageService _storageService; |
|
|
|
private bool _isEnabled; |
|
|
|
public DataCollectionService(IAnalytics globalTracking, |
|
IStorageService storageService) |
|
{ |
|
_globalTracking = globalTracking; |
|
_storageService = storageService; |
|
|
|
_storageService.Subscribe(Refresh); |
|
|
|
Refresh(); |
|
} |
|
|
|
public void SendEvent<T>(string eventName, T eventData) |
|
{ |
|
if (_isEnabled) _globalTracking.TrackEvent(eventName, eventData); |
|
} |
|
|
|
void IDisposable.Dispose() |
|
{ |
|
_storageService.Unsubscribe(Refresh); |
|
} |
|
|
|
private void Refresh() |
|
{ |
|
_isEnabled = _storageService.GetValue<bool>(StorageKeys.EnabledDataCollection); |
|
} |
|
} |