diff --git a/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/IacViolationCardControl.xaml b/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/IacViolationCardControl.xaml
index b0feec6..bf06a69 100644
--- a/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/IacViolationCardControl.xaml
+++ b/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/IacViolationCardControl.xaml
@@ -64,6 +64,14 @@
VerticalAlignment="Bottom"
Margin="0 0 10 10"
Click="GenerateAiRemediationButton_OnClickAsync" />
+
\ No newline at end of file
diff --git a/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/IacViolationCardControl.xaml.cs b/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/IacViolationCardControl.xaml.cs
index a03ee57..07c313e 100644
--- a/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/IacViolationCardControl.xaml.cs
+++ b/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/IacViolationCardControl.xaml.cs
@@ -1,4 +1,5 @@
using System.IO;
+using System.Threading.Tasks;
using System.Windows;
using Cycode.VisualStudio.Extension.Shared.Cli.DTO;
using Cycode.VisualStudio.Extension.Shared.Cli.DTO.ScanResult.Iac;
@@ -56,6 +57,22 @@ private async void GenerateAiRemediationButton_OnClickAsync(object sender, Route
void OnSuccess(AiRemediationResultData remediationResult) {
AiRemediation.Markdown = remediationResult.Remediation;
GridHelper.ShowRow(Grid, _aiRemediationRowIndex);
+
+ GenerateAiRemediationButton.Visibility = Visibility.Collapsed;
+
+ if (remediationResult.IsFixAvailable) {
+ ApplyAiFixButton.Visibility = Visibility.Visible;
+ }
}
}
+
+ private async void ApplyAiFixButton_OnClickAsync(object sender, RoutedEventArgs e) {
+ ApplyAiFixButton.IsEnabled = false;
+ ApplyAiFixButton.Content = "Applying fix...";
+
+ await Task.Delay(3000);
+
+ ApplyAiFixButton.Content = "Fix Applied";
+ // TODO: Implement actual file modification logic here
+ }
}
\ No newline at end of file
diff --git a/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/SastViolationCardControl.xaml b/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/SastViolationCardControl.xaml
index d081667..6941903 100644
--- a/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/SastViolationCardControl.xaml
+++ b/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/SastViolationCardControl.xaml
@@ -72,6 +72,14 @@
VerticalAlignment="Bottom"
Margin="0 0 10 10"
Click="GenerateAiRemediationButton_OnClickAsync" />
+
\ No newline at end of file
diff --git a/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/SastViolationCardControl.xaml.cs b/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/SastViolationCardControl.xaml.cs
index d3efca8..793c0c7 100644
--- a/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/SastViolationCardControl.xaml.cs
+++ b/src/extension/Cycode.VisualStudio.Extension.Shared/Components/ViolationCards/SastViolationCardControl.xaml.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Linq;
+using System.Threading.Tasks;
using System.Windows;
using Cycode.VisualStudio.Extension.Shared.Cli.DTO;
using Cycode.VisualStudio.Extension.Shared.Cli.DTO.ScanResult.Sast;
@@ -75,6 +76,22 @@ private async void GenerateAiRemediationButton_OnClickAsync(object sender, Route
void OnSuccess(AiRemediationResultData remediationResult) {
AiRemediation.Markdown = remediationResult.Remediation;
GridHelper.ShowRow(Grid, _aiRemediationRowIndex);
+
+ GenerateAiRemediationButton.Visibility = Visibility.Collapsed;
+
+ if (remediationResult.IsFixAvailable) {
+ ApplyAiFixButton.Visibility = Visibility.Visible;
+ }
}
}
+
+ private async void ApplyAiFixButton_OnClickAsync(object sender, RoutedEventArgs e) {
+ ApplyAiFixButton.IsEnabled = false;
+ ApplyAiFixButton.Content = "Applying fix...";
+
+ await Task.Delay(3000);
+
+ ApplyAiFixButton.Content = "Fix Applied";
+ // TODO: Implement actual file modification logic here
+ }
}
\ No newline at end of file