From c911717a3bd566d6733e08afa930ca0ab4fe1abf Mon Sep 17 00:00:00 2001 From: Mika Kuns Date: Wed, 22 Apr 2026 09:53:07 +0200 Subject: [PATCH] feat(ui): add Merge command to DiffModal --- .../ViewModels/Modals/DiffModalViewModel.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/ClaudeDo.Ui/ViewModels/Modals/DiffModalViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Modals/DiffModalViewModel.cs index 5924001..c1fd1a1 100644 --- a/src/ClaudeDo.Ui/ViewModels/Modals/DiffModalViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Modals/DiffModalViewModel.cs @@ -42,6 +42,10 @@ public sealed partial class DiffModalViewModel : ViewModelBase public required string WorktreePath { get; init; } public string? BaseRef { get; init; } + public string? TaskId { get; init; } + public string TaskTitle { get; init; } = ""; + public Func? ShowMergeModal { get; set; } + public Func? ResolveMergeVm { get; set; } public ObservableCollection Files { get; } = new(); @@ -58,6 +62,20 @@ public sealed partial class DiffModalViewModel : ViewModelBase [RelayCommand] private void Close() => CloseAction?.Invoke(); + private bool CanMerge() => + !string.IsNullOrEmpty(TaskId) + && ShowMergeModal is not null + && ResolveMergeVm is not null; + + [RelayCommand(CanExecute = nameof(CanMerge))] + private async Task MergeAsync() + { + if (TaskId is null || ShowMergeModal is null || ResolveMergeVm is null) return; + var vm = ResolveMergeVm(); + await vm.InitializeAsync(TaskId, TaskTitle); + await ShowMergeModal(vm); + } + public async Task LoadAsync(CancellationToken ct = default) { Files.Clear();