@@ -8,6 +8,13 @@ namespace GitHub.Unity
88{
99 class UsageTrackerSync : IUsageTracker
1010 {
11+
12+ #if DEVELOPER_BUILD
13+ protected internal const int MetrisReportTimeout = 30 ;
14+ #else
15+ protected internal const int MetrisReportTimeout = 3 * 60 ;
16+ #endif
17+
1118 private static ILogging Logger { get ; } = LogHelper . GetLogger < UsageTracker > ( ) ;
1219
1320 private static object _lock = new object ( ) ;
@@ -44,7 +51,7 @@ public UsageTrackerSync(ISettings userSettings, IUsageLoader usageLoader,
4451
4552 Logger . Trace ( "userId:{0} instanceId:{1}" , userId , instanceId ) ;
4653 if ( Enabled )
47- RunTimer ( 3 * 60 ) ;
54+ RunTimer ( MetrisReportTimeout ) ;
4855 }
4956
5057 private void RunTimer ( int seconds )
@@ -94,6 +101,11 @@ private void SendUsage()
94101 return ;
95102 }
96103
104+ var username = GetUsername ( ) ;
105+ if ( ! String . IsNullOrEmpty ( username ) ) {
106+ extractReports . ForEach ( x => x . Dimensions . GitHubUser = username ) ;
107+ }
108+
97109 try
98110 {
99111 MetricsService . PostUsage ( extractReports ) ;
@@ -316,6 +328,11 @@ public virtual void UpdateLfsDiskUsage(int kilobytes)
316328 }
317329 }
318330
331+ protected virtual string GetUsername ( )
332+ {
333+ return "" ;
334+ }
335+
319336 public bool Enabled
320337 {
321338 get
@@ -344,7 +361,9 @@ class UsageTracker : UsageTrackerSync
344361 {
345362 public UsageTracker ( ITaskManager taskManager , IGitClient gitClient , IProcessManager processManager ,
346363 ISettings userSettings ,
347- IEnvironment environment , string instanceId )
364+ IEnvironment environment ,
365+ IKeychain keychain ,
366+ string instanceId )
348367 : base ( userSettings ,
349368 new UsageLoader ( environment . UserCachePath . Combine ( Constants . UsageFile ) ) ,
350369 environment . UnityVersion , instanceId )
@@ -353,6 +372,7 @@ public UsageTracker(ITaskManager taskManager, IGitClient gitClient, IProcessMana
353372 Environment = environment ;
354373 GitClient = gitClient ;
355374 ProcessManager = processManager ;
375+ Keychain = keychain ;
356376 }
357377
358378 protected override void CaptureRepoSize ( )
@@ -377,6 +397,18 @@ protected override void CaptureRepoSize()
377397 catch { }
378398 }
379399
400+ protected override string GetUsername ( )
401+ {
402+ string username = "" ;
403+ try {
404+ var apiClient = new ApiClient ( "" , Keychain , ProcessManager , TaskManager , Environment ) ;
405+ var user = apiClient . GetCurrentUser ( ) ;
406+ username = user . Login ;
407+ } catch {
408+ }
409+ return username ;
410+ }
411+
380412 public override void IncrementApplicationMenuMenuItemCommandLine ( ) => TaskManager . Run ( base . IncrementApplicationMenuMenuItemCommandLine ) ;
381413 public override void IncrementAuthenticationViewButtonAuthentication ( ) => TaskManager . Run ( base . IncrementAuthenticationViewButtonAuthentication ) ;
382414 public override void IncrementBranchesViewButtonCheckoutLocalBranch ( ) => TaskManager . Run ( base . IncrementBranchesViewButtonCheckoutLocalBranch ) ;
@@ -400,6 +432,7 @@ protected override void CaptureRepoSize()
400432 protected IEnvironment Environment { get ; }
401433 protected IGitClient GitClient { get ; }
402434 public IProcessManager ProcessManager { get ; }
435+ protected IKeychain Keychain { get ; }
403436 }
404437
405438 interface IUsageLoader
0 commit comments