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

Commit fc02bbe

Browse files
authored
Merge pull request #349 from github/feature/metrics
Add metrics
2 parents d6adf32 + 3900a41 commit fc02bbe

40 files changed

+544
-69
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ build/
2020

2121
# Roslyn cache directories
2222
*.ide/
23+
.vs/
2324

2425
# MSTest test Results
2526
[Tt]est[Rr]esult*/

GitHubVS.sln

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio 14
4-
VisualStudioVersion = 14.0.25029.0
4+
VisualStudioVersion = 14.0.25123.0
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHub.VisualStudio", "src\GitHub.VisualStudio\GitHub.VisualStudio.csproj", "{11569514-5AE5-4B5B-92A2-F10B0967DE5F}"
77
EndProject

script

src/CredentialManagement/CredentialManagement.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<NuGetPackageImportStamp>
1515
</NuGetPackageImportStamp>
1616
<TargetFrameworkProfile />
17-
<BuildType Condition="Exists('..\..\script\ApiClientConfiguration.cs')">Internal</BuildType>
17+
<BuildType Condition="Exists('..\..\script\src\ApiClientConfiguration.cs')">Internal</BuildType>
1818
<OutputPath>bin\$(Configuration)\</OutputPath>
1919
</PropertyGroup>
2020
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

src/GitHub.Api/GitHub.Api.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<AssemblyName>GitHub.Api</AssemblyName>
1212
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
14-
<BuildType Condition="Exists('..\..\script\ApiClientConfiguration.cs')">Internal</BuildType>
14+
<BuildType Condition="Exists('..\..\script\src\ApiClientConfiguration.cs')">Internal</BuildType>
1515
<OutputPath>bin\$(Configuration)\</OutputPath>
1616
<TargetFrameworkProfile />
1717
</PropertyGroup>

src/GitHub.App/GitHub.App.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<RunCodeAnalysis>true</RunCodeAnalysis>
2020
<CodeAnalysisRuleSet>..\common\GitHubVS.ruleset</CodeAnalysisRuleSet>
2121
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
22-
<BuildType Condition="Exists('..\..\script\ApiClientConfiguration.cs')">Internal</BuildType>
22+
<BuildType Condition="Exists('..\..\script\src\ApiClientConfiguration.cs')">Internal</BuildType>
2323
<OutputPath>bin\$(Configuration)\</OutputPath>
2424
<TargetFrameworkProfile />
2525
</PropertyGroup>
@@ -151,7 +151,7 @@
151151
<Compile Include="..\common\SolutionInfo.cs">
152152
<Link>Properties\SolutionInfo.cs</Link>
153153
</Compile>
154-
<Compile Include="..\..\script\ApiClientConfiguration.cs" Condition="$(Buildtype) == 'Internal'">
154+
<Compile Include="..\..\script\src\ApiClientConfiguration.cs" Condition="$(Buildtype) == 'Internal'">
155155
<Link>Api\ApiClientConfiguration.cs</Link>
156156
</Compile>
157157
<Compile Include="Api\ApiClientConfiguration.cs" Condition="$(Buildtype) != 'Internal'" />

src/GitHub.App/ViewModels/GistCreationViewModel.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,30 @@ public class GistCreationViewModel : BaseViewModel, IGistCreationViewModel
2525
readonly ObservableAsPropertyHelper<IAccount> account;
2626
readonly IGistPublishService gistPublishService;
2727
readonly INotificationService notificationService;
28+
readonly IUsageTracker usageTracker;
2829

2930
[ImportingConstructor]
3031
GistCreationViewModel(
3132
IConnectionRepositoryHostMap connectionRepositoryHostMap,
3233
ISelectedTextProvider selectedTextProvider,
3334
IGistPublishService gistPublishService,
34-
INotificationService notificationService)
35-
: this(connectionRepositoryHostMap.CurrentRepositoryHost, selectedTextProvider, gistPublishService)
35+
INotificationService notificationService,
36+
IUsageTracker usageTracker)
37+
: this(connectionRepositoryHostMap.CurrentRepositoryHost, selectedTextProvider, gistPublishService, usageTracker)
3638
{
3739
this.notificationService = notificationService;
3840
}
3941

4042
public GistCreationViewModel(
4143
IRepositoryHost repositoryHost,
4244
ISelectedTextProvider selectedTextProvider,
43-
IGistPublishService gistPublishService)
45+
IGistPublishService gistPublishService,
46+
IUsageTracker usageTracker)
4447
{
4548
Title = Resources.CreateGistTitle;
4649
apiClient = repositoryHost.ApiClient;
4750
this.gistPublishService = gistPublishService;
51+
this.usageTracker = usageTracker;
4852

4953
FileName = VisualStudio.Services.GetFileNameFromActiveDocument() ?? Resources.DefaultGistFileName;
5054
SelectedText = selectedTextProvider.GetSelectedText();
@@ -74,6 +78,7 @@ IObservable<Gist> OnCreateGist(object unused)
7478
newGist.Files.Add(FileName, SelectedText);
7579

7680
return gistPublishService.PublishGist(apiClient, newGist)
81+
.Do(_ => usageTracker.IncrementCreateGistCount())
7782
.Catch<Gist, Exception>(ex =>
7883
{
7984
if (!ex.IsCriticalException())

src/GitHub.App/ViewModels/RepositoryCloneViewModel.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class RepositoryCloneViewModel : BaseViewModel, IRepositoryCloneViewModel
3232
readonly IRepositoryCloneService cloneService;
3333
readonly IOperatingSystem operatingSystem;
3434
readonly INotificationService notificationService;
35+
readonly IUsageTracker usageTracker;
3536
readonly IReactiveCommand<IReadOnlyList<IRepositoryModel>> loadRepositoriesCommand;
3637
readonly ReactiveCommand<object> browseForDirectoryCommand = ReactiveCommand.Create();
3738
readonly ObservableAsPropertyHelper<bool> isLoading;
@@ -45,20 +46,23 @@ public class RepositoryCloneViewModel : BaseViewModel, IRepositoryCloneViewModel
4546
IConnectionRepositoryHostMap connectionRepositoryHostMap,
4647
IRepositoryCloneService repositoryCloneService,
4748
IOperatingSystem operatingSystem,
48-
INotificationService notificationService)
49-
: this(connectionRepositoryHostMap.CurrentRepositoryHost, repositoryCloneService, operatingSystem, notificationService)
49+
INotificationService notificationService,
50+
IUsageTracker usageTracker)
51+
: this(connectionRepositoryHostMap.CurrentRepositoryHost, repositoryCloneService, operatingSystem, notificationService, usageTracker)
5052
{ }
5153

5254
public RepositoryCloneViewModel(
5355
IRepositoryHost repositoryHost,
5456
IRepositoryCloneService cloneService,
5557
IOperatingSystem operatingSystem,
56-
INotificationService notificationService)
58+
INotificationService notificationService,
59+
IUsageTracker usageTracker)
5760
{
5861
this.repositoryHost = repositoryHost;
5962
this.cloneService = cloneService;
6063
this.operatingSystem = operatingSystem;
6164
this.notificationService = notificationService;
65+
this.usageTracker = usageTracker;
6266

6367
Title = string.Format(CultureInfo.CurrentCulture, Resources.CloneTitle, repositoryHost.Title);
6468
Repositories = new ReactiveList<IRepositoryModel>();
@@ -139,9 +143,12 @@ IObservable<Unit> OnCloneRepository(object state)
139143
notificationService.ShowError(Resources.RepositoryCloneFailedNoSelectedRepo);
140144
return Observable.Return(Unit.Default);
141145
}
146+
142147
// The following is a noop if the directory already exists.
143148
operatingSystem.Directory.CreateDirectory(BaseRepositoryPath);
144-
return cloneService.CloneRepository(repository.CloneUrl, repository.Name, BaseRepositoryPath);
149+
150+
return cloneService.CloneRepository(repository.CloneUrl, repository.Name, BaseRepositoryPath)
151+
.Do(_ => this.usageTracker.IncrementCloneCount());
145152
})
146153
.SelectMany(_ => _)
147154
.Catch<Unit, Exception>(e =>

src/GitHub.App/ViewModels/RepositoryCreationViewModel.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,27 @@ public class RepositoryCreationViewModel : RepositoryFormViewModel, IRepositoryC
3939
readonly ObservableAsPropertyHelper<bool> isCreating;
4040
readonly ObservableAsPropertyHelper<bool> canKeepPrivate;
4141
readonly IOperatingSystem operatingSystem;
42+
readonly IUsageTracker usageTracker;
4243

4344
[ImportingConstructor]
4445
RepositoryCreationViewModel(
4546
IConnectionRepositoryHostMap connectionRepositoryHostMap,
4647
IOperatingSystem operatingSystem,
47-
IRepositoryCreationService repositoryCreationService)
48-
: this(connectionRepositoryHostMap.CurrentRepositoryHost, operatingSystem, repositoryCreationService)
48+
IRepositoryCreationService repositoryCreationService,
49+
IUsageTracker usageTracker)
50+
: this(connectionRepositoryHostMap.CurrentRepositoryHost, operatingSystem, repositoryCreationService, usageTracker)
4951
{}
5052

5153
public RepositoryCreationViewModel(
5254
IRepositoryHost repositoryHost,
5355
IOperatingSystem operatingSystem,
54-
IRepositoryCreationService repositoryCreationService)
56+
IRepositoryCreationService repositoryCreationService,
57+
IUsageTracker usageTracker)
5558
{
5659
this.repositoryHost = repositoryHost;
5760
this.operatingSystem = operatingSystem;
5861
this.repositoryCreationService = repositoryCreationService;
62+
this.usageTracker = usageTracker;
5963

6064
Title = string.Format(CultureInfo.CurrentCulture, Resources.CreateTitle, repositoryHost.Title);
6165
SelectedGitIgnoreTemplate = GitIgnoreItem.None;
@@ -268,7 +272,8 @@ IObservable<Unit> OnCreateRepository(object state)
268272
newRepository,
269273
SelectedAccount,
270274
BaseRepositoryPath,
271-
repositoryHost.ApiClient);
275+
repositoryHost.ApiClient)
276+
.Do(_ => usageTracker.IncrementCreateCount());
272277
}
273278

274279
ReactiveCommand<Unit> InitializeCreateRepositoryCommand()

src/GitHub.App/ViewModels/RepositoryPublishViewModel.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,19 @@ public class RepositoryPublishViewModel : RepositoryFormViewModel, IRepositoryPu
3333
readonly ObservableAsPropertyHelper<bool> canKeepPrivate;
3434
readonly ObservableAsPropertyHelper<bool> isPublishing;
3535
readonly ObservableAsPropertyHelper<string> title;
36+
readonly IUsageTracker usageTracker;
3637

3738
[ImportingConstructor]
3839
public RepositoryPublishViewModel(
3940
IRepositoryHosts hosts,
4041
IRepositoryPublishService repositoryPublishService,
4142
INotificationService notificationService,
42-
IConnectionManager connectionManager)
43+
IConnectionManager connectionManager,
44+
IUsageTracker usageTracker)
4345
{
4446
this.notificationService = notificationService;
4547
this.hosts = hosts;
48+
this.usageTracker = usageTracker;
4649

4750
title = this.WhenAny(
4851
x => x.SelectedHost,
@@ -150,6 +153,7 @@ IObservable<ProgressState> OnPublishRepository(object arg)
150153
var account = SelectedAccount;
151154

152155
return repositoryPublishService.PublishRepository(newRepository, account, SelectedHost.ApiClient)
156+
.Do(_ => usageTracker.IncrementPublishCount())
153157
.Select(_ => ProgressState.Success)
154158
.Catch<ProgressState, Exception>(ex =>
155159
{

0 commit comments

Comments
 (0)