From 998c1b2b36899e634a8306ee73978788a5d2f4a9 Mon Sep 17 00:00:00 2001 From: Loporrit <141286461+loporrit@users.noreply.github.com> Date: Mon, 24 Feb 2025 04:26:25 +0000 Subject: [PATCH] Fix cache directory selection --- MareSynchronos/UI/UISharedService.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/MareSynchronos/UI/UISharedService.cs b/MareSynchronos/UI/UISharedService.cs index 9de4136..f96d773 100644 --- a/MareSynchronos/UI/UISharedService.cs +++ b/MareSynchronos/UI/UISharedService.cs @@ -511,8 +511,22 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase _isOneDrive = path.Contains("onedrive", StringComparison.OrdinalIgnoreCase); _isPenumbraDirectory = string.Equals(path.ToLowerInvariant(), _ipcManager.Penumbra.ModDirectory?.ToLowerInvariant(), StringComparison.Ordinal); _isDirectoryWritable = IsDirectoryWritable(path); - _cacheDirectoryHasOtherFilesThanCache = Directory.GetFiles(path, "*", SearchOption.AllDirectories).Any(f => Path.GetFileNameWithoutExtension(f).Length != 40) - || Directory.GetDirectories(path).Any(); + _cacheDirectoryHasOtherFilesThanCache = false; + var cacheDirFiles = Directory.GetFiles(path, "*", SearchOption.AllDirectories); + var cacheSubDirs = Directory.GetDirectories(path); + + _cacheDirectoryHasOtherFilesThanCache = cacheDirFiles.Any(f => + Path.GetFileNameWithoutExtension(f).Length != 40 + && !Path.GetExtension(f).Equals("tmp", StringComparison.OrdinalIgnoreCase) + && !Path.GetExtension(f).Equals("blk", StringComparison.OrdinalIgnoreCase) + ); + + if (!_cacheDirectoryHasOtherFilesThanCache + && cacheSubDirs.Select(f => Path.GetFileName(Path.TrimEndingDirectorySeparator(f))).Any(f => + !f.Equals("subst", StringComparison.OrdinalIgnoreCase) + )) + _cacheDirectoryHasOtherFilesThanCache = true; + _cacheDirectoryIsValidPath = PathRegex().IsMatch(path); if (!string.IsNullOrEmpty(path)