From 5e1ec2b3e953ba1f686922f564a3d47a2c66e6d4 Mon Sep 17 00:00:00 2001 From: Shengkai Lin Date: Sun, 1 Feb 2026 18:01:46 +0800 Subject: [PATCH] fix(avalonia): update PluginManager API calls for Release build - Replace PluginManager.AllPlugins with GetAllLoadedPlugins() - Replace PluginManager.NonGlobalPlugins with GetNonGlobalPlugins() - Fix InitializePluginsAsync to pass IResultUpdateRegister parameter - Fix QueryBuilder.Build to pass required 3 parameters - Implement IResultUpdateRegister interface on MainViewModel --- Flow.Launcher.Avalonia/App.axaml.cs | 4 ++-- Flow.Launcher.Avalonia/ViewModel/MainViewModel.cs | 15 +++++++++++++-- .../SettingPages/PluginsSettingsViewModel.cs | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Flow.Launcher.Avalonia/App.axaml.cs b/Flow.Launcher.Avalonia/App.axaml.cs index 4afb52982..d116a8a57 100644 --- a/Flow.Launcher.Avalonia/App.axaml.cs +++ b/Flow.Launcher.Avalonia/App.axaml.cs @@ -128,9 +128,9 @@ public partial class App : Application { Log.Info(ClassName, "Loading plugins..."); PluginManager.LoadPlugins(_settings!.PluginSettings); - Log.Info(ClassName, $"Loaded {PluginManager.AllPlugins.Count} plugins"); + Log.Info(ClassName, $"Loaded {PluginManager.GetAllLoadedPlugins().Count} plugins"); - await PluginManager.InitializePluginsAsync(); + await PluginManager.InitializePluginsAsync(_mainVM!); Log.Info(ClassName, "Plugins initialized"); // Update plugin translations after they are initialized diff --git a/Flow.Launcher.Avalonia/ViewModel/MainViewModel.cs b/Flow.Launcher.Avalonia/ViewModel/MainViewModel.cs index ac1cb02ae..15a7d9153 100644 --- a/Flow.Launcher.Avalonia/ViewModel/MainViewModel.cs +++ b/Flow.Launcher.Avalonia/ViewModel/MainViewModel.cs @@ -28,7 +28,7 @@ public enum ActiveView /// /// MainViewModel for Avalonia - minimal implementation for plugin queries. /// -public partial class MainViewModel : ObservableObject +public partial class MainViewModel : ObservableObject, IResultUpdateRegister { private static readonly string ClassName = nameof(MainViewModel); private readonly Settings _settings; @@ -190,6 +190,17 @@ public partial class MainViewModel : ObservableObject _ = QueryAsync(); } + /// + /// Register a plugin to receive results updated event. + /// Required by IResultUpdateRegister for plugin initialization. + /// + public void RegisterResultsUpdatedEvent(PluginPair pair) + { + // Avalonia uses a simplified result update model - plugins that implement + // IResultUpdated will have their events registered here when needed. + // For now, this is a stub as the basic query flow handles result updates. + } + public void RequestHide() => HideRequested?.Invoke(); /// @@ -277,7 +288,7 @@ public partial class MainViewModel : ObservableObject try { - var query = QueryBuilder.Build(queryText, PluginManager.NonGlobalPlugins); + var query = QueryBuilder.Build(QueryText, queryText, PluginManager.GetNonGlobalPlugins()); if (query == null) { Results.Clear(); diff --git a/Flow.Launcher.Avalonia/ViewModel/SettingPages/PluginsSettingsViewModel.cs b/Flow.Launcher.Avalonia/ViewModel/SettingPages/PluginsSettingsViewModel.cs index 5de3fd8cb..21afb6c20 100644 --- a/Flow.Launcher.Avalonia/ViewModel/SettingPages/PluginsSettingsViewModel.cs +++ b/Flow.Launcher.Avalonia/ViewModel/SettingPages/PluginsSettingsViewModel.cs @@ -64,7 +64,7 @@ public partial class PluginsSettingsViewModel : ObservableObject private void LoadPlugins() { - var allPlugins = PluginManager.AllPlugins; + var allPlugins = PluginManager.GetAllLoadedPlugins(); foreach (var plugin in allPlugins.OrderBy(p => p.Metadata.Disabled).ThenBy(p => p.Metadata.Name)) { Plugins.Add(new PluginItemViewModel(plugin, _settings));