potentially fix pet transient file removal

This commit is contained in:
Stanley Dimant
2025-03-06 17:08:23 +01:00
committed by Loporrit
parent f033b1aa74
commit d5f22da734
2 changed files with 22 additions and 9 deletions

View File

@@ -92,8 +92,7 @@ public sealed class TransientResourceManager : DisposableMediatorSubscriberBase
int removedPaths = 0; int removedPaths = 0;
foreach (var replacement in fileReplacement.Where(p => !p.HasFileReplacement).SelectMany(p => p.GamePaths).ToList()) foreach (var replacement in fileReplacement.Where(p => !p.HasFileReplacement).SelectMany(p => p.GamePaths).ToList())
{ {
removedPaths++; removedPaths += PlayerConfig.RemovePath(replacement, objectKind);
PlayerConfig.RemovePath(replacement);
value.Remove(replacement); value.Remove(replacement);
} }
@@ -172,7 +171,7 @@ public sealed class TransientResourceManager : DisposableMediatorSubscriberBase
resources.RemoveWhere(f => string.Equals(path, f, StringComparison.Ordinal)); resources.RemoveWhere(f => string.Equals(path, f, StringComparison.Ordinal));
if (objectKind == ObjectKind.Player) if (objectKind == ObjectKind.Player)
{ {
PlayerConfig.RemovePath(path); PlayerConfig.RemovePath(path, objectKind);
Logger.LogTrace("Saving transient.json from {method}", nameof(RemoveTransientResource)); Logger.LogTrace("Saving transient.json from {method}", nameof(RemoveTransientResource));
_configurationService.Save(); _configurationService.Save();
} }
@@ -219,7 +218,7 @@ public sealed class TransientResourceManager : DisposableMediatorSubscriberBase
foreach (var file in semiset.Where(p => list.Contains(p, StringComparer.OrdinalIgnoreCase))) foreach (var file in semiset.Where(p => list.Contains(p, StringComparer.OrdinalIgnoreCase)))
{ {
Logger.LogTrace("Removing From SemiTransient: {file}", file); Logger.LogTrace("Removing From SemiTransient: {file}", file);
PlayerConfig.RemovePath(file); PlayerConfig.RemovePath(file, objectKind);
} }
int removed = semiset.RemoveWhere(p => list.Contains(p, StringComparer.OrdinalIgnoreCase)); int removed = semiset.RemoveWhere(p => list.Contains(p, StringComparer.OrdinalIgnoreCase));

View File

@@ -1,4 +1,6 @@
namespace MareSynchronos.MareConfiguration.Configurations; using MareSynchronos.API.Data.Enum;
namespace MareSynchronos.MareConfiguration.Configurations;
public class TransientConfig : IMareConfiguration public class TransientConfig : IMareConfiguration
{ {
@@ -35,13 +37,25 @@ public class TransientConfig : IMareConfiguration
return false; return false;
} }
public void RemovePath(string gamePath) public int RemovePath(string gamePath, ObjectKind objectKind)
{ {
GlobalPersistentCache.Remove(gamePath); int removedEntries = 0;
foreach (var kvp in JobSpecificCache) 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) public void AddOrElevate(uint jobId, string gamePath)