diff --git a/src/Uno.UI.RemoteControl.VS/EntryPoint.cs b/src/Uno.UI.RemoteControl.VS/EntryPoint.cs index 8590141e7172..8f619ffea681 100644 --- a/src/Uno.UI.RemoteControl.VS/EntryPoint.cs +++ b/src/Uno.UI.RemoteControl.VS/EntryPoint.cs @@ -344,9 +344,7 @@ private async Task EnsureServerAsync() _process.BeginErrorReadLine(); _ideChannelClient = new IdeChannelClient(pipeGuid, new Logger(this)); - _ideChannelClient.ForceHotReloadRequested += OnForceHotReloadRequestedAsync; _ideChannelClient.OnMessageReceived += OnMessageReceivedAsync; - _ideChannelClient.OnAddMenuItemIdeMessageRequested += OnAddMenuItemRequestIdeMessageAsync; _ideChannelClient.ConnectToHost(); // Set the port to the projects @@ -422,7 +420,34 @@ async Task RestartAsync() } } - private async Task OnMessageReceivedAsync(object? sender, NotificationRequestIdeMessage message) + private async Task OnMessageReceivedAsync(object? sender, IdeMessage devServerMessage) + { + try + { + switch (devServerMessage) + { + case AddMenuItemRequestIdeMessage amir: + await OnAddMenuItemRequestIdeMessageAsync(sender, amir); + break; + case ForceHotReloadIdeMessage fhr: + await OnForceHotReloadRequestedAsync(sender, fhr); + break; + case NotificationRequestIdeMessage nr: + await NotificationRequestIdeMessageAsync(sender, nr); + break; + default: + _debugAction?.Invoke($"Unknown message type {devServerMessage?.GetType()} from DevServer"); + break; + } + } + catch (Exception e) when (_ideChannelClient is not null) + { + _debugAction?.Invoke($"Failed to handle IdeMessage with message {e.Message}"); + throw; + } + } + + private async Task NotificationRequestIdeMessageAsync(object? sender, NotificationRequestIdeMessage message) { try { diff --git a/src/Uno.UI.RemoteControl.VS/IDEChannel/IDEChannelClient.cs b/src/Uno.UI.RemoteControl.VS/IDEChannel/IDEChannelClient.cs index 563b3c5ea5d4..b665647b8b09 100644 --- a/src/Uno.UI.RemoteControl.VS/IDEChannel/IDEChannelClient.cs +++ b/src/Uno.UI.RemoteControl.VS/IDEChannel/IDEChannelClient.cs @@ -20,9 +20,7 @@ internal class IdeChannelClient private IIdeChannelServer? _devServer; private readonly ILogger _logger; - public event AsyncEventHandler? ForceHotReloadRequested; - public event AsyncEventHandler? OnMessageReceived; - public event AsyncEventHandler? OnAddMenuItemIdeMessageRequested; + public event AsyncEventHandler? OnMessageReceived; public IdeChannelClient(Guid pipeGuid, ILogger logger) { @@ -93,20 +91,11 @@ private void ProcessDevServerMessage(object sender, IdeMessageEnvelope devServer var process = Task.CompletedTask; switch (devServerMessage) { - case AddMenuItemRequestIdeMessage cr: - _logger.Debug("Command Ide Message Requested"); - process = OnAddMenuItemIdeMessageRequested.InvokeAsync(this, cr); - break; - - case ForceHotReloadIdeMessage forceHotReloadMessage when ForceHotReloadRequested is { } hrRequested: - _logger.Debug("Hot reload requested"); - process = hrRequested.InvokeAsync(this, forceHotReloadMessage); - break; case KeepAliveIdeMessage: _logger.Verbose($"Keep alive from Dev Server"); break; - case NotificationRequestIdeMessage e when e is { } message: - _logger.Verbose($"Dev Server will open the Notification Message with message {e.Message}"); + case IdeMessage message: + _logger.Verbose($"Dev Server Message {message.GetType()} requested"); process = OnMessageReceived.InvokeAsync(this, message); break; default: