77using System . Windows . Threading ;
88using GitHub . Models ;
99using GitHub . Settings ;
10- using GitHub . VisualStudio ;
1110using Microsoft . VisualStudio . ComponentModelHost ;
1211using Microsoft . VisualStudio . Shell ;
1312using Task = System . Threading . Tasks . Task ;
@@ -19,15 +18,13 @@ namespace GitHub.Services
1918 public class UsageTracker : IUsageTracker
2019 {
2120 const string StoreFileName = "ghfvs.usage" ;
22- //static readonly NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
2321 static readonly Calendar cal = CultureInfo . InvariantCulture . Calendar ;
2422
2523 readonly IMetricsService client ;
2624 readonly Lazy < IConnectionManager > connectionManager ;
2725 readonly IPackageSettings userSettings ;
2826 readonly DispatcherTimer timer ;
2927 readonly string storePath ;
30- UsageStore usage ;
3128
3229 [ ImportingConstructor ]
3330 public UsageTracker (
@@ -50,7 +47,6 @@ public UsageTracker(
5047 Environment . GetFolderPath ( Environment . SpecialFolder . LocalApplicationData ) ,
5148 program . ApplicationName ,
5249 StoreFileName ) ;
53- this . usage = LoadUsage ( ) ;
5450
5551 userSettings . PropertyChanged += ( s , e ) =>
5652 {
@@ -65,6 +61,7 @@ public UsageTracker(
6561
6662 public void IncrementLaunchCount ( )
6763 {
64+ var usage = LoadUsage ( ) ;
6865 ++ usage . Model . NumberOfStartups ;
6966 ++ usage . Model . NumberOfStartupsWeek ;
7067 ++ usage . Model . NumberOfStartupsMonth ;
@@ -73,42 +70,49 @@ public void IncrementLaunchCount()
7370
7471 public void IncrementCloneCount ( )
7572 {
73+ var usage = LoadUsage ( ) ;
7674 ++ usage . Model . NumberOfClones ;
7775 SaveUsage ( usage ) ;
7876 }
7977
8078 public void IncrementCreateCount ( )
8179 {
80+ var usage = LoadUsage ( ) ;
8281 ++ usage . Model . NumberOfReposCreated ;
8382 SaveUsage ( usage ) ;
8483 }
8584
8685 public void IncrementPublishCount ( )
8786 {
87+ var usage = LoadUsage ( ) ;
8888 ++ usage . Model . NumberOfReposPublished ;
8989 SaveUsage ( usage ) ;
9090 }
9191
9292 public void IncrementOpenInGitHubCount ( )
9393 {
94+ var usage = LoadUsage ( ) ;
9495 ++ usage . Model . NumberOfOpenInGitHub ;
9596 SaveUsage ( usage ) ;
9697 }
9798
9899 public void IncrementLinkToGitHubCount ( )
99100 {
101+ var usage = LoadUsage ( ) ;
100102 ++ usage . Model . NumberOfLinkToGitHub ;
101103 SaveUsage ( usage ) ;
102104 }
103105
104106 public void IncrementCreateGistCount ( )
105107 {
108+ var usage = LoadUsage ( ) ;
106109 ++ usage . Model . NumberOfGists ;
107110 SaveUsage ( usage ) ;
108111 }
109112
110113 public void IncrementUpstreamPullRequestCount ( )
111114 {
115+ var usage = LoadUsage ( ) ;
112116 ++ usage . Model . NumberOfClones ;
113117 SaveUsage ( usage ) ;
114118 }
@@ -167,6 +171,7 @@ async void TimerTick(object sender, EventArgs e)
167171 // launch count but we only submit (and clear) the weekly launch count when we've
168172 // transitioned into a new week. We've defined a week by the ISO8601 definition,
169173 // i.e. week starting on Monday and ending on Sunday.
174+ var usage = LoadUsage ( ) ;
170175 var lastDate = usage . LastUpdated ;
171176 var currentDate = DateTimeOffset . Now ;
172177 var includeWeekly = GetIso8601WeekOfYear ( lastDate ) != GetIso8601WeekOfYear ( currentDate ) ;
@@ -175,8 +180,8 @@ async void TimerTick(object sender, EventArgs e)
175180 // Only send stats once a day.
176181 if ( lastDate . Date != currentDate . Date )
177182 {
178- await SendUsage ( includeWeekly , includeMonthly ) ;
179- ClearCounters ( includeWeekly , includeMonthly ) ;
183+ await SendUsage ( usage . Model , includeWeekly , includeMonthly ) ;
184+ ClearCounters ( usage . Model , includeWeekly , includeMonthly ) ;
180185 usage . LastUpdated = DateTimeOffset . Now . UtcDateTime ;
181186 SaveUsage ( usage ) ;
182187 }
@@ -187,23 +192,23 @@ async void TimerTick(object sender, EventArgs e)
187192 }
188193 }
189194
190- async Task SendUsage ( bool weekly , bool monthly )
195+ async Task SendUsage ( UsageModel usage , bool weekly , bool monthly )
191196 {
192197 Debug . Assert ( client != null , "SendUsage should not be called when there is no IMetricsService" ) ;
193198
194199 var connectionManager = this . connectionManager . Value ;
195200
196201 if ( connectionManager . Connections . Any ( x => x . HostAddress . IsGitHubDotCom ( ) ) )
197202 {
198- usage . Model . IsGitHubUser = true ;
203+ usage . IsGitHubUser = true ;
199204 }
200205
201206 if ( connectionManager . Connections . Any ( x => ! x . HostAddress . IsGitHubDotCom ( ) ) )
202207 {
203- usage . Model . IsEnterpriseUser = true ;
208+ usage . IsEnterpriseUser = true ;
204209 }
205210
206- var model = usage . Model . Clone ( weekly , monthly ) ;
211+ var model = usage . Clone ( weekly , monthly ) ;
207212 await client . PostUsage ( model ) ;
208213 }
209214
@@ -223,23 +228,23 @@ static int GetIso8601WeekOfYear(DateTimeOffset time)
223228 return cal . GetWeekOfYear ( time . UtcDateTime , CalendarWeekRule . FirstFourDayWeek , DayOfWeek . Monday ) ;
224229 }
225230
226- void ClearCounters ( bool weekly , bool monthly )
231+ static void ClearCounters ( UsageModel usage , bool weekly , bool monthly )
227232 {
228- usage . Model . NumberOfStartups = 0 ;
229- usage . Model . NumberOfClones = 0 ;
230- usage . Model . NumberOfReposCreated = 0 ;
231- usage . Model . NumberOfReposPublished = 0 ;
232- usage . Model . NumberOfGists = 0 ;
233- usage . Model . NumberOfOpenInGitHub = 0 ;
234- usage . Model . NumberOfLinkToGitHub = 0 ;
235- usage . Model . NumberOfLogins = 0 ;
236- usage . Model . NumberOfUpstreamPullRequests = 0 ;
233+ usage . NumberOfStartups = 0 ;
234+ usage . NumberOfClones = 0 ;
235+ usage . NumberOfReposCreated = 0 ;
236+ usage . NumberOfReposPublished = 0 ;
237+ usage . NumberOfGists = 0 ;
238+ usage . NumberOfOpenInGitHub = 0 ;
239+ usage . NumberOfLinkToGitHub = 0 ;
240+ usage . NumberOfLogins = 0 ;
241+ usage . NumberOfUpstreamPullRequests = 0 ;
237242
238243 if ( weekly )
239- usage . Model . NumberOfStartupsWeek = 0 ;
244+ usage . NumberOfStartupsWeek = 0 ;
240245
241246 if ( monthly )
242- usage . Model . NumberOfStartupsMonth = 0 ;
247+ usage . NumberOfStartupsMonth = 0 ;
243248 }
244249
245250 class UsageStore
0 commit comments