Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit aa01a12

Browse files
authored
Merge branch 'master' into origin/fixes/ui/node-icon-file
2 parents 58fe601 + 9ed7798 commit aa01a12

File tree

5 files changed

+74
-49
lines changed

5 files changed

+74
-49
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,22 +187,22 @@ public void RestartRepository()
187187
}
188188
}
189189

190-
protected void SetupMetrics(string unityVersion, bool firstRun)
190+
protected void SetupMetrics(string unityVersion, bool firstRun, Guid instanceId)
191191
{
192192
//Logger.Trace("Setup metrics");
193193

194194
var usagePath = Environment.UserCachePath.Combine(Constants.UsageFile);
195195

196-
string id = null;
196+
string userId = null;
197197
if (UserSettings.Exists(Constants.GuidKey))
198198
{
199-
id = UserSettings.Get(Constants.GuidKey);
199+
userId = UserSettings.Get(Constants.GuidKey);
200200
}
201201

202-
if (String.IsNullOrEmpty(id))
202+
if (String.IsNullOrEmpty(userId))
203203
{
204-
id = Guid.NewGuid().ToString();
205-
UserSettings.Set(Constants.GuidKey, id);
204+
userId = Guid.NewGuid().ToString();
205+
UserSettings.Set(Constants.GuidKey, userId);
206206
}
207207

208208
#if ENABLE_METRICS
@@ -212,7 +212,7 @@ protected void SetupMetrics(string unityVersion, bool firstRun)
212212
Environment.NodeJsExecutablePath,
213213
Environment.OctorunScriptPath);
214214

215-
UsageTracker = new UsageTracker(metricsService, UserSettings, usagePath, id, unityVersion);
215+
UsageTracker = new UsageTracker(metricsService, UserSettings, usagePath, userId, unityVersion, instanceId.ToString());
216216

217217
if (firstRun)
218218
{

src/GitHub.Api/Metrics/UsageModel.cs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using System.Linq;
45

56
namespace GitHub.Unity
67
{
78
public class Usage
89
{
10+
public string InstanceId { get; set; }
911
public Dimensions Dimensions { get; set; } = new Dimensions();
1012
public Measures Measures { get; set; } = new Measures();
1113
}
@@ -23,16 +25,16 @@ public class Dimensions
2325
public class Measures
2426
{
2527
public int NumberOfStartups { get; set; }
26-
public int NumberOfCommits { get; set; }
27-
public int NumberOfFetches { get; set; }
28-
public int NumberOfPushes { get; set; }
29-
public int NumberOfPulls { get; set; }
30-
public int NumberOfProjectsInitialized { get; set; }
31-
public int NumberOfAuthentications { get; set; }
32-
public int NumberOfLocalBranchCreations { get; set; }
33-
public int NumberOfLocalBranchDeletion { get; set; }
34-
public int NumberOfLocalBranchCheckouts { get; set; }
35-
public int NumberOfRemoteBranchCheckouts { get; set; }
28+
public int Commits { get; set; }
29+
public int Fetches { get; set; }
30+
public int Pushes { get; set; }
31+
public int Pulls { get; set; }
32+
public int ProjectsInitialized { get; set; }
33+
public int Authentications { get; set; }
34+
public int LocalBranchCreations { get; set; }
35+
public int LocalBranchDeletion { get; set; }
36+
public int LocalBranchCheckouts { get; set; }
37+
public int RemoteBranchCheckouts { get; set; }
3638
}
3739

3840
class UsageModel
@@ -42,7 +44,7 @@ class UsageModel
4244

4345
private Usage currentUsage;
4446

45-
public Usage GetCurrentUsage(string appVersion, string unityVersion)
47+
public Usage GetCurrentUsage(string appVersion, string unityVersion, string instanceId)
4648
{
4749
Guard.ArgumentNotNullOrWhiteSpace(appVersion, "appVersion");
4850
Guard.ArgumentNotNullOrWhiteSpace(unityVersion, "unityVersion");
@@ -51,26 +53,21 @@ public Usage GetCurrentUsage(string appVersion, string unityVersion)
5153
if (currentUsage == null)
5254
{
5355
currentUsage = Reports
54-
.FirstOrDefault(usage => usage.Dimensions.Date == date
55-
&& usage.Dimensions.AppVersion == appVersion
56-
&& usage.Dimensions.UnityVersion == unityVersion);
56+
.FirstOrDefault(usage => usage.InstanceId == instanceId);
5757
}
5858

59-
if (currentUsage?.Dimensions.Date == date)
60-
{
61-
// update any fields that might be missing, if we've changed the format
62-
if (currentUsage.Dimensions.Guid != Guid)
63-
currentUsage.Dimensions.Guid = Guid;
64-
}
65-
else
59+
if (currentUsage == null)
6660
{
6761
currentUsage = new Usage
6862
{
63+
InstanceId = instanceId,
6964
Dimensions = {
7065
Date = date,
7166
Guid = Guid,
7267
AppVersion = appVersion,
73-
UnityVersion = unityVersion
68+
UnityVersion = unityVersion,
69+
Lang = CultureInfo.InstalledUICulture.IetfLanguageTag,
70+
CurrentLang = CultureInfo.CurrentCulture.IetfLanguageTag
7471
}
7572
};
7673
Reports.Add(currentUsage);

src/GitHub.Api/Metrics/UsageTracker.cs

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,21 @@ class UsageTracker : IUsageTracker
1717
private readonly NPath storePath;
1818
private readonly ISettings userSettings;
1919
private readonly IMetricsService metricsService;
20-
private readonly string guid;
20+
private readonly string userId;
2121
private readonly string unityVersion;
22+
private readonly string instanceId;
2223
private Timer timer;
2324

24-
public UsageTracker(IMetricsService metricsService, ISettings userSettings, NPath storePath, string guid, string unityVersion)
25+
public UsageTracker(IMetricsService metricsService, ISettings userSettings, NPath storePath, string userId, string unityVersion, string instanceId)
2526
{
2627
this.userSettings = userSettings;
2728
this.metricsService = metricsService;
28-
this.guid = guid;
29+
this.userId = userId;
2930
this.storePath = storePath;
3031
this.unityVersion = unityVersion;
32+
this.instanceId = instanceId;
3133

32-
Logger.Trace("guid:{0}", guid);
34+
Logger.Trace("userId:{0} instanceId:{1}", userId, instanceId);
3335
if (Enabled)
3436
RunTimer(3*60);
3537
}
@@ -66,7 +68,7 @@ private UsageStore LoadUsage()
6668
result = new UsageStore();
6769

6870
if (String.IsNullOrEmpty(result.Model.Guid))
69-
result.Model.Guid = guid;
71+
result.Model.Guid = userId;
7072

7173
return result;
7274
}
@@ -154,10 +156,7 @@ private async Task SendUsage()
154156

155157
private Usage GetCurrentUsage(UsageStore usageStore)
156158
{
157-
var usage = usageStore.Model.GetCurrentUsage(ApplicationConfiguration.AssemblyName.Version.ToString(), unityVersion);
158-
usage.Dimensions.Lang = CultureInfo.InstalledUICulture.IetfLanguageTag;
159-
usage.Dimensions.CurrentLang = CultureInfo.CurrentCulture.IetfLanguageTag;
160-
return usage;
159+
return usageStore.Model.GetCurrentUsage(ApplicationConfiguration.AssemblyName.Version.ToString(), unityVersion, instanceId);
161160
}
162161

163162
public void IncrementNumberOfStartups()
@@ -175,7 +174,7 @@ public void IncrementNumberOfCommits()
175174
var usageStore = LoadUsage();
176175
var usage = GetCurrentUsage(usageStore);
177176

178-
usage.Measures.NumberOfCommits++;
177+
usage.Measures.Commits++;
179178

180179
SaveUsage(usageStore);
181180
}
@@ -185,7 +184,7 @@ public void IncrementNumberOfFetches()
185184
var usageStore = LoadUsage();
186185
var usage = GetCurrentUsage(usageStore);
187186

188-
usage.Measures.NumberOfFetches++;
187+
usage.Measures.Fetches++;
189188

190189
SaveUsage(usageStore);
191190
}
@@ -195,7 +194,7 @@ public void IncrementNumberOfPushes()
195194
var usageStore = LoadUsage();
196195
var usage = GetCurrentUsage(usageStore);
197196

198-
usage.Measures.NumberOfPushes++;
197+
usage.Measures.Pushes++;
199198

200199
SaveUsage(usageStore);
201200
}
@@ -205,7 +204,7 @@ public void IncrementNumberOfProjectsInitialized()
205204
var usageStore = LoadUsage();
206205
var usage = GetCurrentUsage(usageStore);
207206

208-
usage.Measures.NumberOfProjectsInitialized++;
207+
usage.Measures.ProjectsInitialized++;
209208

210209
SaveUsage(usageStore);
211210
}
@@ -215,7 +214,7 @@ public void IncrementNumberOfLocalBranchCreations()
215214
var usageStore = LoadUsage();
216215
var usage = GetCurrentUsage(usageStore);
217216

218-
usage.Measures.NumberOfLocalBranchCreations++;
217+
usage.Measures.LocalBranchCreations++;
219218

220219
SaveUsage(usageStore);
221220
}
@@ -225,7 +224,7 @@ public void IncrementNumberOfLocalBranchDeletions()
225224
var usageStore = LoadUsage();
226225
var usage = GetCurrentUsage(usageStore);
227226

228-
usage.Measures.NumberOfLocalBranchDeletion++;
227+
usage.Measures.LocalBranchDeletion++;
229228

230229
SaveUsage(usageStore);
231230
}
@@ -235,7 +234,7 @@ public void IncrementNumberOfLocalBranchCheckouts()
235234
var usageStore = LoadUsage();
236235
var usage = GetCurrentUsage(usageStore);
237236

238-
usage.Measures.NumberOfLocalBranchCheckouts++;
237+
usage.Measures.LocalBranchCheckouts++;
239238

240239
SaveUsage(usageStore);
241240
}
@@ -245,7 +244,7 @@ public void IncrementNumberOfRemoteBranchCheckouts()
245244
var usageStore = LoadUsage();
246245
var usage = GetCurrentUsage(usageStore);
247246

248-
usage.Measures.NumberOfRemoteBranchCheckouts++;
247+
usage.Measures.RemoteBranchCheckouts++;
249248

250249
SaveUsage(usageStore);
251250
}
@@ -255,7 +254,7 @@ public void IncrementNumberOfPulls()
255254
var usageStore = LoadUsage();
256255
var usage = GetCurrentUsage(usageStore);
257256

258-
usage.Measures.NumberOfPulls++;
257+
usage.Measures.Pulls++;
259258

260259
SaveUsage(usageStore);
261260
}
@@ -265,7 +264,7 @@ public void IncrementNumberOfAuthentications()
265264
var usageStore = LoadUsage();
266265
var usage = GetCurrentUsage(usageStore);
267266

268-
usage.Measures.NumberOfAuthentications++;
267+
usage.Measures.Authentications++;
269268

270269
SaveUsage(usageStore);
271270
}

src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationCache.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ sealed class ApplicationCache : ScriptObjectSingleton<ApplicationCache>
1414
{
1515
[SerializeField] private bool firstRun = true;
1616
[SerializeField] public string firstRunAtString;
17+
[SerializeField] public string instanceIdString;
18+
[NonSerialized] private Guid? instanceId;
1719
[NonSerialized] private bool? firstRunValue;
1820
[NonSerialized] public DateTimeOffset? firstRunAtValue;
1921

@@ -60,6 +62,33 @@ private void EnsureFirstRun()
6062
Save(true);
6163
}
6264
}
65+
66+
public Guid InstanceId
67+
{
68+
get
69+
{
70+
EnsureInstanceId();
71+
return instanceId.Value;
72+
}
73+
}
74+
75+
private void EnsureInstanceId()
76+
{
77+
if (instanceId.HasValue)
78+
{
79+
return;
80+
}
81+
82+
if (string.IsNullOrEmpty(instanceIdString))
83+
{
84+
instanceId = Guid.NewGuid();
85+
instanceIdString = instanceId.ToString();
86+
}
87+
else
88+
{
89+
instanceId = new Guid(instanceIdString);
90+
}
91+
}
6392
}
6493

6594
sealed class EnvironmentCache : ScriptObjectSingleton<EnvironmentCache>

src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public ApplicationManager(IMainThreadSynchronizationContext synchronizationConte
2323

2424
protected override void SetupMetrics()
2525
{
26-
SetupMetrics(Environment.UnityVersion, ApplicationCache.Instance.FirstRun);
26+
SetupMetrics(Environment.UnityVersion, ApplicationCache.Instance.FirstRun, ApplicationCache.Instance.InstanceId);
2727
}
2828

2929
protected override void InitializeUI()

0 commit comments

Comments
 (0)