Added bug report tool for QA

Signed-off-by: Shawn Yuan (from Dev Box) <shuaiyuan@microsoft.com>
This commit is contained in:
Shawn Yuan (from Dev Box)
2025-12-02 11:15:12 +08:00
parent 5fc0ae7e42
commit 0428cf45af
3 changed files with 21 additions and 3 deletions

View File

@@ -70,6 +70,7 @@ public sealed partial class LaunchPage : Page
public void ReportBugBtn_Click(object sender, RoutedEventArgs e) public void ReportBugBtn_Click(object sender, RoutedEventArgs e)
{ {
_coordinator?.ReportBug();
} }
private void UpdateInfoBar_Tapped(object sender, TappedRoutedEventArgs e) private void UpdateInfoBar_Tapped(object sender, TappedRoutedEventArgs e)

View File

@@ -23,5 +23,7 @@ public interface IQuickAccessCoordinator
bool UpdateModuleEnabled(ModuleType moduleType, bool isEnabled); bool UpdateModuleEnabled(ModuleType moduleType, bool isEnabled);
void ReportBug();
void OnModuleLaunched(ModuleType moduleType); void OnModuleLaunched(ModuleType moduleType);
} }

View File

@@ -87,6 +87,14 @@ internal sealed class QuickAccessCoordinator : IQuickAccessCoordinator, IDisposa
return true; 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) public void OnModuleLaunched(ModuleType moduleType)
{ {
Logger.LogInfo($"QuickAccessLauncher invoked module {moduleType}."); Logger.LogInfo($"QuickAccessLauncher invoked module {moduleType}.");
@@ -136,6 +144,11 @@ internal sealed class QuickAccessCoordinator : IQuickAccessCoordinator, IDisposa
return; return;
} }
TrySendIpcMessage(payload, "general settings update");
}
private bool TrySendIpcMessage(string payload, string operationDescription)
{
lock (_ipcLock) lock (_ipcLock)
{ {
if (_ipcManager == null) if (_ipcManager == null)
@@ -143,19 +156,21 @@ internal sealed class QuickAccessCoordinator : IQuickAccessCoordinator, IDisposa
if (!_ipcUnavailableLogged) if (!_ipcUnavailableLogged)
{ {
_ipcUnavailableLogged = true; _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 try
{ {
_ipcManager.Send(payload); _ipcManager.Send(payload);
return true;
} }
catch (Exception ex) 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;
} }
} }
} }