From b240564cf7ac3432715dd54c280d73f9f985c4fc Mon Sep 17 00:00:00 2001 From: real-zony Date: Thu, 25 May 2023 09:05:39 +0800 Subject: [PATCH] perf: Optimized the startup time of the tool. --- .../Updater/DefaultUpdater.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/ZonyLrcTools.Common/Updater/DefaultUpdater.cs b/src/ZonyLrcTools.Common/Updater/DefaultUpdater.cs index af1ee7f..ef5f174 100644 --- a/src/ZonyLrcTools.Common/Updater/DefaultUpdater.cs +++ b/src/ZonyLrcTools.Common/Updater/DefaultUpdater.cs @@ -23,6 +23,11 @@ public class DefaultUpdater : IUpdater, ISingletonDependency public async Task CheckUpdateAsync() { + if (!IsCheckUpdate()) + { + return; + } + var response = await _warpHttpClient.GetAsync(UpdateUrl); if (response == null) { @@ -56,4 +61,27 @@ public class DefaultUpdater : IUpdater, ISingletonDependency } } } + + private bool IsCheckUpdate() + { + var lockFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "update.lock"); + + if (!File.Exists(lockFile)) + { + File.WriteAllText(lockFile, DateTimeOffset.Now.ToUnixTimeSeconds().ToString()); + return true; + } + + if (long.TryParse(File.ReadAllText(lockFile), out var time)) + { + var now = DateTimeOffset.Now.ToUnixTimeSeconds(); + if (now - time <= 86400 /* 1 Day */) + { + return false; + } + } + + File.WriteAllText(lockFile, DateTimeOffset.Now.ToUnixTimeSeconds().ToString()); + return true; + } } \ No newline at end of file