From 3ffe834e87831c50493e004480b5d73ccd7d038d Mon Sep 17 00:00:00 2001 From: Jasmine Date: Fri, 27 May 2016 15:27:25 -0400 Subject: [PATCH 01/16] add checks and properties to see if uri is from github --- src/GitHub.Exports/Primitives/UriString.cs | 1 + src/GitHub.Extensions/UriExtensions.cs | 5 +++++ src/GitHub.VisualStudio/Base/MenuBase.cs | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/GitHub.Exports/Primitives/UriString.cs b/src/GitHub.Exports/Primitives/UriString.cs index 32628f1a78..9894b7bbcc 100644 --- a/src/GitHub.Exports/Primitives/UriString.cs +++ b/src/GitHub.Exports/Primitives/UriString.cs @@ -77,6 +77,7 @@ void SetUri(Uri uri) } IsHypertextTransferProtocol = uri.IsHypertextTransferProtocol(); + IsGithubUri = uri.IsGithubUri(); } void SetFilePath(Uri uri) diff --git a/src/GitHub.Extensions/UriExtensions.cs b/src/GitHub.Extensions/UriExtensions.cs index 78976dd2d7..3de8ab01b4 100644 --- a/src/GitHub.Extensions/UriExtensions.cs +++ b/src/GitHub.Extensions/UriExtensions.cs @@ -25,6 +25,11 @@ public static bool IsHypertextTransferProtocol(this Uri uri) return uri.Scheme == "http" || uri.Scheme == "https"; } + public static bool IsGithubUri(this Uri uri) + { + return uri.OriginalString.Contains("github.com"); + } + public static bool IsSameHost(this Uri uri, Uri compareUri) { return uri.Host.Equals(compareUri.Host, StringComparison.OrdinalIgnoreCase); diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index 40fa6cd259..020ead5622 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -44,7 +44,8 @@ void RefreshRepo() protected bool IsGitHubRepo() { RefreshRepo(); - return ActiveRepo?.CloneUrl?.RepositoryName != null; + return ActiveRepo?.CloneUrl?.RepositoryName != null && ActiveRepo?.CloneUrl?.IsGithubUri == true; + } } } From 8c67752ae6920ce6ded88fe52f6fa87fffe3ebea Mon Sep 17 00:00:00 2001 From: Jasmine Date: Fri, 27 May 2016 15:28:06 -0400 Subject: [PATCH 02/16] whitespace fix --- src/GitHub.VisualStudio/Base/MenuBase.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index 020ead5622..f735ac5701 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -45,7 +45,6 @@ protected bool IsGitHubRepo() { RefreshRepo(); return ActiveRepo?.CloneUrl?.RepositoryName != null && ActiveRepo?.CloneUrl?.IsGithubUri == true; - } } } From dc744823ad806a63f03c812271172af00d429c1e Mon Sep 17 00:00:00 2001 From: Jasmine Date: Fri, 27 May 2016 20:26:41 -0400 Subject: [PATCH 03/16] used existing functionality to check if repo is a github repo --- src/GitHub.Exports/Services/IMenuHandler.cs | 1 + src/GitHub.VisualStudio/Base/MenuBase.cs | 44 +++++++++++++++++-- src/GitHub.VisualStudio/GitHubPackage.cs | 1 + .../Menus/AddConnection.cs | 12 ++--- src/GitHub.VisualStudio/Menus/CopyLink.cs | 17 ++++--- src/GitHub.VisualStudio/Menus/LinkMenuBase.cs | 7 +-- src/GitHub.VisualStudio/Menus/OpenLink.cs | 16 ++++--- 7 files changed, 74 insertions(+), 24 deletions(-) diff --git a/src/GitHub.Exports/Services/IMenuHandler.cs b/src/GitHub.Exports/Services/IMenuHandler.cs index af66c9e7b4..ec8f8c95f0 100644 --- a/src/GitHub.Exports/Services/IMenuHandler.cs +++ b/src/GitHub.Exports/Services/IMenuHandler.cs @@ -1,4 +1,5 @@ using System; +using System.Threading.Tasks; namespace GitHub.VisualStudio { diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index f735ac5701..d7965295e8 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -3,23 +3,47 @@ using GitHub.Extensions; using GitHub.Models; using GitHub.Services; +using System.Threading.Tasks; +using GitHub.Api; +using GitHub.Primitives; +using NullGuard; +using System.Diagnostics; namespace GitHub.VisualStudio { public abstract class MenuBase { readonly IServiceProvider serviceProvider; + readonly ISimpleApiClientFactory apiFactory; + protected IServiceProvider ServiceProvider { get { return serviceProvider; } } protected ISimpleRepositoryModel ActiveRepo { get; private set; } + ISimpleApiClient simpleApiClient; + [AllowNull] + public ISimpleApiClient SimpleApiClient + { + [return: AllowNull] + get { return simpleApiClient; } + set + { + if (simpleApiClient != value && value == null) + apiFactory.ClearFromCache(simpleApiClient); + simpleApiClient = value; + } + } + + protected ISimpleApiClientFactory ApiFactory => apiFactory; + protected MenuBase() { } - protected MenuBase(IServiceProvider serviceProvider) + protected MenuBase(IServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory) { this.serviceProvider = serviceProvider; + this.apiFactory = apiFactory; } void RefreshRepo() @@ -41,10 +65,24 @@ void RefreshRepo() } } - protected bool IsGitHubRepo() + protected async Task IsGitHubRepo() { RefreshRepo(); - return ActiveRepo?.CloneUrl?.RepositoryName != null && ActiveRepo?.CloneUrl?.IsGithubUri == true; + + var uri = ActiveRepo.CloneUrl; + if (uri == null) + return false; + + Debug.Assert(apiFactory != null, "apiFactory cannot be null. Did you call the right constructor?"); + SimpleApiClient = apiFactory.Create(uri); + + var isdotcom = HostAddress.IsGitHubDotComUri(uri.ToRepositoryUrl()); + if (!isdotcom) + { + var repo = await SimpleApiClient.GetRepository(); + return (repo.FullName == ActiveRepo.Name || repo.Id == 0) && SimpleApiClient.IsEnterprise(); + } + return isdotcom; } } } diff --git a/src/GitHub.VisualStudio/GitHubPackage.cs b/src/GitHub.VisualStudio/GitHubPackage.cs index 8584579220..c318430d1d 100644 --- a/src/GitHub.VisualStudio/GitHubPackage.cs +++ b/src/GitHub.VisualStudio/GitHubPackage.cs @@ -4,6 +4,7 @@ using System.IO; using System.Reflection; using System.Runtime.InteropServices; +using SysTask = System.Threading.Tasks; using GitHub.Extensions; using GitHub.Models; using GitHub.Services; diff --git a/src/GitHub.VisualStudio/Menus/AddConnection.cs b/src/GitHub.VisualStudio/Menus/AddConnection.cs index c9e397f7c3..8f4929a899 100644 --- a/src/GitHub.VisualStudio/Menus/AddConnection.cs +++ b/src/GitHub.VisualStudio/Menus/AddConnection.cs @@ -4,6 +4,8 @@ using GitHub.Services; using GitHub.UI; using GitHub.Extensions; +using NullGuard; +using GitHub.Api; namespace GitHub.VisualStudio.Menus { @@ -12,8 +14,8 @@ namespace GitHub.VisualStudio.Menus public class AddConnection: MenuBase, IMenuHandler { [ImportingConstructor] - public AddConnection([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider) - : base(serviceProvider) + public AddConnection([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory) + : base(serviceProvider, apiFactory) { } @@ -24,11 +26,5 @@ public void Activate() { StartFlow(UIControllerFlow.Authentication); } - - void StartFlow(UIControllerFlow controllerFlow) - { - var uiProvider = ServiceProvider.GetExportedValue(); - uiProvider.RunUI(controllerFlow, null); - } } } diff --git a/src/GitHub.VisualStudio/Menus/CopyLink.cs b/src/GitHub.VisualStudio/Menus/CopyLink.cs index 200b01370e..1b5282cb29 100644 --- a/src/GitHub.VisualStudio/Menus/CopyLink.cs +++ b/src/GitHub.VisualStudio/Menus/CopyLink.cs @@ -5,6 +5,8 @@ using GitHub.Extensions; using GitHub.Services; using GitHub.VisualStudio.UI; +using System.Threading.Tasks; +using GitHub.Api; namespace GitHub.VisualStudio.Menus { @@ -13,17 +15,18 @@ namespace GitHub.VisualStudio.Menus public class CopyLink : LinkMenuBase, IDynamicMenuHandler { [ImportingConstructor] - public CopyLink([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider) - : base(serviceProvider) + public CopyLink([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory) + : base(serviceProvider, apiFactory) { } public Guid Guid => GuidList.guidContextMenuSet; public int CmdId => PkgCmdIDList.copyLinkCommand; - public void Activate() + public async void Activate([AllowNull]object data = null) { - if (!IsGitHubRepo()) + var isgithub = await IsGitHubRepo(); + if (!isgithub) return; var link = GenerateLink(); @@ -44,7 +47,11 @@ public void Activate() public bool CanShow() { - return IsGitHubRepo(); + return System.Threading.Tasks.Task.Run(() => + { + return IsGitHubRepo(); + }).Result; } + } } diff --git a/src/GitHub.VisualStudio/Menus/LinkMenuBase.cs b/src/GitHub.VisualStudio/Menus/LinkMenuBase.cs index 49c2931580..2e5d38c283 100644 --- a/src/GitHub.VisualStudio/Menus/LinkMenuBase.cs +++ b/src/GitHub.VisualStudio/Menus/LinkMenuBase.cs @@ -1,4 +1,5 @@ -using GitHub.Extensions; +using GitHub.Api; +using GitHub.Extensions; using GitHub.Primitives; using System; @@ -6,8 +7,8 @@ namespace GitHub.VisualStudio.Menus { public class LinkMenuBase: MenuBase { - public LinkMenuBase(IServiceProvider serviceProvider) - : base(serviceProvider) + public LinkMenuBase(IServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory) + : base(serviceProvider, apiFactory) { } diff --git a/src/GitHub.VisualStudio/Menus/OpenLink.cs b/src/GitHub.VisualStudio/Menus/OpenLink.cs index 03071fba52..a93dea90cb 100644 --- a/src/GitHub.VisualStudio/Menus/OpenLink.cs +++ b/src/GitHub.VisualStudio/Menus/OpenLink.cs @@ -3,6 +3,8 @@ using Microsoft.VisualStudio.Shell; using System; using System.ComponentModel.Composition; +using System.Threading.Tasks; +using GitHub.Api; namespace GitHub.VisualStudio.Menus { @@ -11,17 +13,18 @@ namespace GitHub.VisualStudio.Menus public class OpenLink: LinkMenuBase, IDynamicMenuHandler { [ImportingConstructor] - public OpenLink([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider) - : base(serviceProvider) + public OpenLink([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory) + : base(serviceProvider, apiFactory) { } public Guid Guid => GuidList.guidContextMenuSet; public int CmdId => PkgCmdIDList.openLinkCommand; - public void Activate() + public async void Activate([AllowNull]object data = null) { - if (!IsGitHubRepo()) + var isgithub = await IsGitHubRepo(); + if (!isgithub) return; var link = GenerateLink(); @@ -33,7 +36,10 @@ public void Activate() public bool CanShow() { - return IsGitHubRepo(); + return System.Threading.Tasks.Task.Run(() => + { + return IsGitHubRepo(); + }).Result; } } } From f1aa96a280417436e9979e5ce46a36f5870f10d2 Mon Sep 17 00:00:00 2001 From: Jasmine Date: Fri, 27 May 2016 20:32:29 -0400 Subject: [PATCH 04/16] get rid of unneccesary field and property added --- src/GitHub.Exports/Primitives/UriString.cs | 1 - src/GitHub.Extensions/UriExtensions.cs | 5 ----- 2 files changed, 6 deletions(-) diff --git a/src/GitHub.Exports/Primitives/UriString.cs b/src/GitHub.Exports/Primitives/UriString.cs index 9894b7bbcc..32628f1a78 100644 --- a/src/GitHub.Exports/Primitives/UriString.cs +++ b/src/GitHub.Exports/Primitives/UriString.cs @@ -77,7 +77,6 @@ void SetUri(Uri uri) } IsHypertextTransferProtocol = uri.IsHypertextTransferProtocol(); - IsGithubUri = uri.IsGithubUri(); } void SetFilePath(Uri uri) diff --git a/src/GitHub.Extensions/UriExtensions.cs b/src/GitHub.Extensions/UriExtensions.cs index 3de8ab01b4..78976dd2d7 100644 --- a/src/GitHub.Extensions/UriExtensions.cs +++ b/src/GitHub.Extensions/UriExtensions.cs @@ -25,11 +25,6 @@ public static bool IsHypertextTransferProtocol(this Uri uri) return uri.Scheme == "http" || uri.Scheme == "https"; } - public static bool IsGithubUri(this Uri uri) - { - return uri.OriginalString.Contains("github.com"); - } - public static bool IsSameHost(this Uri uri, Uri compareUri) { return uri.Host.Equals(compareUri.Host, StringComparison.OrdinalIgnoreCase); From b04fc07a98e8123085b4acd173f3afe5155caf5a Mon Sep 17 00:00:00 2001 From: Jasmine Date: Thu, 2 Jun 2016 11:28:46 -0400 Subject: [PATCH 05/16] make SimpleApiClient protected --- src/GitHub.VisualStudio/Base/MenuBase.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index d7965295e8..31ee548167 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -20,9 +20,10 @@ public abstract class MenuBase protected ISimpleRepositoryModel ActiveRepo { get; private set; } - ISimpleApiClient simpleApiClient; + protected ISimpleApiClient simpleApiClient; + [AllowNull] - public ISimpleApiClient SimpleApiClient + protected ISimpleApiClient SimpleApiClient { [return: AllowNull] get { return simpleApiClient; } From f41e233fc61df353e9e269feb7d92ea6d337dd19 Mon Sep 17 00:00:00 2001 From: Jasmine Date: Thu, 2 Jun 2016 11:40:58 -0400 Subject: [PATCH 06/16] remove unnccessary usings --- src/GitHub.Exports/Services/IMenuHandler.cs | 1 - src/GitHub.VisualStudio/GitHubPackage.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/src/GitHub.Exports/Services/IMenuHandler.cs b/src/GitHub.Exports/Services/IMenuHandler.cs index ec8f8c95f0..af66c9e7b4 100644 --- a/src/GitHub.Exports/Services/IMenuHandler.cs +++ b/src/GitHub.Exports/Services/IMenuHandler.cs @@ -1,5 +1,4 @@ using System; -using System.Threading.Tasks; namespace GitHub.VisualStudio { diff --git a/src/GitHub.VisualStudio/GitHubPackage.cs b/src/GitHub.VisualStudio/GitHubPackage.cs index c318430d1d..8584579220 100644 --- a/src/GitHub.VisualStudio/GitHubPackage.cs +++ b/src/GitHub.VisualStudio/GitHubPackage.cs @@ -4,7 +4,6 @@ using System.IO; using System.Reflection; using System.Runtime.InteropServices; -using SysTask = System.Threading.Tasks; using GitHub.Extensions; using GitHub.Models; using GitHub.Services; From 44272c7eb5b7390e175b8383aae455560b2c7d0c Mon Sep 17 00:00:00 2001 From: Jasmine Date: Thu, 2 Jun 2016 12:04:43 -0400 Subject: [PATCH 07/16] wait instead of run task --- src/GitHub.VisualStudio/Menus/CopyLink.cs | 5 +---- src/GitHub.VisualStudio/Menus/OpenLink.cs | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/GitHub.VisualStudio/Menus/CopyLink.cs b/src/GitHub.VisualStudio/Menus/CopyLink.cs index 1b5282cb29..467a594ddb 100644 --- a/src/GitHub.VisualStudio/Menus/CopyLink.cs +++ b/src/GitHub.VisualStudio/Menus/CopyLink.cs @@ -47,10 +47,7 @@ public async void Activate([AllowNull]object data = null) public bool CanShow() { - return System.Threading.Tasks.Task.Run(() => - { - return IsGitHubRepo(); - }).Result; + return IsGitHubRepo().Wait(250); } } diff --git a/src/GitHub.VisualStudio/Menus/OpenLink.cs b/src/GitHub.VisualStudio/Menus/OpenLink.cs index a93dea90cb..ff9de4c96f 100644 --- a/src/GitHub.VisualStudio/Menus/OpenLink.cs +++ b/src/GitHub.VisualStudio/Menus/OpenLink.cs @@ -36,10 +36,7 @@ public async void Activate([AllowNull]object data = null) public bool CanShow() { - return System.Threading.Tasks.Task.Run(() => - { - return IsGitHubRepo(); - }).Result; + return IsGitHubRepo().Wait(250); } } } From b816d1f87b4745aab6c883013d7ed368bf7a983a Mon Sep 17 00:00:00 2001 From: Jasmine Date: Fri, 10 Jun 2016 13:45:04 -0400 Subject: [PATCH 08/16] don't return the wait result, return the actual result --- src/GitHub.VisualStudio/Menus/CopyLink.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/GitHub.VisualStudio/Menus/CopyLink.cs b/src/GitHub.VisualStudio/Menus/CopyLink.cs index 467a594ddb..4cb5ba7675 100644 --- a/src/GitHub.VisualStudio/Menus/CopyLink.cs +++ b/src/GitHub.VisualStudio/Menus/CopyLink.cs @@ -47,7 +47,9 @@ public async void Activate([AllowNull]object data = null) public bool CanShow() { - return IsGitHubRepo().Wait(250); + Task githubRepoCheckTask = IsGitHubRepo(); + githubRepoCheckTask.Wait(250); + return githubRepoCheckTask.Result; } } From 8a91de0eb8ee86cdc7038dd9799c834a500c7db3 Mon Sep 17 00:00:00 2001 From: Jasmine Date: Mon, 13 Jun 2016 08:32:55 -0400 Subject: [PATCH 09/16] Send back result in OpenLink --- src/GitHub.VisualStudio/Menus/OpenLink.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/GitHub.VisualStudio/Menus/OpenLink.cs b/src/GitHub.VisualStudio/Menus/OpenLink.cs index ff9de4c96f..47fd1bd1bf 100644 --- a/src/GitHub.VisualStudio/Menus/OpenLink.cs +++ b/src/GitHub.VisualStudio/Menus/OpenLink.cs @@ -36,7 +36,9 @@ public async void Activate([AllowNull]object data = null) public bool CanShow() { - return IsGitHubRepo().Wait(250); + Task githubRepoCheckTask = IsGitHubRepo(); + githubRepoCheckTask.Wait(250); + return githubRepoCheckTask.Result; } } } From 06acfca3950315d7e19e9a1c3a8bc801ee38930e Mon Sep 17 00:00:00 2001 From: Jasmine Date: Tue, 14 Jun 2016 18:45:06 -0400 Subject: [PATCH 10/16] wait for 250 miliseconds, return result based on if task is done --- src/GitHub.VisualStudio/Menus/CopyLink.cs | 3 +-- src/GitHub.VisualStudio/Menus/OpenLink.cs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/GitHub.VisualStudio/Menus/CopyLink.cs b/src/GitHub.VisualStudio/Menus/CopyLink.cs index 4cb5ba7675..0902d04615 100644 --- a/src/GitHub.VisualStudio/Menus/CopyLink.cs +++ b/src/GitHub.VisualStudio/Menus/CopyLink.cs @@ -48,8 +48,7 @@ public async void Activate([AllowNull]object data = null) public bool CanShow() { Task githubRepoCheckTask = IsGitHubRepo(); - githubRepoCheckTask.Wait(250); - return githubRepoCheckTask.Result; + return githubRepoCheckTask.Wait(250) ? githubRepoCheckTask.Result : false; } } diff --git a/src/GitHub.VisualStudio/Menus/OpenLink.cs b/src/GitHub.VisualStudio/Menus/OpenLink.cs index 47fd1bd1bf..9cb6b3ae91 100644 --- a/src/GitHub.VisualStudio/Menus/OpenLink.cs +++ b/src/GitHub.VisualStudio/Menus/OpenLink.cs @@ -37,8 +37,7 @@ public async void Activate([AllowNull]object data = null) public bool CanShow() { Task githubRepoCheckTask = IsGitHubRepo(); - githubRepoCheckTask.Wait(250); - return githubRepoCheckTask.Result; + return githubRepoCheckTask.Wait(250) ? githubRepoCheckTask.Result : false; } } } From 755bf359abaa4537cf3400d999918123bf1a08c8 Mon Sep 17 00:00:00 2001 From: Jasmine Date: Wed, 15 Jun 2016 08:48:09 -0400 Subject: [PATCH 11/16] change the tasks to vars --- src/GitHub.VisualStudio/Menus/CopyLink.cs | 2 +- src/GitHub.VisualStudio/Menus/OpenLink.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitHub.VisualStudio/Menus/CopyLink.cs b/src/GitHub.VisualStudio/Menus/CopyLink.cs index 0902d04615..cb70516cfb 100644 --- a/src/GitHub.VisualStudio/Menus/CopyLink.cs +++ b/src/GitHub.VisualStudio/Menus/CopyLink.cs @@ -47,7 +47,7 @@ public async void Activate([AllowNull]object data = null) public bool CanShow() { - Task githubRepoCheckTask = IsGitHubRepo(); + var githubRepoCheckTask = IsGitHubRepo(); return githubRepoCheckTask.Wait(250) ? githubRepoCheckTask.Result : false; } diff --git a/src/GitHub.VisualStudio/Menus/OpenLink.cs b/src/GitHub.VisualStudio/Menus/OpenLink.cs index 9cb6b3ae91..ed93f70e09 100644 --- a/src/GitHub.VisualStudio/Menus/OpenLink.cs +++ b/src/GitHub.VisualStudio/Menus/OpenLink.cs @@ -36,7 +36,7 @@ public async void Activate([AllowNull]object data = null) public bool CanShow() { - Task githubRepoCheckTask = IsGitHubRepo(); + var githubRepoCheckTask = IsGitHubRepo(); return githubRepoCheckTask.Wait(250) ? githubRepoCheckTask.Result : false; } } From c08199541c5887a0385ce7c7a4b1a1a7c9efb18f Mon Sep 17 00:00:00 2001 From: Jasmine Date: Wed, 15 Jun 2016 09:08:01 -0400 Subject: [PATCH 12/16] Remove unused usings, add one missed from rebase --- src/GitHub.VisualStudio/Base/MenuBase.cs | 3 +-- src/GitHub.VisualStudio/Menus/CopyLink.cs | 2 +- src/GitHub.VisualStudio/Menus/OpenLink.cs | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index 31ee548167..90d8eccf2c 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -5,9 +5,8 @@ using GitHub.Services; using System.Threading.Tasks; using GitHub.Api; -using GitHub.Primitives; using NullGuard; -using System.Diagnostics; +using GitHub.UI; namespace GitHub.VisualStudio { diff --git a/src/GitHub.VisualStudio/Menus/CopyLink.cs b/src/GitHub.VisualStudio/Menus/CopyLink.cs index cb70516cfb..fbe39346f7 100644 --- a/src/GitHub.VisualStudio/Menus/CopyLink.cs +++ b/src/GitHub.VisualStudio/Menus/CopyLink.cs @@ -5,7 +5,7 @@ using GitHub.Extensions; using GitHub.Services; using GitHub.VisualStudio.UI; -using System.Threading.Tasks; +using NullGuard; using GitHub.Api; namespace GitHub.VisualStudio.Menus diff --git a/src/GitHub.VisualStudio/Menus/OpenLink.cs b/src/GitHub.VisualStudio/Menus/OpenLink.cs index ed93f70e09..e2c71193c4 100644 --- a/src/GitHub.VisualStudio/Menus/OpenLink.cs +++ b/src/GitHub.VisualStudio/Menus/OpenLink.cs @@ -3,7 +3,7 @@ using Microsoft.VisualStudio.Shell; using System; using System.ComponentModel.Composition; -using System.Threading.Tasks; +using NullGuard; using GitHub.Api; namespace GitHub.VisualStudio.Menus From 7fa3ec2f4ae4f25071935095746ecc239e1bfcd8 Mon Sep 17 00:00:00 2001 From: Jasmine Date: Wed, 15 Jun 2016 09:34:31 -0400 Subject: [PATCH 13/16] adding missed constuctor back --- src/GitHub.VisualStudio/Base/MenuBase.cs | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index 90d8eccf2c..32a71890af 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -46,6 +46,47 @@ protected MenuBase(IServiceProvider serviceProvider, ISimpleApiClientFactory api this.apiFactory = apiFactory; } + protected MenuBase(IServiceProvider serviceProvider) + { + this.serviceProvider = serviceProvider; + } + + protected ISimpleRepositoryModel GetActiveRepo() + { + var activeRepo = ServiceProvider.GetExportedValue()?.ActiveRepo; + // activeRepo can be null at this point because it is set elsewhere as the result of async operation that may not have completed yet. + if (activeRepo == null) + { + var path = ServiceProvider.GetExportedValue()?.GetActiveRepoPath() ?? String.Empty; + try + { + activeRepo = !string.IsNullOrEmpty(path) ? new SimpleRepositoryModel(path) : null; + } + catch (Exception ex) + { + VsOutputLogger.WriteLine(string.Format(CultureInfo.CurrentCulture, "Error loading the repository from '{0}'. {1}", path, ex)); + } + } + return activeRepo; + } + + protected void StartFlow(UIControllerFlow controllerFlow) + { + var uiProvider = ServiceProvider.GetExportedValue(); + Debug.Assert(uiProvider != null, "MenuBase:StartFlow:No UIProvider available."); + if (uiProvider == null) + return; + + IConnection connection = null; + if (controllerFlow != UIControllerFlow.Authentication) + { + var activeRepo = GetActiveRepo(); + connection = ServiceProvider.GetExportedValue()?.Connections + .FirstOrDefault(c => activeRepo?.CloneUrl?.RepositoryName != null && c.HostAddress.Equals(HostAddress.Create(activeRepo.CloneUrl))); + } + uiProvider.RunUI(controllerFlow, connection); + } + void RefreshRepo() { ActiveRepo = ServiceProvider.GetExportedValue().ActiveRepo; From 3427f931b68174b5ce87af62357279d7afc3a010 Mon Sep 17 00:00:00 2001 From: Jasmine Date: Thu, 23 Jun 2016 12:35:35 -0400 Subject: [PATCH 14/16] change to reflect 1.0.18's current signature, add missing usings --- src/GitHub.VisualStudio/Base/MenuBase.cs | 3 +++ src/GitHub.VisualStudio/Menus/CopyLink.cs | 2 +- src/GitHub.VisualStudio/Menus/OpenLink.cs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index 32a71890af..a34645a0ab 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -7,6 +7,9 @@ using GitHub.Api; using NullGuard; using GitHub.UI; +using System.Diagnostics; +using System.Linq; +using GitHub.Primitives; namespace GitHub.VisualStudio { diff --git a/src/GitHub.VisualStudio/Menus/CopyLink.cs b/src/GitHub.VisualStudio/Menus/CopyLink.cs index fbe39346f7..c9d5fcb812 100644 --- a/src/GitHub.VisualStudio/Menus/CopyLink.cs +++ b/src/GitHub.VisualStudio/Menus/CopyLink.cs @@ -23,7 +23,7 @@ public CopyLink([Import(typeof(SVsServiceProvider))] IServiceProvider servicePro public Guid Guid => GuidList.guidContextMenuSet; public int CmdId => PkgCmdIDList.copyLinkCommand; - public async void Activate([AllowNull]object data = null) + public async void Activate() { var isgithub = await IsGitHubRepo(); if (!isgithub) diff --git a/src/GitHub.VisualStudio/Menus/OpenLink.cs b/src/GitHub.VisualStudio/Menus/OpenLink.cs index e2c71193c4..4b9b19ee3d 100644 --- a/src/GitHub.VisualStudio/Menus/OpenLink.cs +++ b/src/GitHub.VisualStudio/Menus/OpenLink.cs @@ -21,7 +21,7 @@ public OpenLink([Import(typeof(SVsServiceProvider))] IServiceProvider servicePro public Guid Guid => GuidList.guidContextMenuSet; public int CmdId => PkgCmdIDList.openLinkCommand; - public async void Activate([AllowNull]object data = null) + public async void Activate() { var isgithub = await IsGitHubRepo(); if (!isgithub) From 04862c5e2a8e4dc7531f0f8edd0c164c56ee3430 Mon Sep 17 00:00:00 2001 From: Jasmine Date: Thu, 23 Jun 2016 13:19:36 -0400 Subject: [PATCH 15/16] remove unrelated methods, restore relevant method --- src/GitHub.VisualStudio/Base/MenuBase.cs | 36 ------------------- .../Menus/AddConnection.cs | 8 ++++- 2 files changed, 7 insertions(+), 37 deletions(-) diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index a34645a0ab..dacc6c69f3 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -54,42 +54,6 @@ protected MenuBase(IServiceProvider serviceProvider) this.serviceProvider = serviceProvider; } - protected ISimpleRepositoryModel GetActiveRepo() - { - var activeRepo = ServiceProvider.GetExportedValue()?.ActiveRepo; - // activeRepo can be null at this point because it is set elsewhere as the result of async operation that may not have completed yet. - if (activeRepo == null) - { - var path = ServiceProvider.GetExportedValue()?.GetActiveRepoPath() ?? String.Empty; - try - { - activeRepo = !string.IsNullOrEmpty(path) ? new SimpleRepositoryModel(path) : null; - } - catch (Exception ex) - { - VsOutputLogger.WriteLine(string.Format(CultureInfo.CurrentCulture, "Error loading the repository from '{0}'. {1}", path, ex)); - } - } - return activeRepo; - } - - protected void StartFlow(UIControllerFlow controllerFlow) - { - var uiProvider = ServiceProvider.GetExportedValue(); - Debug.Assert(uiProvider != null, "MenuBase:StartFlow:No UIProvider available."); - if (uiProvider == null) - return; - - IConnection connection = null; - if (controllerFlow != UIControllerFlow.Authentication) - { - var activeRepo = GetActiveRepo(); - connection = ServiceProvider.GetExportedValue()?.Connections - .FirstOrDefault(c => activeRepo?.CloneUrl?.RepositoryName != null && c.HostAddress.Equals(HostAddress.Create(activeRepo.CloneUrl))); - } - uiProvider.RunUI(controllerFlow, connection); - } - void RefreshRepo() { ActiveRepo = ServiceProvider.GetExportedValue().ActiveRepo; diff --git a/src/GitHub.VisualStudio/Menus/AddConnection.cs b/src/GitHub.VisualStudio/Menus/AddConnection.cs index 8f4929a899..9da179591d 100644 --- a/src/GitHub.VisualStudio/Menus/AddConnection.cs +++ b/src/GitHub.VisualStudio/Menus/AddConnection.cs @@ -11,7 +11,7 @@ namespace GitHub.VisualStudio.Menus { [Export(typeof(IMenuHandler))] [PartCreationPolicy(CreationPolicy.Shared)] - public class AddConnection: MenuBase, IMenuHandler + public class AddConnection : MenuBase, IMenuHandler { [ImportingConstructor] public AddConnection([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, ISimpleApiClientFactory apiFactory) @@ -26,5 +26,11 @@ public void Activate() { StartFlow(UIControllerFlow.Authentication); } + + void StartFlow(UIControllerFlow controllerFlow) + { + var uiProvider = ServiceProvider.GetExportedValue(); + uiProvider.RunUI(controllerFlow, null); + } } } From f53776a40d5734a47a43e0ace312593326f7880c Mon Sep 17 00:00:00 2001 From: Jasmine Date: Thu, 23 Jun 2016 13:32:52 -0400 Subject: [PATCH 16/16] remove unnecessary usings --- src/GitHub.VisualStudio/Base/MenuBase.cs | 2 -- src/GitHub.VisualStudio/Menus/AddConnection.cs | 1 - src/GitHub.VisualStudio/Menus/CopyLink.cs | 1 - src/GitHub.VisualStudio/Menus/OpenLink.cs | 1 - 4 files changed, 5 deletions(-) diff --git a/src/GitHub.VisualStudio/Base/MenuBase.cs b/src/GitHub.VisualStudio/Base/MenuBase.cs index dacc6c69f3..3c897dbc87 100644 --- a/src/GitHub.VisualStudio/Base/MenuBase.cs +++ b/src/GitHub.VisualStudio/Base/MenuBase.cs @@ -6,9 +6,7 @@ using System.Threading.Tasks; using GitHub.Api; using NullGuard; -using GitHub.UI; using System.Diagnostics; -using System.Linq; using GitHub.Primitives; namespace GitHub.VisualStudio diff --git a/src/GitHub.VisualStudio/Menus/AddConnection.cs b/src/GitHub.VisualStudio/Menus/AddConnection.cs index 9da179591d..3d4c642cad 100644 --- a/src/GitHub.VisualStudio/Menus/AddConnection.cs +++ b/src/GitHub.VisualStudio/Menus/AddConnection.cs @@ -4,7 +4,6 @@ using GitHub.Services; using GitHub.UI; using GitHub.Extensions; -using NullGuard; using GitHub.Api; namespace GitHub.VisualStudio.Menus diff --git a/src/GitHub.VisualStudio/Menus/CopyLink.cs b/src/GitHub.VisualStudio/Menus/CopyLink.cs index c9d5fcb812..8a507d3770 100644 --- a/src/GitHub.VisualStudio/Menus/CopyLink.cs +++ b/src/GitHub.VisualStudio/Menus/CopyLink.cs @@ -5,7 +5,6 @@ using GitHub.Extensions; using GitHub.Services; using GitHub.VisualStudio.UI; -using NullGuard; using GitHub.Api; namespace GitHub.VisualStudio.Menus diff --git a/src/GitHub.VisualStudio/Menus/OpenLink.cs b/src/GitHub.VisualStudio/Menus/OpenLink.cs index 4b9b19ee3d..b196d3e87b 100644 --- a/src/GitHub.VisualStudio/Menus/OpenLink.cs +++ b/src/GitHub.VisualStudio/Menus/OpenLink.cs @@ -3,7 +3,6 @@ using Microsoft.VisualStudio.Shell; using System; using System.ComponentModel.Composition; -using NullGuard; using GitHub.Api; namespace GitHub.VisualStudio.Menus