Skip to content

Commit 35a5e27

Browse files
committed
Fix DirectoryNotFoundException when deleting cache twice
1 parent 820304c commit 35a5e27

File tree

1 file changed

+32
-27
lines changed

1 file changed

+32
-27
lines changed

Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -231,36 +231,41 @@ private bool ClearCacheFolder()
231231
}
232232
});
233233

234-
// Firstly, delete plugin cache directories
235-
pluginCacheDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly)
236-
.ToList()
237-
.ForEach(dir =>
238-
{
239-
try
240-
{
241-
// Plugin may create directories in its cache directory
242-
dir.Delete(recursive: true);
243-
}
244-
catch (Exception e)
234+
// Check if plugin cache directory exists before attempting to delete
235+
// Or it will throw DirectoryNotFoundException in `pluginCacheDirectory.EnumerateDirectories`
236+
if (pluginCacheDirectory.Exists)
237+
{
238+
// Firstly, delete plugin cache directories
239+
pluginCacheDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly)
240+
.ToList()
241+
.ForEach(dir =>
245242
{
246-
App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e);
247-
success = false;
248-
}
249-
});
243+
try
244+
{
245+
// Plugin may create directories in its cache directory
246+
dir.Delete(recursive: true);
247+
}
248+
catch (Exception e)
249+
{
250+
App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e);
251+
success = false;
252+
}
253+
});
254+
255+
// Then, delete plugin directory
256+
var dir = pluginCacheDirectory;
257+
try
258+
{
259+
dir.Delete(recursive: false);
260+
}
261+
catch (Exception e)
262+
{
263+
App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e);
264+
success = false;
265+
}
250266

251-
// Then, delete plugin directory
252-
var dir = GetPluginCacheDir();
253-
try
254-
{
255-
dir.Delete(recursive: false);
267+
OnPropertyChanged(nameof(CacheFolderSize));
256268
}
257-
catch (Exception e)
258-
{
259-
App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e);
260-
success = false;
261-
}
262-
263-
OnPropertyChanged(nameof(CacheFolderSize));
264269

265270
return success;
266271
}

0 commit comments

Comments
 (0)