/// <summary> /// Called when the user checks in a changeset. Posts a summary of /// the most recent check-in to Slack based on user preferences. /// </summary> async void VersionControlServer_CommitCheckin(object sender, CommitCheckinEventArgs e) { // Only post to Slack if user specified we should post to Slack. if (!m_viewModel.PostToSlack) { return; } IPendingChangesExt pendingChanges = GetService <IPendingChangesExt>(); var hyperlinkService = GetService <ITeamFoundationContextManager>() .CurrentContext.TeamProjectCollection .GetService <TswaClientHyperlinkService>(); try { await SlackServiceAdapter.PostToSlack(requestUri : m_viewModel.WebhookUrl, channelName : m_viewModel.Channel, userName : e.Workspace.OwnerDisplayName, changesetID : e.ChangesetId.ToString(), fileChangedCount : pendingChanges.IncludedChanges.Length, changesetComment : pendingChanges.CheckinComment, changesetUrl : hyperlinkService.GetChangesetDetailsUrl(e.ChangesetId).ToString()); m_viewModel.NotificationMessage = string.Format("Successfully posted changeset {0} to Slack.", e.ChangesetId); } catch (WebException ex) { m_viewModel.NotificationMessage = ex.ToString(); } catch { m_viewModel.NotificationMessage = "Error posting to Slack. The check-in still occurred. Look for an issue with your Post Check-In to Slack parameters before checking in again."; } }
async void vcServer_CommitCheckin(object sender, CommitCheckinEventArgs e) { // Only post to Slack if user specified we should post to Slack. if (!m_viewModel.PostToSlack) { return; } IPendingChangesExt pendingChanges = GetService <IPendingChangesExt>(); var hyperlinkService = GetService <ITeamFoundationContextManager>() .CurrentContext.TeamProjectCollection .GetService <TswaClientHyperlinkService>(); try { var response = await SlackServiceAdapter.PostToSlack(requestUri : m_viewModel.WebhookUrl, channelName : m_viewModel.Channel, userName : e.Workspace.OwnerDisplayName, changesetID : e.ChangesetId.ToString(), fileChangedCount : pendingChanges.IncludedChanges.Length, changesetComment : pendingChanges.CheckinComment, changesetUrl : hyperlinkService.GetChangesetDetailsUrl(e.ChangesetId).ToString()); if (response.StatusCode == HttpStatusCode.OK) { ShowNotification("Successfully posted check-in message to Slack.", NotificationType.Information); } else { var errorMessage = "Error posting to Slack:\n" + response.StatusCode + " - " + await response.Content.ReadAsStringAsync(); ShowNotification(errorMessage, NotificationType.Error); } } catch { // FIXME: For some reason, ShowErrorNotification doesn't work in the context of this catch block. var errorMessage = "Error posting to Slack. The check-in still occurred. Look for an issue with your Post Check-In to Slack parameters before checking in again."; ShowNotification(errorMessage, NotificationType.Error); } }