async private Task createNewMergeRequestAsync(SubmitNewMergeRequestParameters parameters, string firstNote) { buttonCreateNew.Enabled = false; labelWorkflowStatus.Text = "Creating a merge request at GitLab..."; GitLabInstance gitLabInstance = new GitLabInstance(parameters.ProjectKey.HostName, Program.Settings); MergeRequestKey?mrkOpt = await MergeRequestEditHelper.SubmitNewMergeRequestAsync(gitLabInstance, _modificationNotifier, parameters, firstNote, getCurrentUser()); if (mrkOpt == null) { // all error handling is done at the callee side string message = "Merge Request has not been created"; labelWorkflowStatus.Text = message; buttonCreateNew.Enabled = true; Trace.TraceInformation("[MainForm] {0}", message); return; } requestUpdates(null, new int[] { Constants.NewOrClosedMergeRequestRefreshListTimerInterval }); labelWorkflowStatus.Text = String.Format("Merge Request !{0} has been created in project {1}", mrkOpt.Value.IId, parameters.ProjectKey.ProjectName); buttonCreateNew.Enabled = true; _newMergeRequestDialogStatesByHosts[getHostName()] = new NewMergeRequestProperties( parameters.ProjectKey.ProjectName, null, null, parameters.AssigneeUserName, parameters.Squash, parameters.DeleteSourceBranch); Trace.TraceInformation( "[MainForm] Created a new merge request. " + "Project: {0}, SourceBranch: {1}, TargetBranch: {2}, Assignee: {3}, firstNote: {4}", parameters.ProjectKey.ProjectName, parameters.SourceBranch, parameters.TargetBranch, parameters.AssigneeUserName, firstNote); }
async private Task closeMergeRequestAsync(string hostname, FullMergeRequestKey item) { MergeRequestKey mrk = new MergeRequestKey(item.ProjectKey, item.MergeRequest.IId); string message = "Do you really want to close (cancel) merge request? It will not be merged to the target branch."; if (MessageBox.Show(message, "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { GitLabInstance gitLabInstance = new GitLabInstance(hostname, Program.Settings); await MergeRequestEditHelper.CloseMergeRequest(gitLabInstance, _modificationNotifier, mrk); string statusMessage = String.Format("Merge Request !{0} has been closed", mrk.IId); labelWorkflowStatus.Text = statusMessage; Trace.TraceInformation("[MainForm] {0}", statusMessage); requestUpdates(null, new int[] { Constants.NewOrClosedMergeRequestRefreshListTimerInterval }); } else { Trace.TraceInformation("[MainForm] User declined to close a merge request"); } }
async private Task applyChangesToMergeRequestAsync(string hostname, User currentUser, FullMergeRequestKey item) { MergeRequestKey mrk = new MergeRequestKey(item.ProjectKey, item.MergeRequest.IId); string noteText = await MergeRequestEditHelper.GetLatestSpecialNote(_liveDataCache.DiscussionCache, mrk); MergeRequestPropertiesForm form = new EditMergeRequestPropertiesForm(hostname, getProjectAccessor(), currentUser, item.ProjectKey, item.MergeRequest, noteText); if (form.ShowDialog() != DialogResult.OK) { Trace.TraceInformation("[MainForm] User declined to modify a merge request"); return; } ApplyMergeRequestChangesParameters parameters = new ApplyMergeRequestChangesParameters(form.Title, form.AssigneeUsername, form.Description, form.TargetBranch, form.DeleteSourceBranch, form.Squash); GitLabInstance gitLabInstance = new GitLabInstance(hostname, Program.Settings); bool modified = await MergeRequestEditHelper.ApplyChangesToMergeRequest(gitLabInstance, _modificationNotifier, item.ProjectKey, item.MergeRequest, parameters, noteText, form.SpecialNote, currentUser); string statusMessage = modified ? String.Format("Merge Request !{0} has been modified", mrk.IId) : String.Format("No changes have been made to Merge Request !{0}", mrk.IId); labelWorkflowStatus.Text = statusMessage; Trace.TraceInformation("[MainForm] {0}", statusMessage); if (modified) { requestUpdates(mrk, new int[] { 100, Program.Settings.OneShotUpdateFirstChanceDelayMs, Program.Settings.OneShotUpdateSecondChanceDelayMs }); } }
async private Task closeMergeRequestAsync(FullMergeRequestKey item) { MergeRequestKey mrk = new MergeRequestKey(item.ProjectKey, item.MergeRequest.IId); string message = "Do you really want to close (cancel) merge request? It will not be merged to the target branch."; if (MessageBox.Show(message, "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { await MergeRequestEditHelper.CloseMergeRequest(mrk, _shortcuts); string statusMessage = String.Format("Merge Request !{0} has been closed", mrk.IId); addOperationRecord(statusMessage); requestUpdates(EDataCacheType.Live, null, new int[] { Program.Settings.NewOrClosedMergeRequestRefreshListDelayMs }); } else { Trace.TraceInformation("[MainForm] User declined to close a merge request"); } }
async private Task applyChangesToMergeRequestAsync(DataCache dataCache, string hostname, User currentUser, FullMergeRequestKey item, IEnumerable <User> fullUserList) { MergeRequestKey mrk = new MergeRequestKey(item.ProjectKey, item.MergeRequest.IId); string noteText = await MergeRequestEditHelper.GetLatestSpecialNote(dataCache.DiscussionCache, mrk); MergeRequestPropertiesForm form = new EditMergeRequestPropertiesForm(hostname, _shortcuts.GetProjectAccessor(), currentUser, item.ProjectKey, item.MergeRequest, noteText, fullUserList); if (form.ShowDialog() != DialogResult.OK) { Trace.TraceInformation("[MainForm] User declined to modify a merge request"); return; } ApplyMergeRequestChangesParameters parameters = new ApplyMergeRequestChangesParameters(form.Title, form.AssigneeUsername, form.Description, form.TargetBranch, form.DeleteSourceBranch, form.Squash, form.IsHighPriority); bool modified = await MergeRequestEditHelper.ApplyChangesToMergeRequest( item.ProjectKey, item.MergeRequest, parameters, noteText, form.SpecialNote, currentUser, _shortcuts); string statusMessage = modified ? String.Format("Merge Request !{0} has been modified", mrk.IId) : String.Format("No changes have been made to Merge Request !{0}", mrk.IId); addOperationRecord(statusMessage); if (modified) { requestUpdates(EDataCacheType.Live, mrk, new int[] { Program.Settings.OneShotUpdateFirstChanceDelayMs, Program.Settings.OneShotUpdateSecondChanceDelayMs }); } }
async private Task createNewMergeRequestAsync(SubmitNewMergeRequestParameters parameters, string firstNote) { setMergeRequestEditEnabled(false); addOperationRecord("Creating a merge request at GitLab has started"); MergeRequestKey?mrkOpt = await MergeRequestEditHelper.SubmitNewMergeRequestAsync( parameters, firstNote, getCurrentUser(), _shortcuts); if (mrkOpt == null) { // all error handling is done at the callee side string message = "Merge Request has not been created"; addOperationRecord(message); setMergeRequestEditEnabled(true); return; } requestUpdates(EDataCacheType.Live, null, new int[] { Program.Settings.NewOrClosedMergeRequestRefreshListDelayMs }); addOperationRecord(String.Format("Merge Request !{0} has been created in project {1}", mrkOpt.Value.IId, parameters.ProjectKey.ProjectName)); setMergeRequestEditEnabled(true); _newMergeRequestDialogStatesByHosts[getHostName()] = new NewMergeRequestProperties( parameters.ProjectKey.ProjectName, null, null, parameters.AssigneeUserName, parameters.Squash, parameters.DeleteSourceBranch); saveState(); Trace.TraceInformation( "[MainForm] Created a new merge request. " + "Project: {0}, SourceBranch: {1}, TargetBranch: {2}, Assignee: {3}, firstNote: {4}", parameters.ProjectKey.ProjectName, parameters.SourceBranch, parameters.TargetBranch, parameters.AssigneeUserName, firstNote); }