diff --git a/GreenshotJiraPlugin/GreenshotJiraPlugin.csproj b/GreenshotJiraPlugin/GreenshotJiraPlugin.csproj index 7defad044..b5a3d87f5 100644 --- a/GreenshotJiraPlugin/GreenshotJiraPlugin.csproj +++ b/GreenshotJiraPlugin/GreenshotJiraPlugin.csproj @@ -34,12 +34,12 @@ - - ..\packages\Dapplo.HttpExtensions.0.6.8\lib\net45\Dapplo.HttpExtensions.dll + + ..\packages\Dapplo.HttpExtensions.0.6.10\lib\net45\Dapplo.HttpExtensions.dll True - - ..\packages\Dapplo.Jira.0.3.1\lib\net45\Dapplo.Jira.dll + + ..\packages\Dapplo.Jira.0.3.4\lib\net45\Dapplo.Jira.dll True diff --git a/GreenshotJiraPlugin/JiraConnector.cs b/GreenshotJiraPlugin/JiraConnector.cs index 0aec2884d..1351ce2d3 100644 --- a/GreenshotJiraPlugin/JiraConnector.cs +++ b/GreenshotJiraPlugin/JiraConnector.cs @@ -97,7 +97,7 @@ namespace GreenshotJiraPlugin { /// Internal login which catches the exceptions /// /// true if login was done sucessfully - private async Task DoLoginAsync(string user, string password) + private async Task DoLoginAsync(string user, string password, CancellationToken cancellationToken = default(CancellationToken)) { if (string.IsNullOrEmpty(user) || string.IsNullOrEmpty(password)) { @@ -110,14 +110,14 @@ namespace GreenshotJiraPlugin { LoginInfo loginInfo; try { - loginInfo = await _jiraApi.StartSessionAsync(user, password); + loginInfo = await _jiraApi.Session.StartAsync(user, password, cancellationToken); Monitor = new JiraMonitor(); - await Monitor.AddJiraInstanceAsync(_jiraApi); + await Monitor.AddJiraInstanceAsync(_jiraApi, cancellationToken); var favIconUri = _jiraApi.JiraBaseUri.AppendSegments("favicon.ico"); try { - FavIcon = await _jiraApi.GetUriContentAsync(favIconUri); + FavIcon = await _jiraApi.GetUriContentAsync(favIconUri, cancellationToken); } catch (Exception ex) { @@ -137,8 +137,8 @@ namespace GreenshotJiraPlugin { /// If there are credentials, call the real login. /// /// Task - public async Task LoginAsync() { - await LogoutAsync(); + public async Task LoginAsync(CancellationToken cancellationToken = default(CancellationToken)) { + await LogoutAsync(cancellationToken); try { // Get the system name, so the user knows where to login to var credentialsDialog = new CredentialsDialog(JiraConfig.Url) @@ -146,7 +146,7 @@ namespace GreenshotJiraPlugin { Name = null }; while (credentialsDialog.Show(credentialsDialog.Name) == DialogResult.OK) { - if (await DoLoginAsync(credentialsDialog.Name, credentialsDialog.Password)) { + if (await DoLoginAsync(credentialsDialog.Name, credentialsDialog.Password, cancellationToken)) { if (credentialsDialog.SaveChecked) { credentialsDialog.Confirm(true); } @@ -176,11 +176,11 @@ namespace GreenshotJiraPlugin { /// /// End the session, if there was one /// - public async Task LogoutAsync() { + public async Task LogoutAsync(CancellationToken cancellationToken = default(CancellationToken)) { if (_jiraApi != null && _loggedIn) { Monitor.Dispose(); - await _jiraApi.EndSessionAsync(); + await _jiraApi.Session.EndAsync(cancellationToken); _loggedIn = false; } } @@ -190,14 +190,14 @@ namespace GreenshotJiraPlugin { /// Do not use ConfigureAwait to call this, as it will move await from the UI thread. /// /// - private async Task CheckCredentialsAsync() { + private async Task CheckCredentialsAsync(CancellationToken cancellationToken = default(CancellationToken)) { if (_loggedIn) { if (_loggedInTime.AddMinutes(_timeout-1).CompareTo(DateTime.Now) < 0) { - await LogoutAsync(); - await LoginAsync(); + await LogoutAsync(cancellationToken); + await LoginAsync(cancellationToken); } } else { - await LoginAsync(); + await LoginAsync(cancellationToken); } } @@ -205,23 +205,24 @@ namespace GreenshotJiraPlugin { /// Get the favourite filters /// /// List with filters - public async Task> GetFavoriteFiltersAsync() + public async Task> GetFavoriteFiltersAsync(CancellationToken cancellationToken = default(CancellationToken)) { - await CheckCredentialsAsync(); - return await _jiraApi.GetFavoriteFiltersAsync().ConfigureAwait(false); + await CheckCredentialsAsync(cancellationToken); + return await _jiraApi.Filter.GetFavoritesAsync(cancellationToken).ConfigureAwait(false); } /// /// Get the issue for a key /// /// Jira issue key + /// CancellationToken /// Issue - public async Task GetIssueAsync(string issueKey) + public async Task GetIssueAsync(string issueKey, CancellationToken cancellationToken = default(CancellationToken)) { - await CheckCredentialsAsync(); + await CheckCredentialsAsync(cancellationToken); try { - return await _jiraApi.Issue.GetAsync(issueKey).ConfigureAwait(false); + return await _jiraApi.Issue.GetAsync(issueKey, cancellationToken).ConfigureAwait(false); } catch { @@ -238,7 +239,7 @@ namespace GreenshotJiraPlugin { /// public async Task AttachAsync(string issueKey, IBinaryContainer content, CancellationToken cancellationToken = default(CancellationToken)) { - await CheckCredentialsAsync(); + await CheckCredentialsAsync(cancellationToken); using (var memoryStream = new MemoryStream()) { content.WriteToStream(memoryStream); @@ -256,7 +257,7 @@ namespace GreenshotJiraPlugin { /// CancellationToken public async Task AddCommentAsync(string issueKey, string body, string visibility = null, CancellationToken cancellationToken = default(CancellationToken)) { - await CheckCredentialsAsync(); + await CheckCredentialsAsync(cancellationToken); await _jiraApi.Issue.AddCommentAsync(issueKey, body, visibility, cancellationToken).ConfigureAwait(false); } @@ -268,7 +269,7 @@ namespace GreenshotJiraPlugin { /// public async Task> SearchAsync(Filter filter, CancellationToken cancellationToken = default(CancellationToken)) { - await CheckCredentialsAsync(); + await CheckCredentialsAsync(cancellationToken); var searchResult = await _jiraApi.Issue.SearchAsync(filter.Jql, 20, new[] { "summary", "reporter", "assignee", "created", "issuetype" }, cancellationToken).ConfigureAwait(false); return searchResult.Issues; } diff --git a/GreenshotJiraPlugin/JiraMonitor.cs b/GreenshotJiraPlugin/JiraMonitor.cs index 7bea19b11..d38cdee5c 100644 --- a/GreenshotJiraPlugin/JiraMonitor.cs +++ b/GreenshotJiraPlugin/JiraMonitor.cs @@ -120,7 +120,7 @@ namespace GreenshotJiraPlugin public async Task AddJiraInstanceAsync(JiraApi jiraInstance, CancellationToken token = default(CancellationToken)) { _jiraInstances.Add(jiraInstance); - var projects = await jiraInstance.GetProjectsAsync(token).ConfigureAwait(false); + var projects = await jiraInstance.Project.GetAllAsync(cancellationToken: token).ConfigureAwait(false); if (projects != null) { foreach (var project in projects) @@ -208,8 +208,7 @@ namespace GreenshotJiraPlugin if (_recentJiras.Count > _maxEntries) { // Add it to the list of recent Jiras - IList clonedList = new List(_recentJiras.Values); - _recentJiras = (from jiraDetails in clonedList + _recentJiras = (from jiraDetails in _recentJiras.Values.ToList() orderby jiraDetails.SeenAt descending select jiraDetails).Take(_maxEntries).ToDictionary(jd => jd.JiraKey, jd => jd); } diff --git a/GreenshotJiraPlugin/packages.config b/GreenshotJiraPlugin/packages.config index 38a68ba7c..d3e269a7c 100644 --- a/GreenshotJiraPlugin/packages.config +++ b/GreenshotJiraPlugin/packages.config @@ -1,7 +1,7 @@  - - + +