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

Commit 2a3cc28

Browse files
Decided that we can trust the cached username if it validates
1 parent 5db2276 commit 2a3cc28

File tree

3 files changed

+25
-38
lines changed

3 files changed

+25
-38
lines changed

src/GitHub.Api/Application/ApiClient.cs

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,18 @@ public async Task GetOrganizations(Action<IList<Organization>> callback)
7171
callback(organizations);
7272
}
7373

74-
public async Task GetCurrentUser(Action<Octokit.User> callback)
74+
public async Task LoadKeychain(Action<bool> callback)
7575
{
7676
Guard.ArgumentNotNull(callback, "callback");
77-
var user = await GetCurrentUserInternal();
78-
callback(user);
77+
var hasLoadedKeys = await LoadKeychainInternal();
78+
callback(hasLoadedKeys);
7979
}
8080

81-
public async Task GetCurrentUserAndOrganizations(Action<Octokit.User, IList<Organization>> callback)
81+
public async Task GetCurrentUser(Action<Octokit.User> callback)
8282
{
8383
Guard.ArgumentNotNull(callback, "callback");
84-
await GetUsersAndOrganizationInternal(callback);
84+
var user = await GetCurrentUserInternal();
85+
callback(user);
8586
}
8687

8788
public async Task Login(string username, string password, Action<LoginResult> need2faCode, Action<bool, string> result)
@@ -186,7 +187,7 @@ private async Task CreateRepositoryInternal(NewRepository newRepository, Action<
186187
{
187188
logger.Trace("Creating repository");
188189

189-
if (!await EnsureKeychainLoaded())
190+
if (!await LoadKeychainInternal())
190191
{
191192
callback(null, new Exception("Keychain Not Loaded"));
192193
return;
@@ -223,7 +224,7 @@ private async Task<IList<Organization>> GetOrganizationInternal()
223224
{
224225
logger.Trace("Getting Organizations");
225226

226-
if (!await EnsureKeychainLoaded())
227+
if (!await LoadKeychainInternal())
227228
{
228229
return null;
229230
}
@@ -252,7 +253,7 @@ private async Task<IList<Organization>> GetOrganizationInternal()
252253
{
253254
logger.Trace("Getting Organizations");
254255

255-
if (!await EnsureKeychainLoaded())
256+
if (!await LoadKeychainInternal())
256257
{
257258
return null;
258259
}
@@ -268,44 +269,27 @@ private async Task<IList<Organization>> GetOrganizationInternal()
268269
return userCache;
269270
}
270271

271-
private async Task GetUsersAndOrganizationInternal(Action<Octokit.User, IList<Organization>> callback)
272-
{
273-
if (!await EnsureKeychainLoaded())
274-
{
275-
callback(null, null);
276-
return;
277-
}
278-
279-
var currentUserInternal = GetCurrentUserInternal();
280-
var organizationInternal = GetOrganizationInternal();
281-
282-
currentUserInternal.Start(TaskScheduler.Current);
283-
organizationInternal.Start(TaskScheduler.Current);
284-
285-
callback(await currentUserInternal,await organizationInternal);
286-
}
287-
288-
private async Task<bool> EnsureKeychainLoaded()
272+
private async Task<bool> LoadKeychainInternal()
289273
{
290-
logger.Trace("EnsureKeychainLoaded");
274+
logger.Trace("LoadKeychainInternal");
291275

292276
if (keychain.HasKeys)
293277
{
294278
if (!keychain.NeedsLoad)
295279
{
296-
logger.Trace("EnsureKeychainLoaded: Has keys does not need load");
280+
logger.Trace("LoadKeychainInternal: Has keys does not need load");
297281
return true;
298282
}
299283

300-
logger.Trace("EnsureKeychainLoaded: Loading");
284+
logger.Trace("LoadKeychainInternal: Loading");
301285

302286
var uriString = keychain.Connections.First().Host;
303287
var keychainAdapter = await keychain.Load(uriString);
304288

305289
return keychainAdapter.OctokitCredentials != Credentials.Anonymous;
306290
}
307291

308-
logger.Trace("EnsureKeychainLoaded: No keys to load");
292+
logger.Trace("LoadKeychainInternal: No keys to load");
309293

310294
return false;
311295
}

src/GitHub.Api/Application/IApiClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ interface IApiClient
1717
Task<bool> ValidateCredentials();
1818
Task Logout(UriString host);
1919
Task GetCurrentUser(Action<Octokit.User> callback);
20-
Task GetCurrentUserAndOrganizations(Action<Octokit.User, IList<Organization>> callback);
20+
Task LoadKeychain(Action<bool> callback);
2121
}
2222
}

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/PUblishView.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,22 @@ private void PopulateView()
6868

6969
isLoading = true;
7070

71-
Client.GetCurrentUserAndOrganizations((user, organizations) => {
72-
if (user == null)
71+
Client.LoadKeychain(hasKeys => {
72+
if (!hasKeys)
7373
{
7474
return;
7575
}
7676

77-
username = user.Login;
77+
username = keychainConnections.First().Username;
7878

79-
var organizationLogins = (organizations ?? Enumerable.Empty<Organization>())
80-
.OrderBy(organization => organization.Login)
81-
.Select(organization => organization.Login);
79+
Client.GetOrganizations(organizations => {
8280

83-
owners = new[] { user.Login }.Union(organizationLogins).ToArray();
81+
var organizationLogins = (organizations ?? Enumerable.Empty<Organization>())
82+
.OrderBy(organization => organization.Login)
83+
.Select(organization => organization.Login);
84+
85+
owners = new[] { username }.Union(organizationLogins).ToArray();
86+
});
8487
}).Finally(task => {
8588
isLoading = false;
8689
});

0 commit comments

Comments
 (0)