diff --git a/Blueberry.Redmine/RedmineApiClient.cs b/Blueberry.Redmine/RedmineApiClient.cs index eb277cf..bf3ecf7 100644 --- a/Blueberry.Redmine/RedmineApiClient.cs +++ b/Blueberry.Redmine/RedmineApiClient.cs @@ -390,21 +390,12 @@ namespace Blueberry.Redmine { issue = new { - notes = comment - } - }; - var privatePayload = new - { - issue = new - { - private_notes = comment + notes = comment, + private_notes = isPrivate } }; - if(isPrivate) - await SendRequestAsync(HttpMethod.Put, path, privatePayload, token: token); - else - await SendRequestAsync(HttpMethod.Put, path, payload, token: token); + await SendRequestAsync(HttpMethod.Put, path, payload, token: token); } public async Task> GetTimeOnIssueAsync(int issueId, int limit = 25, IProgress<(int, int)>? progress = null, CancellationToken? token = null) diff --git a/Blueberry/IssueWindow.xaml b/Blueberry/IssueWindow.xaml index b44c759..b391578 100644 --- a/Blueberry/IssueWindow.xaml +++ b/Blueberry/IssueWindow.xaml @@ -79,6 +79,7 @@ + @@ -130,7 +131,14 @@ - + + + + + + + + @@ -140,6 +148,23 @@ + + + + + + + + + + + + + + + + + diff --git a/Blueberry/IssueWindow.xaml.cs b/Blueberry/IssueWindow.xaml.cs index 7b4aad7..0300476 100644 --- a/Blueberry/IssueWindow.xaml.cs +++ b/Blueberry/IssueWindow.xaml.cs @@ -2,6 +2,7 @@ using Blueberry.Redmine.Dto; using System.Collections.ObjectModel; using System.Diagnostics; +using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using Windows.Networking.NetworkOperators; @@ -14,7 +15,7 @@ namespace Blueberry /// public partial class IssueWindow : FluentWindow { - private readonly DetailedIssue.Issue _issue; + private DetailedIssue.Issue _issue; private readonly RedmineManager _manager; private readonly RedmineConfig _config; private readonly List _journalDisplays = []; @@ -38,15 +39,27 @@ namespace Blueberry iCreatedTextBox.Text = _issue.CreatedOn.ToString("yyyy-MM-dd"); iUpdatedTextBox.Text = _issue.UpdatedOn.ToString("yyyy-MM-dd"); iSpentTimeTextBox.Text = _issue.SpentHours.ToString(); + await DownloadJournals(); + } + + private async Task DownloadJournals() + { + Journals.Clear(); journalProgressRing.Visibility = Visibility.Visible; List hours = []; try { + var id = _issue.Id; + var newIssue = await _manager.GetIssueAsync(id); + if(newIssue != null) + _issue = newIssue; hours = await _manager.GetTimeOnIssue(_issue.Id, progress: UpdateProgress(), token: _tokenSource.Token); - } catch { } + } + catch { } + _journalDisplays.Clear(); _journalDisplays.AddRange(await ProcessJournal(_issue.Journals, hours)); - if(!_journalDisplays.Any(x=>!x.IsData)) + if (!_journalDisplays.Any(x => !x.IsData)) detailsToggleSwitch.IsChecked = true; await LoadJournal(); journalProgressRing.Visibility = Visibility.Hidden; @@ -98,6 +111,19 @@ namespace Blueberry { _tokenSource.Cancel(); } + + private async void commentButton_Click(object sender, RoutedEventArgs e) + { + var comment = commentTextBox.Text; + if (string.IsNullOrWhiteSpace(comment)) + return; + + var isPrivate = privateToggle.IsChecked ?? false; + + await _manager.AddComment(_issue.Id, comment, isPrivate); + commentTextBox.Text = ""; + await DownloadJournals(); + } } public partial class IssueWindow @@ -252,6 +278,7 @@ namespace Blueberry return Application.Current.TryFindResource(resourceKey) as Brush; } } + public Visibility LockVisibility => IsPrivate ? Visibility.Visible : Visibility.Hidden; public SolidColorBrush NameColor => StringToColorConverter.GetColorFromName(User); }