From a9641505b63a19248d68a6c1b118fece029fe582 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 30 Apr 2025 19:21:59 +0800 Subject: [PATCH 1/4] Fix clean cache issue --- .../ViewModels/SettingsPaneAboutViewModel.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs index 231d14d5551..3889b9b00c8 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs @@ -186,6 +186,7 @@ private bool ClearLogFolder() { try { + // Make sure directory clean dir.Delete(true); } catch (Exception e) @@ -214,6 +215,7 @@ private bool ClearCacheFolder() { var success = true; var cacheDirectory = GetCacheDir(); + var pluginCacheDirectory = GetPluginCacheDir(); var cacheFiles = GetCacheFiles(); cacheFiles.ForEach(f => @@ -229,12 +231,31 @@ private bool ClearCacheFolder() } }); + // Firstly, delete plugin cache directories + pluginCacheDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly) + .ToList() + .ForEach(dir => + { + try + { + // Plugin may create directories in its cache directory + dir.Delete(true); + } + catch (Exception e) + { + App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e); + success = false; + } + }); + + // Then, delete plugin directory cacheDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly) .ToList() .ForEach(dir => { try { + // Make sure directory clean dir.Delete(true); } catch (Exception e) @@ -254,6 +275,11 @@ private static DirectoryInfo GetCacheDir() return new DirectoryInfo(DataLocation.CacheDirectory); } + private static DirectoryInfo GetPluginCacheDir() + { + return new DirectoryInfo(DataLocation.PluginCacheDirectory); + } + private static List GetCacheFiles() { return GetCacheDir().EnumerateFiles("*", SearchOption.AllDirectories).ToList(); From c9e85a1888f0936342ea74121c7e070ff7322777 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 30 Apr 2025 19:35:35 +0800 Subject: [PATCH 2/4] Use recursive false --- .../ViewModels/SettingsPaneAboutViewModel.cs | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs index 3889b9b00c8..652fc1ce5a2 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs @@ -186,8 +186,8 @@ private bool ClearLogFolder() { try { - // Make sure directory clean - dir.Delete(true); + // Log folders are the last level of folders + dir.Delete(false); } catch (Exception e) { @@ -249,21 +249,16 @@ private bool ClearCacheFolder() }); // Then, delete plugin directory - cacheDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly) - .ToList() - .ForEach(dir => - { - try - { - // Make sure directory clean - dir.Delete(true); - } - catch (Exception e) - { - App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e); - success = false; - } - }); + try + { + // Log folders are the last level of folders + GetPluginCacheDir().Delete(false); + } + catch (Exception e) + { + App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e); + success = false; + } OnPropertyChanged(nameof(CacheFolderSize)); From 7762c7929e5837d0c3606c4cb2f0e53e5105991f Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 30 Apr 2025 19:38:15 +0800 Subject: [PATCH 3/4] Explictly add recursive & Fix build --- .../SettingPages/ViewModels/SettingsPaneAboutViewModel.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs index 652fc1ce5a2..374dcb3ad52 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs @@ -187,7 +187,7 @@ private bool ClearLogFolder() try { // Log folders are the last level of folders - dir.Delete(false); + dir.Delete(recursive: false); } catch (Exception e) { @@ -239,7 +239,7 @@ private bool ClearCacheFolder() try { // Plugin may create directories in its cache directory - dir.Delete(true); + dir.Delete(recursive: true); } catch (Exception e) { @@ -249,10 +249,11 @@ private bool ClearCacheFolder() }); // Then, delete plugin directory + var dir = GetPluginCacheDir(); try { // Log folders are the last level of folders - GetPluginCacheDir().Delete(false); + dir.Delete(recursive: false); } catch (Exception e) { From 541e1981a93a727ad81b55c2a26954f2f6c0f847 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 30 Apr 2025 19:40:23 +0800 Subject: [PATCH 4/4] Fix code comments --- .../SettingPages/ViewModels/SettingsPaneAboutViewModel.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs index 374dcb3ad52..00f40b00957 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs @@ -252,7 +252,6 @@ private bool ClearCacheFolder() var dir = GetPluginCacheDir(); try { - // Log folders are the last level of folders dir.Delete(recursive: false); } catch (Exception e)