From 0428cf45af6b8329ec74b631cc8472d2fdcf558e Mon Sep 17 00:00:00 2001 From: "Shawn Yuan (from Dev Box)" Date: Tue, 2 Dec 2025 11:15:12 +0800 Subject: [PATCH] Added bug report tool for QA Signed-off-by: Shawn Yuan (from Dev Box) --- .../QuickAccessXAML/Flyout/LaunchPage.xaml.cs | 1 + .../Services/IQuickAccessCoordinator.cs | 2 ++ .../Services/QuickAccessCoordinator.cs | 21 ++++++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/settings-ui/QuickAccess.UI/QuickAccessXAML/Flyout/LaunchPage.xaml.cs b/src/settings-ui/QuickAccess.UI/QuickAccessXAML/Flyout/LaunchPage.xaml.cs index f6e1c1da52..fc0e5c211a 100644 --- a/src/settings-ui/QuickAccess.UI/QuickAccessXAML/Flyout/LaunchPage.xaml.cs +++ b/src/settings-ui/QuickAccess.UI/QuickAccessXAML/Flyout/LaunchPage.xaml.cs @@ -70,6 +70,7 @@ public sealed partial class LaunchPage : Page public void ReportBugBtn_Click(object sender, RoutedEventArgs e) { + _coordinator?.ReportBug(); } private void UpdateInfoBar_Tapped(object sender, TappedRoutedEventArgs e) diff --git a/src/settings-ui/QuickAccess.UI/Services/IQuickAccessCoordinator.cs b/src/settings-ui/QuickAccess.UI/Services/IQuickAccessCoordinator.cs index e739f03b42..33de96b8af 100644 --- a/src/settings-ui/QuickAccess.UI/Services/IQuickAccessCoordinator.cs +++ b/src/settings-ui/QuickAccess.UI/Services/IQuickAccessCoordinator.cs @@ -23,5 +23,7 @@ public interface IQuickAccessCoordinator bool UpdateModuleEnabled(ModuleType moduleType, bool isEnabled); + void ReportBug(); + void OnModuleLaunched(ModuleType moduleType); } diff --git a/src/settings-ui/QuickAccess.UI/Services/QuickAccessCoordinator.cs b/src/settings-ui/QuickAccess.UI/Services/QuickAccessCoordinator.cs index c0be5252d1..e0d5a41293 100644 --- a/src/settings-ui/QuickAccess.UI/Services/QuickAccessCoordinator.cs +++ b/src/settings-ui/QuickAccess.UI/Services/QuickAccessCoordinator.cs @@ -87,6 +87,14 @@ internal sealed class QuickAccessCoordinator : IQuickAccessCoordinator, IDisposa return true; } + public void ReportBug() + { + if (!TrySendIpcMessage("{\"bugreport\": 0 }", "bug report request")) + { + Logger.LogWarning("QuickAccessCoordinator: failed to dispatch bug report request; IPC unavailable."); + } + } + public void OnModuleLaunched(ModuleType moduleType) { Logger.LogInfo($"QuickAccessLauncher invoked module {moduleType}."); @@ -136,6 +144,11 @@ internal sealed class QuickAccessCoordinator : IQuickAccessCoordinator, IDisposa return; } + TrySendIpcMessage(payload, "general settings update"); + } + + private bool TrySendIpcMessage(string payload, string operationDescription) + { lock (_ipcLock) { if (_ipcManager == null) @@ -143,19 +156,21 @@ internal sealed class QuickAccessCoordinator : IQuickAccessCoordinator, IDisposa if (!_ipcUnavailableLogged) { _ipcUnavailableLogged = true; - Logger.LogWarning("QuickAccessCoordinator: unable to send settings update because IPC is not available."); + Logger.LogWarning($"QuickAccessCoordinator: unable to send {operationDescription} because IPC is not available."); } - return; + return false; } try { _ipcManager.Send(payload); + return true; } catch (Exception ex) { - Logger.LogError("QuickAccessCoordinator: failed to send general settings update to runner.", ex); + Logger.LogError($"QuickAccessCoordinator: failed to send {operationDescription}.", ex); + return false; } } }