using Avalonia.Controls; using Avalonia.Input.Platform; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; namespace LanMountainDesktop.Launcher.Views; public partial class MultiInstancePromptWindow : Window { private readonly TaskCompletionSource _completionSource = new(TaskCreationOptions.RunContinuationsAsynchronously); private string _details = "LanMountain Desktop is already running."; public MultiInstancePromptWindow() { AvaloniaXamlLoader.Load(this); Loaded += OnLoaded; Closed += (_, _) => _completionSource.TrySetResult(MultiInstancePromptResult.Close); } public Task WaitForChoiceAsync() => _completionSource.Task; public void SetDetails(int processId, string shellState) { _details = $"Existing host PID: {processId}\nShell state: {shellState}\nNo second Host process was created."; if (this.FindControl("DetailsText") is { } detailsText) { detailsText.Text = _details; } } private void OnLoaded(object? sender, RoutedEventArgs e) { if (this.FindControl