From 5a0358718cd9b76b71da0c885c853f39e7e09b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Mon, 28 Dec 2020 23:06:47 +0800 Subject: [PATCH] Update PluginManifest if last update time is 12 hours ago --- .../Flow.Launcher.Plugin.PluginsManager/Main.cs | 16 +++++++++++++++- .../Models/PluginsManifest.cs | 10 +++------- .../PluginsManager.cs | 8 +++++++- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Main.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/Main.cs index 6cf9e1608..9aa024fc8 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Main.cs @@ -6,6 +6,8 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Controls; using Flow.Launcher.Infrastructure; +using System; +using System.Threading.Tasks; namespace Flow.Launcher.Plugin.PluginsManager { @@ -21,6 +23,8 @@ namespace Flow.Launcher.Plugin.PluginsManager internal PluginsManager pluginManager; + internal DateTime _lastUpdateTime; + public Control CreateSettingPanel() { return new PluginsManagerSettings(viewModel); @@ -33,6 +37,7 @@ namespace Flow.Launcher.Plugin.PluginsManager Settings = viewModel.Settings; contextMenu = new ContextMenu(Context, Settings); pluginManager = new PluginsManager(Context, Settings); + _lastUpdateTime = DateTime.Now; } public List LoadContextMenus(Result selectedResult) @@ -43,10 +48,19 @@ namespace Flow.Launcher.Plugin.PluginsManager public List Query(Query query) { var search = query.Search.ToLower(); - + if (string.IsNullOrWhiteSpace(search)) return Settings.HotKeys; + if ((DateTime.Now - _lastUpdateTime).TotalSeconds > 43200) // 12 hours + { + Task.Run(async () => + { + await pluginManager.UpdateManifest(); + _lastUpdateTime = DateTime.Now; + }); + } + return search switch { var s when s.StartsWith(Settings.HotKeyInstall) => pluginManager.RequestInstallOrUpdate(s), diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Models/PluginsManifest.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/Models/PluginsManifest.cs index 290221710..1c31432b2 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Models/PluginsManifest.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Models/PluginsManifest.cs @@ -12,19 +12,15 @@ namespace Flow.Launcher.Plugin.PluginsManager.Models internal List UserPlugins { get; private set; } internal PluginsManifest() { - DownloadManifest(); + Task.Run(() => DownloadManifest()).Wait(); } - private void DownloadManifest() + internal async Task DownloadManifest() { var json = string.Empty; try { - var t = Task.Run( - async () => - json = await Http.Get("https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher.PluginsManifest/main/plugins.json")); - - t.Wait(); + json = await Http.Get("https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher.PluginsManifest/main/plugins.json"); UserPlugins = JsonConvert.DeserializeObject>(json); } diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs index bd998514a..c6f127387 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/PluginsManager.cs @@ -7,13 +7,14 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using System.Windows; namespace Flow.Launcher.Plugin.PluginsManager { internal class PluginsManager { - private readonly PluginsManifest pluginsManifest; + private PluginsManifest pluginsManifest; private PluginInitContext Context { get; set; } @@ -44,6 +45,11 @@ namespace Flow.Launcher.Plugin.PluginsManager Settings = settings; } + internal async Task UpdateManifest() + { + await pluginsManifest.DownloadManifest(); + } + internal void InstallOrUpdate(UserPlugin plugin) { if (PluginExists(plugin.ID))