diff --git a/MareSynchronos/FileCache/TransientResourceManager.cs b/MareSynchronos/FileCache/TransientResourceManager.cs index 577e6fd..940da1b 100644 --- a/MareSynchronos/FileCache/TransientResourceManager.cs +++ b/MareSynchronos/FileCache/TransientResourceManager.cs @@ -92,8 +92,7 @@ public sealed class TransientResourceManager : DisposableMediatorSubscriberBase int removedPaths = 0; foreach (var replacement in fileReplacement.Where(p => !p.HasFileReplacement).SelectMany(p => p.GamePaths).ToList()) { - removedPaths++; - PlayerConfig.RemovePath(replacement); + removedPaths += PlayerConfig.RemovePath(replacement, objectKind); value.Remove(replacement); } @@ -172,7 +171,7 @@ public sealed class TransientResourceManager : DisposableMediatorSubscriberBase resources.RemoveWhere(f => string.Equals(path, f, StringComparison.Ordinal)); if (objectKind == ObjectKind.Player) { - PlayerConfig.RemovePath(path); + PlayerConfig.RemovePath(path, objectKind); Logger.LogTrace("Saving transient.json from {method}", nameof(RemoveTransientResource)); _configurationService.Save(); } @@ -219,7 +218,7 @@ public sealed class TransientResourceManager : DisposableMediatorSubscriberBase foreach (var file in semiset.Where(p => list.Contains(p, StringComparer.OrdinalIgnoreCase))) { Logger.LogTrace("Removing From SemiTransient: {file}", file); - PlayerConfig.RemovePath(file); + PlayerConfig.RemovePath(file, objectKind); } int removed = semiset.RemoveWhere(p => list.Contains(p, StringComparer.OrdinalIgnoreCase)); diff --git a/MareSynchronos/MareConfiguration/Configurations/TransientConfig.cs b/MareSynchronos/MareConfiguration/Configurations/TransientConfig.cs index 32a4f7a..2222c99 100644 --- a/MareSynchronos/MareConfiguration/Configurations/TransientConfig.cs +++ b/MareSynchronos/MareConfiguration/Configurations/TransientConfig.cs @@ -1,4 +1,6 @@ -namespace MareSynchronos.MareConfiguration.Configurations; +using MareSynchronos.API.Data.Enum; + +namespace MareSynchronos.MareConfiguration.Configurations; public class TransientConfig : IMareConfiguration { @@ -35,13 +37,25 @@ public class TransientConfig : IMareConfiguration return false; } - public void RemovePath(string gamePath) + public int RemovePath(string gamePath, ObjectKind objectKind) { - GlobalPersistentCache.Remove(gamePath); - foreach (var kvp in JobSpecificCache) + int removedEntries = 0; + if (objectKind == ObjectKind.Player) { - kvp.Value.Remove(gamePath); + if (GlobalPersistentCache.Remove(gamePath)) removedEntries++; + foreach (var kvp in JobSpecificCache) + { + if (kvp.Value.Remove(gamePath)) removedEntries++; + } } + if (objectKind == ObjectKind.Pet) + { + foreach (var kvp in JobSpecificPetCache) + { + if (kvp.Value.Remove(gamePath)) removedEntries++; + } + } + return removedEntries; } public void AddOrElevate(uint jobId, string gamePath)