mirror of
https://github.com/RedWizardsLab/EchoHub.git
synced 2026-09-04 00:26:07 +02:00
refactor: move search dialog handling to AppOrchestrator
This commit is contained in:
@@ -91,6 +91,7 @@ public sealed class AppOrchestrator : IDisposable
|
|||||||
_mainWindow.OnRollbackRequested += HandleRollbackRequested;
|
_mainWindow.OnRollbackRequested += HandleRollbackRequested;
|
||||||
_mainWindow.OnUserProfileRequested += HandleViewProfile;
|
_mainWindow.OnUserProfileRequested += HandleViewProfile;
|
||||||
_mainWindow.OnChannelJoinRequested += HandleChannelJoinFromMessage;
|
_mainWindow.OnChannelJoinRequested += HandleChannelJoinFromMessage;
|
||||||
|
_mainWindow.OnSearchRequested += HandleSearchRequested;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Command Handler Wiring ─────────────────────────────────────────────
|
// ── Command Handler Wiring ─────────────────────────────────────────────
|
||||||
@@ -733,6 +734,38 @@ public sealed class AppOrchestrator : IDisposable
|
|||||||
HandleChannelSelected(channelName);
|
HandleChannelSelected(channelName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void HandleSearchRequested()
|
||||||
|
{
|
||||||
|
var result = SearchDialog.Show(_app, _mainWindow.GetChannelNames());
|
||||||
|
if (result is null) return;
|
||||||
|
|
||||||
|
switch (result.Type)
|
||||||
|
{
|
||||||
|
case SearchResultType.Channel:
|
||||||
|
_mainWindow.SwitchToChannel(result.Key);
|
||||||
|
HandleChannelSelected(result.Key);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SearchResultType.Action:
|
||||||
|
switch (result.Key)
|
||||||
|
{
|
||||||
|
case "connect": HandleConnect(); break;
|
||||||
|
case "disconnect": HandleDisconnect(); break;
|
||||||
|
case "logout": HandleLogout(); break;
|
||||||
|
case "profile": HandleProfileRequested(); break;
|
||||||
|
case "status": HandleStatusRequested(); break;
|
||||||
|
case "create-channel": HandleCreateChannelRequested(); break;
|
||||||
|
case "delete-channel": HandleDeleteChannelRequested(); break;
|
||||||
|
case "servers": HandleSavedServersRequested(); break;
|
||||||
|
case "toggle-users": _mainWindow.ToggleUsersPanel(); break;
|
||||||
|
case "updates": HandleCheckForUpdatesRequested(); break;
|
||||||
|
case "quit": _app.RequestStop(); break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void HandleProfileRequested()
|
private void HandleProfileRequested()
|
||||||
{
|
{
|
||||||
HandleViewProfile(null);
|
HandleViewProfile(null);
|
||||||
|
|||||||
@@ -152,6 +152,11 @@ public sealed partial class MainWindow : Runnable
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public event Action<string>? OnChannelJoinRequested;
|
public event Action<string>? OnChannelJoinRequested;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fired when the user requests to open the search dialog (via menu or Ctrl+K).
|
||||||
|
/// </summary>
|
||||||
|
public event Action? OnSearchRequested;
|
||||||
|
|
||||||
public MainWindow(IApplication app, ChatMessageManager messageManager)
|
public MainWindow(IApplication app, ChatMessageManager messageManager)
|
||||||
{
|
{
|
||||||
_app = app;
|
_app = app;
|
||||||
@@ -613,6 +618,11 @@ public sealed partial class MainWindow : Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ShowSearchDialog()
|
||||||
|
{
|
||||||
|
OnSearchRequested?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnMessagesChanged(string channelName)
|
private void OnMessagesChanged(string channelName)
|
||||||
{
|
{
|
||||||
if (channelName == _messageManager.CurrentChannel)
|
if (channelName == _messageManager.CurrentChannel)
|
||||||
@@ -910,40 +920,6 @@ public sealed partial class MainWindow : Runnable
|
|||||||
SetNeedsDraw();
|
SetNeedsDraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Open the command-palette search dialog (Ctrl+K) and dispatch the selected result.
|
|
||||||
/// </summary>
|
|
||||||
private void ShowSearchDialog()
|
|
||||||
{
|
|
||||||
var result = Dialogs.SearchDialog.Show(_app, _channelNames.AsReadOnly());
|
|
||||||
if (result is null) return;
|
|
||||||
|
|
||||||
switch (result.Type)
|
|
||||||
{
|
|
||||||
case Dialogs.SearchResultType.Channel:
|
|
||||||
SwitchToChannel(result.Key);
|
|
||||||
OnChannelSelected?.Invoke(result.Key);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Dialogs.SearchResultType.Action:
|
|
||||||
switch (result.Key)
|
|
||||||
{
|
|
||||||
case "connect": OnConnectRequested?.Invoke(); break;
|
|
||||||
case "disconnect": OnDisconnectRequested?.Invoke(); break;
|
|
||||||
case "logout": OnLogoutRequested?.Invoke(); break;
|
|
||||||
case "profile": OnProfileRequested?.Invoke(); break;
|
|
||||||
case "status": OnStatusRequested?.Invoke(); break;
|
|
||||||
case "create-channel": OnCreateChannelRequested?.Invoke(); break;
|
|
||||||
case "delete-channel": OnDeleteChannelRequested?.Invoke(); break;
|
|
||||||
case "servers": OnSavedServersRequested?.Invoke(); break;
|
|
||||||
case "toggle-users": ToggleUsersPanel(); break;
|
|
||||||
case "updates": OnCheckForUpdatesRequested?.Invoke(); break;
|
|
||||||
case "quit": _app.RequestStop(); break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Toggle the online users panel visibility (F2).
|
/// Toggle the online users panel visibility (F2).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user