From 89453f441d6de762802ecb7e2eff729b2aae97b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Fri, 29 Jan 2021 11:37:26 +0800 Subject: [PATCH] Await Update when manifest is not ready --- .../Flow.Launcher.Plugin.PluginsManager/Main.cs | 2 +- .../PluginsManager.cs | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Main.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/Main.cs index 7836f1441..c9f9ca2a7 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Main.cs @@ -88,7 +88,7 @@ namespace Flow.Launcher.Plugin.PluginsManager { var s when s.StartsWith(Settings.HotKeyInstall) => await pluginManager.RequestInstallOrUpdate(s, token), var s when s.StartsWith(Settings.HotkeyUninstall) => pluginManager.RequestUninstall(s), - var s when s.StartsWith(Settings.HotkeyUpdate) => pluginManager.RequestUpdate(s), + var s when s.StartsWith(Settings.HotkeyUpdate) => await pluginManager.RequestUpdate(s, token), _ => pluginManager.GetDefaultHotKeys().Where(hotkey => { hotkey.Score = StringMatcher.FuzzySearch(search, hotkey.Title).Score; diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs index e25d97b36..eb0caec3f 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs @@ -149,8 +149,19 @@ namespace Flow.Launcher.Plugin.PluginsManager Context.API.RestartApp(); } - internal List RequestUpdate(string search) + internal async ValueTask> RequestUpdate(string search, CancellationToken token) { + if (!pluginsManifest.UserPlugins.Any() && + _downloadManifestTask.Status != TaskStatus.Running) + { + _downloadManifestTask = pluginsManifest.DownloadManifest(); + } + + await _downloadManifestTask; + + token.ThrowIfCancellationRequested(); + + var autocompletedResults = AutoCompleteReturnAllResults(search, Settings.HotkeyUpdate, "Update", @@ -286,8 +297,7 @@ namespace Flow.Launcher.Plugin.PluginsManager await _downloadManifestTask; - if (token.IsCancellationRequested) - return null; + token.ThrowIfCancellationRequested(); var searchNameWithoutKeyword = searchName.Replace(Settings.HotKeyInstall, string.Empty).Trim();