From e106b00b16778c6162b7ea3de910f6f8f5194991 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Wed, 3 Jun 2026 09:46:39 +0200 Subject: [PATCH] feat(ui): WorkerClient methods for week report and daily notes --- .../Services/Interfaces/IWorkerClient.cs | 6 ++++++ src/ClaudeDo.Ui/Services/ReportDtos.cs | 3 +++ src/ClaudeDo.Ui/Services/WorkerClient.cs | 20 +++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 src/ClaudeDo.Ui/Services/ReportDtos.cs diff --git a/src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs b/src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs index 78a7ace..dde7431 100644 --- a/src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs +++ b/src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs @@ -50,4 +50,10 @@ public interface IWorkerClient : INotifyPropertyChanged Task ContinuePlanningMergeAsync(string planningTaskId); Task AbortPlanningMergeAsync(string planningTaskId); Task QueuePlanningSubtasksAsync(string parentTaskId, CancellationToken ct = default); + Task GetWeekReportAsync(DateOnly start, DateOnly end); + Task GenerateWeekReportAsync(DateOnly start, DateOnly end); + Task> GetDailyNotesAsync(DateOnly day); + Task AddDailyNoteAsync(DateOnly day, string text); + Task UpdateDailyNoteAsync(string id, string text); + Task DeleteDailyNoteAsync(string id); } diff --git a/src/ClaudeDo.Ui/Services/ReportDtos.cs b/src/ClaudeDo.Ui/Services/ReportDtos.cs new file mode 100644 index 0000000..a853197 --- /dev/null +++ b/src/ClaudeDo.Ui/Services/ReportDtos.cs @@ -0,0 +1,3 @@ +namespace ClaudeDo.Ui.Services; + +public sealed record DailyNoteDto(string Id, string Date, string Text, int SortOrder); diff --git a/src/ClaudeDo.Ui/Services/WorkerClient.cs b/src/ClaudeDo.Ui/Services/WorkerClient.cs index a0e0d76..3f4d04e 100644 --- a/src/ClaudeDo.Ui/Services/WorkerClient.cs +++ b/src/ClaudeDo.Ui/Services/WorkerClient.cs @@ -326,6 +326,26 @@ public partial class WorkerClient : ObservableObject, IAsyncDisposable, IWorkerC catch { /* offline */ } } + private static string IsoDay(DateOnly d) => d.ToString("yyyy-MM-dd"); + + public Task GetWeekReportAsync(DateOnly start, DateOnly end) + => TryInvokeAsync("GetWeekReport", IsoDay(start), IsoDay(end)); + + public Task GenerateWeekReportAsync(DateOnly start, DateOnly end) + => _hub.InvokeAsync("GenerateWeekReport", IsoDay(start), IsoDay(end)); + + public async Task> GetDailyNotesAsync(DateOnly day) + => await TryInvokeAsync>("GetDailyNotes", IsoDay(day)) ?? new List(); + + public Task AddDailyNoteAsync(DateOnly day, string text) + => TryInvokeAsync("AddDailyNote", IsoDay(day), text); + + public async Task UpdateDailyNoteAsync(string id, string text) + => await _hub.InvokeAsync("UpdateDailyNote", id, text); + + public async Task DeleteDailyNoteAsync(string id) + => await _hub.InvokeAsync("DeleteDailyNote", id); + public async Task UpdateListAsync(UpdateListDto dto) { await _hub.InvokeAsync("UpdateList", dto);