Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 91d86ab

Browse files
committed
Added IUsageTracker.IncrementCounter
Instead of having a separate method for each usage metric, use a generialized method that takes an expression describing the metric to increment.
1 parent b419c1c commit 91d86ab

File tree

21 files changed

+113
-239
lines changed

21 files changed

+113
-239
lines changed

src/GitHub.App/Models/RepositoryHost.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ public IObservable<AuthenticationResult> LogInFromCache()
7878
{
7979
var user = await loginManager.LoginFromCache(Address, ApiClient.GitHubClient);
8080
var accountCacheItem = new AccountCacheItem(user);
81-
usage.IncrementLoginCount().Forget();
81+
82+
await usage.IncrementCounter(x => x.NumberOfLogins);
8283
await ModelService.InsertUser(accountCacheItem);
8384

8485
if (user != unverifiedUser.User)
@@ -109,7 +110,8 @@ public IObservable<AuthenticationResult> LogIn(string usernameOrEmail, string pa
109110
{
110111
var user = await loginManager.Login(Address, ApiClient.GitHubClient, usernameOrEmail, password);
111112
var accountCacheItem = new AccountCacheItem(user);
112-
usage.IncrementLoginCount().Forget();
113+
114+
await usage.IncrementCounter(x => x.NumberOfLogins);
113115
await ModelService.InsertUser(accountCacheItem);
114116

115117
if (user != unverifiedUser.User)
@@ -165,7 +167,7 @@ IObservable<AuthenticationResult> LoginWithApiUser(UserAndScopes userAndScopes)
165167
if (result.IsSuccess())
166168
{
167169
var accountCacheItem = new AccountCacheItem(userAndScopes.User);
168-
usage.IncrementLoginCount().Forget();
170+
usage.IncrementCounter(x => x.NumberOfLogins).Forget();
169171
return ModelService.InsertUser(accountCacheItem).Select(_ => result);
170172
}
171173

src/GitHub.App/Services/PullRequestService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ async Task<IPullRequestModel> PushAndCreatePR(IRepositoryHost host,
501501
await Task.Delay(TimeSpan.FromSeconds(5));
502502

503503
var ret = await host.ModelService.CreatePullRequest(sourceRepository, targetRepository, sourceBranch, targetBranch, title, body);
504-
await usageTracker.IncrementUpstreamPullRequestCount();
504+
await usageTracker.IncrementCounter(x => x.NumberOfUpstreamPullRequests);
505505
return ret;
506506
}
507507

src/GitHub.App/Services/RepositoryCloneService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public async Task CloneRepository(
6363
try
6464
{
6565
await vsGitServices.Clone(cloneUrl, path, true, progress);
66-
await usageTracker.IncrementCloneCount();
66+
await usageTracker.IncrementCounter(x => x.NumberOfClones);
6767
}
6868
catch (Exception ex)
6969
{

src/GitHub.App/ViewModels/GistCreationViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ IObservable<Gist> OnCreateGist(object unused)
9090
newGist.Files.Add(FileName, SelectedText);
9191

9292
return gistPublishService.PublishGist(apiClient, newGist)
93-
.Do(_ => usageTracker.IncrementCreateGistCount().Forget())
93+
.Do(_ => usageTracker.IncrementCounter(x => x.NumberOfGists).Forget())
9494
.Catch<Gist, Exception>(ex =>
9595
{
9696
if (!ex.IsCriticalException())

src/GitHub.App/ViewModels/PullRequestDetailViewModel.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ public async Task Load(IRemoteRepositoryModel remoteRepository, IPullRequestMode
450450

451451
if (firstLoad)
452452
{
453-
usageTracker.IncrementPullRequestOpened().Forget();
453+
usageTracker.IncrementCounter(x => x.NumberOfPullRequestsOpened).Forget();
454454
}
455455

456456
if (!isInCheckout)
@@ -606,19 +606,37 @@ IObservable<Unit> DoCheckout(object unused)
606606
.GetDefaultLocalBranchName(LocalRepository, Model.Number, Model.Title)
607607
.SelectMany(x => pullRequestsService.Checkout(LocalRepository, Model, x));
608608
}
609-
}).Do(_ => usageTracker.IncrementPullRequestCheckOutCount(IsFromFork).Forget());
609+
}).Do(_ =>
610+
{
611+
if (IsFromFork)
612+
usageTracker.IncrementCounter(x => x.NumberOfForkPullRequestsCheckedOut).Forget();
613+
else
614+
usageTracker.IncrementCounter(x => x.NumberOfLocalPullRequestsCheckedOut).Forget();
615+
});
610616
}
611617

612618
IObservable<Unit> DoPull(object unused)
613619
{
614620
return pullRequestsService.Pull(LocalRepository)
615-
.Do(_ => usageTracker.IncrementPullRequestPullCount(IsFromFork).Forget());
621+
.Do(_ =>
622+
{
623+
if (IsFromFork)
624+
usageTracker.IncrementCounter(x => x.NumberOfForkPullRequestPulls).Forget();
625+
else
626+
usageTracker.IncrementCounter(x => x.NumberOfLocalPullRequestPulls).Forget();
627+
});
616628
}
617629

618630
IObservable<Unit> DoPush(object unused)
619631
{
620632
return pullRequestsService.Push(LocalRepository)
621-
.Do(_ => usageTracker.IncrementPullRequestPushCount(IsFromFork).Forget());
633+
.Do(_ =>
634+
{
635+
if (IsFromFork)
636+
usageTracker.IncrementCounter(x => x.NumberOfForkPullRequestPushes).Forget();
637+
else
638+
usageTracker.IncrementCounter(x => x.NumberOfLocalPullRequestPushes).Forget();
639+
});
622640
}
623641

624642
class CheckoutCommandState : IPullRequestCheckoutState

src/GitHub.App/ViewModels/RepositoryCreationViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ IObservable<Unit> OnCreateRepository(object state)
273273
SelectedAccount,
274274
BaseRepositoryPath,
275275
repositoryHost.ApiClient)
276-
.Do(_ => usageTracker.IncrementCreateCount().Forget());
276+
.Do(_ => usageTracker.IncrementCounter(x => x.NumberOfReposCreated).Forget());
277277
}
278278

279279
ReactiveCommand<Unit> InitializeCreateRepositoryCommand()

src/GitHub.App/ViewModels/RepositoryPublishViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ IObservable<ProgressState> OnPublishRepository(object arg)
158158
var account = SelectedAccount;
159159

160160
return repositoryPublishService.PublishRepository(newRepository, account, SelectedHost.ApiClient)
161-
.Do(_ => usageTracker.IncrementPublishCount().Forget())
161+
.Do(_ => usageTracker.IncrementCounter(x => x.NumberOfReposPublished).Forget())
162162
.Select(_ => ProgressState.Success)
163163
.Catch<ProgressState, Exception>(ex =>
164164
{
Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,15 @@
11
using GitHub.VisualStudio;
22
using System.Runtime.InteropServices;
33
using System.Threading.Tasks;
4+
using System;
5+
using System.Linq.Expressions;
6+
using GitHub.Models;
47

58
namespace GitHub.Services
69
{
710
[Guid(Guids.UsageTrackerId)]
811
public interface IUsageTracker
912
{
10-
Task IncrementLaunchCount();
11-
Task IncrementCloneCount();
12-
Task IncrementCreateCount();
13-
Task IncrementPublishCount();
14-
Task IncrementOpenInGitHubCount();
15-
Task IncrementLinkToGitHubCount();
16-
Task IncrementCreateGistCount();
17-
Task IncrementUpstreamPullRequestCount();
18-
Task IncrementLoginCount();
19-
Task IncrementPullRequestCheckOutCount(bool fork);
20-
Task IncrementPullRequestPullCount(bool fork);
21-
Task IncrementPullRequestPushCount(bool fork);
22-
Task IncrementPullRequestOpened();
23-
Task IncrementWelcomeDocsClicks();
24-
Task IncrementWelcomeTrainingClicks();
25-
Task IncrementGitHubPaneHelpClicks();
26-
Task IncrementPRDetailsViewChanges();
27-
Task IncrementPRDetailsViewFile();
28-
Task IncrementPRDetailsCompareWithSolution();
29-
Task IncrementPRDetailsOpenFileInSolution();
30-
Task IncrementPRReviewDiffViewInlineCommentOpen();
31-
Task IncrementPRReviewDiffViewInlineCommentPost();
13+
Task IncrementCounter(Expression<Func<UsageModel, int>> counter);
3214
}
3315
}

src/GitHub.InlineReviews/Services/InlineCommentPeekService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ Tuple<ITextSnapshotLine, ITrackingPoint> GetLineAndTrackingPoint(ITextView textV
160160
ExpandCollapsedRegions(textView, line.Extent);
161161
peekBroker.TriggerPeekSession(textView, trackingPoint, InlineCommentPeekRelationship.Instance.Name);
162162

163-
usageTracker.IncrementPRReviewDiffViewInlineCommentOpen().Forget();
163+
usageTracker.IncrementCounter(x => x.NumberOfPRReviewDiffViewInlineCommentOpen).Forget();
164164

165165
return Tuple.Create(line, trackingPoint);
166166
}

src/GitHub.InlineReviews/Services/PullRequestSessionService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public async Task<IPullRequestReviewCommentModel> PostReviewComment(
156156
path,
157157
position);
158158

159-
await usageTracker.IncrementPRReviewDiffViewInlineCommentPost();
159+
await usageTracker.IncrementCounter(x => x.NumberOfPRReviewDiffViewInlineCommentPost);
160160

161161
return new PullRequestReviewCommentModel
162162
{
@@ -191,7 +191,7 @@ public async Task<IPullRequestReviewCommentModel> PostReviewComment(
191191
body,
192192
inReplyTo);
193193

194-
await usageTracker.IncrementPRReviewDiffViewInlineCommentPost();
194+
await usageTracker.IncrementCounter(x => x.NumberOfPRReviewDiffViewInlineCommentPost);
195195

196196
return new PullRequestReviewCommentModel
197197
{

0 commit comments

Comments
 (0)