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

Commit e76a678

Browse files
Functionality to CreateEntry per session of GitHub for Unity
1 parent 51b1543 commit e76a678

File tree

4 files changed

+35
-15
lines changed

4 files changed

+35
-15
lines changed

src/GitHub.Api/Application/ApplicationManagerBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ protected void SetupMetrics(string unityVersion, bool firstRun)
216216

217217
if (firstRun)
218218
{
219+
UsageTracker.CreateEntry();
219220
TaskManager.Run(UsageTracker.IncrementNumberOfStartups);
220221
}
221222
#endif

src/GitHub.Api/Metrics/IUsageTracker.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public interface IUsageTracker
1414
void IncrementNumberOfLocalBranchDeletions();
1515
void IncrementNumberOfLocalBranchCheckouts();
1616
void IncrementNumberOfRemoteBranchCheckouts();
17+
void CreateEntry();
1718
}
1819

1920
class NullUsageTracker : IUsageTracker
@@ -30,6 +31,8 @@ public void IncrementNumberOfLocalBranchCreations() { }
3031
public void IncrementNumberOfLocalBranchDeletions() { }
3132
public void IncrementNumberOfLocalBranchCheckouts() { }
3233
public void IncrementNumberOfRemoteBranchCheckouts() { }
34+
public void CreateEntry() { }
35+
3336
public void SetMetricsService(IMetricsService instance) { }
3437
}
3538
}

src/GitHub.Api/Metrics/UsageModel.cs

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

56
namespace GitHub.Unity
@@ -51,7 +52,7 @@ public Usage GetCurrentUsage(string appVersion, string unityVersion)
5152
if (currentUsage == null)
5253
{
5354
currentUsage = Reports
54-
.FirstOrDefault(usage => usage.Dimensions.Date == date
55+
.Last(usage => usage.Dimensions.Date == date
5556
&& usage.Dimensions.AppVersion == appVersion
5657
&& usage.Dimensions.UnityVersion == unityVersion);
5758
}
@@ -64,16 +65,7 @@ public Usage GetCurrentUsage(string appVersion, string unityVersion)
6465
}
6566
else
6667
{
67-
currentUsage = new Usage
68-
{
69-
Dimensions = {
70-
Date = date,
71-
Guid = Guid,
72-
AppVersion = appVersion,
73-
UnityVersion = unityVersion
74-
}
75-
};
76-
Reports.Add(currentUsage);
68+
throw new InvalidOperationException("Current usage not found");
7769
}
7870

7971
return currentUsage;
@@ -88,6 +80,23 @@ public void RemoveReports(DateTime beforeDate)
8880
{
8981
Reports.RemoveAll(usage => usage.Dimensions.Date.Date != beforeDate.Date);
9082
}
83+
84+
public void CreateEntry(string appVersion, string unityVersion)
85+
{
86+
var date = DateTime.UtcNow.Date;
87+
currentUsage = new Usage {
88+
Dimensions = {
89+
Date = date,
90+
Guid = Guid,
91+
AppVersion = appVersion,
92+
UnityVersion = unityVersion,
93+
Lang = CultureInfo.InstalledUICulture.IetfLanguageTag,
94+
CurrentLang = CultureInfo.CurrentCulture.IetfLanguageTag
95+
}
96+
};
97+
98+
Reports.Add(currentUsage);
99+
}
91100
}
92101

93102
class UsageStore

src/GitHub.Api/Metrics/UsageTracker.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,17 @@ private async Task SendUsage()
154154

155155
private Usage GetCurrentUsage(UsageStore usageStore)
156156
{
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;
157+
return usageStore.Model.GetCurrentUsage(ApplicationConfiguration.AssemblyName.Version.ToString(), unityVersion);
158+
}
159+
160+
public void CreateEntry()
161+
{
162+
Logger.Trace("CreateEntry: \"{0}\"", storePath);
163+
164+
var usageStore = LoadUsage();
165+
usageStore.Model.CreateEntry(ApplicationConfiguration.AssemblyName.Version.ToString(), unityVersion);
166+
167+
SaveUsage(usageStore);
161168
}
162169

163170
public void IncrementNumberOfStartups()

0 commit comments

Comments
 (0)