Skip to content
Snippets Groups Projects
Commit 05c2cd33 authored by Stanley Goldman's avatar Stanley Goldman
Browse files

Trying to load keychain; trying to handle scenario where item is in the cache...

Trying to load keychain; trying to handle scenario where item is in the cache but not in the credentialManager
parent b9a37331
No related branches found
No related tags found
No related merge requests found
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Octokit;
namespace GitHub.Unity
{
......@@ -42,8 +44,29 @@ namespace GitHub.Unity
public virtual ITask Run()
{
Logger.Trace("Run");
var progress = new ProgressReport();
return new ActionTask(SetupAndRestart(progress));
return new ActionTask(SetupAndRestart(progress))
.Then(new ActionTask(LoadKeychain()));
}
private async Task LoadKeychain()
{
Logger.Trace("Loading Keychain");
var firstConnection = Platform.Keychain.Connections.FirstOrDefault();
if (firstConnection == null)
{
Logger.Trace("No Host Found");
}
else
{
Logger.Trace("Loading Connection to Host:\"{0}\"", firstConnection);
var keychainAdapter = await Platform.Keychain.Load(firstConnection).SafeAwait();
if (keychainAdapter.OctokitCredentials == Credentials.Anonymous)
{ }
}
}
protected abstract string DetermineInstallationPath();
......@@ -84,6 +107,8 @@ namespace GitHub.Unity
private async Task SetupAndRestart(ProgressReport progress)
{
Logger.Trace("SetupAndRestart");
var gitSetup = new GitSetup(Environment, CancellationToken);
var expectedPath = gitSetup.GitInstallationPath;
var setupDone = await gitSetup.SetupIfNeeded(progress.Percentage, progress.Remaining);
......
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace GitHub.Unity
{
......@@ -12,6 +13,7 @@ namespace GitHub.Unity
void UpdateToken(UriString host, string token);
void Save(ICredential credential);
void Initialize();
IList<UriString> Connections { get; }
bool HasKeys { get; }
}
}
\ No newline at end of file
......@@ -55,11 +55,23 @@ namespace GitHub.Unity
public async Task<KeychainAdapter> Load(UriString host)
{
logger.Trace("Load Host:{0}", host);
logger.Trace("Load KeychainAdapter Host:\"{0}\"", host);
var keychainAdapter = FindOrCreateAdapter(host);
var keychainAdapterCredential = keychainAdapter.Credential;
if (keychainAdapterCredential == null)
{
throw new NullReferenceException($"{nameof(keychainAdapterCredential)} is null");
}
logger.Trace("Load KeychainAdapter Host:\"{0}\" Username:\"{1}\"", keychainAdapterCredential.Host ?? "NULL",
keychainAdapterCredential.Username ?? "NULL");
var keychainItem = await credentialManager.Load(host);
logger.Trace("Loading KeychainItem:{0}", keychainItem?.ToString() ?? "NULL");
keychainAdapter.Set(keychainItem);
return keychainAdapter;
......@@ -207,6 +219,8 @@ namespace GitHub.Unity
keychainItem.UpdateToken(token);
}
public IList<UriString> Connections => connectionCache.Keys.ToArray();
public bool HasKeys => connectionCache.Any();
}
}
\ No newline at end of file
......@@ -222,7 +222,10 @@ namespace GitHub.Unity
}
private void SignOut(object obj)
{
var task = new ActionTask(Platform.CredentialManager.Delete(Platform.CredentialManager.CachedCredentials.Host))
var credentialManager = Platform.CredentialManager;
var cachedCredentialsHost = credentialManager.CachedCredentials.Host;
new ActionTask(credentialManager.Delete(cachedCredentialsHost))
.Then(s =>
{
if (s)
......@@ -230,7 +233,7 @@ namespace GitHub.Unity
Platform.Keychain.Clear(Repository.CloneUrl.ToRepositoryUrl());
Platform.Keychain.Flush(Repository.CloneUrl.ToRepositoryUrl());
}
});
}).Start();
}
private bool ValidateSettings()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment