async public Task DeleteNoteAsync(int noteId) { try { await DiscussionOperator.DeleteNoteAsync(MergeRequestDescriptor, noteId); } catch (OperatorException) { throw new DiscussionEditorException(); } }
// Instead of searching for a latest discussion note with some heuristically prepared parameters, // let's clean up all similar notes, including a recently added one async private Task cleanupBadNotes(NewDiscussionParameters parameters) { Debug.Assert(parameters.Position.HasValue); Trace.TraceInformation("Looking up for a note with bad position..."); int deletedCount = 0; List <Discussion> discussions = await DiscussionOperator.GetDiscussionsAsync(MergeRequestDescriptor); if (discussions == null) { Trace.TraceWarning(String.Format("No discussions found")); return; } foreach (Discussion discussion in discussions) { foreach (DiscussionNote note in discussion.Notes) { if (arePositionsEqual(note.Position, parameters.Position.Value)) { Trace.TraceInformation( "Deleting discussion note." + " Id: {0}, Author.Username: {1}, Created_At: {2} (LocalTime), Body:\n{3}", note.Id.ToString(), note.Author.Username, note.Created_At.ToLocalTime(), note.Body); await DiscussionOperator.DeleteNoteAsync(MergeRequestDescriptor, note.Id); ++deletedCount; } } } Trace.TraceInformation(String.Format("Deleted {0} notes", deletedCount)); }