add penumbra ipc for pathchanges, change all tolower to tolowerinvariant

This commit is contained in:
Stanley Dimant
2022-08-13 21:16:05 +02:00
parent deb76f42a4
commit 4226f2e16d
6 changed files with 21 additions and 13 deletions

View File

@@ -64,7 +64,7 @@ namespace MareSynchronos.Managers
var sha1Hash = Crypto.GetFileHash(fileInfo.FullName); var sha1Hash = Crypto.GetFileHash(fileInfo.FullName);
return new FileCache() return new FileCache()
{ {
Filepath = fileInfo.FullName.ToLower(), Filepath = fileInfo.FullName.ToLowerInvariant(),
Hash = sha1Hash, Hash = sha1Hash,
LastModifiedDate = fileInfo.LastWriteTimeUtc.Ticks.ToString(), LastModifiedDate = fileInfo.LastWriteTimeUtc.Ticks.ToString(),
}; };
@@ -203,7 +203,7 @@ namespace MareSynchronos.Managers
{ {
PluginLog.Verbose("Removed: " + item); PluginLog.Verbose("Removed: " + item);
db.RemoveRange(db.FileCaches.Where(f => f.Filepath.ToLower() == item.ToLower())); db.RemoveRange(db.FileCaches.Where(f => f.Filepath.ToLowerInvariant() == item.ToLowerInvariant()));
} }
else else
{ {
@@ -211,7 +211,7 @@ namespace MareSynchronos.Managers
var fileCache = Create(item, _rescanTaskCancellationTokenSource.Token); var fileCache = Create(item, _rescanTaskCancellationTokenSource.Token);
if (fileCache != null) if (fileCache != null)
{ {
db.RemoveRange(db.FileCaches.Where(f => f.Filepath.ToLower() == fileCache.Filepath.ToLower())); db.RemoveRange(db.FileCaches.Where(f => f.Filepath.ToLowerInvariant() == fileCache.Filepath.ToLowerInvariant()));
await db.AddAsync(fileCache, _rescanTaskCancellationTokenSource.Token); await db.AddAsync(fileCache, _rescanTaskCancellationTokenSource.Token);
} }
} }
@@ -316,7 +316,7 @@ namespace MareSynchronos.Managers
foreach (var deletion in fileCachesToDelete) foreach (var deletion in fileCachesToDelete)
{ {
var entries = db.FileCaches.Where(f => var entries = db.FileCaches.Where(f =>
f.Hash == deletion.Hash && f.Filepath.ToLower() == deletion.Filepath.ToLower()); f.Hash == deletion.Hash && f.Filepath.ToLowerInvariant() == deletion.Filepath.ToLowerInvariant());
if (await entries.AnyAsync(ct)) if (await entries.AnyAsync(ct))
{ {
Logger.Verbose("Removing file from DB: " + deletion.Filepath); Logger.Verbose("Removing file from DB: " + deletion.Filepath);

View File

@@ -31,6 +31,7 @@ namespace MareSynchronos.Managers
private readonly ICallGateSubscriber<string, string[]>? _reverseResolvePlayer; private readonly ICallGateSubscriber<string, string[]>? _reverseResolvePlayer;
private readonly ICallGateSubscriber<string, string, Dictionary<string, string>, string, int, int> private readonly ICallGateSubscriber<string, string, Dictionary<string, string>, string, int, int>
_penumbraSetTemporaryMod; _penumbraSetTemporaryMod;
private readonly ICallGateSubscriber<string, string, string> _penumbraPlayerPathResolved;
private readonly DalamudUtil _dalamudUtil; private readonly DalamudUtil _dalamudUtil;
public IpcManager(DalamudPluginInterface pi, DalamudUtil dalamudUtil) public IpcManager(DalamudPluginInterface pi, DalamudUtil dalamudUtil)
@@ -55,7 +56,9 @@ namespace MareSynchronos.Managers
_glamourerApplyOnlyCustomization = pi.GetIpcSubscriber<string, GameObject?, object>("Glamourer.ApplyOnlyCustomizationToCharacter"); _glamourerApplyOnlyCustomization = pi.GetIpcSubscriber<string, GameObject?, object>("Glamourer.ApplyOnlyCustomizationToCharacter");
_glamourerApplyOnlyEquipment = pi.GetIpcSubscriber<string, GameObject?, object>("Glamourer.ApplyOnlyEquipmentToCharacter"); _glamourerApplyOnlyEquipment = pi.GetIpcSubscriber<string, GameObject?, object>("Glamourer.ApplyOnlyEquipmentToCharacter");
_glamourerRevertCustomization = pi.GetIpcSubscriber<GameObject?, object>("Glamourer.RevertCharacter"); _glamourerRevertCustomization = pi.GetIpcSubscriber<GameObject?, object>("Glamourer.RevertCharacter");
_penumbraPlayerPathResolved = pi.GetIpcSubscriber<string, string, string>("Penumbra.PlayerFileResourceResolved");
_penumbraPlayerPathResolved.Subscribe(PlayerPathResolved);
_penumbraObjectIsRedrawn.Subscribe(RedrawEvent); _penumbraObjectIsRedrawn.Subscribe(RedrawEvent);
_penumbraInit.Subscribe(PenumbraInit); _penumbraInit.Subscribe(PenumbraInit);
_penumbraDispose.Subscribe(PenumbraDispose); _penumbraDispose.Subscribe(PenumbraDispose);
@@ -78,6 +81,11 @@ namespace MareSynchronos.Managers
this._dalamudUtil = dalamudUtil; this._dalamudUtil = dalamudUtil;
} }
private void PlayerPathResolved(string arg1, string arg2)
{
Logger.Debug($"Resolved {arg1} => {arg2}");
}
public event VoidDelegate? PenumbraInitialized; public event VoidDelegate? PenumbraInitialized;
public event VoidDelegate? PenumbraDisposed; public event VoidDelegate? PenumbraDisposed;
public event PenumbraRedrawEvent? PenumbraRedrawEvent; public event PenumbraRedrawEvent? PenumbraRedrawEvent;

View File

@@ -32,7 +32,7 @@ namespace MareSynchronos.Models
public void SetResolvedPath(string path) public void SetResolvedPath(string path)
{ {
ResolvedPath = path.ToLower().Replace('/', '\\').Replace(_penumbraDirectory, "").Replace('\\', '/'); ResolvedPath = path.ToLowerInvariant().Replace('/', '\\').Replace(_penumbraDirectory, "").Replace('\\', '/');
if (!HasFileReplacement) return; if (!HasFileReplacement) return;
_ = Task.Run(() => _ = Task.Run(() =>
@@ -40,7 +40,7 @@ namespace MareSynchronos.Models
FileCache? fileCache; FileCache? fileCache;
using (FileCacheContext db = new()) using (FileCacheContext db = new())
{ {
fileCache = db.FileCaches.FirstOrDefault(f => f.Filepath == path.ToLower()); fileCache = db.FileCaches.FirstOrDefault(f => f.Filepath == path.ToLowerInvariant());
} }
if (fileCache != null) if (fileCache != null)
@@ -54,7 +54,7 @@ namespace MareSynchronos.Models
{ {
Hash = ComputeHash(fi); Hash = ComputeHash(fi);
using var db = new FileCacheContext(); using var db = new FileCacheContext();
var newTempCache = db.FileCaches.Single(f => f.Filepath == path.ToLower()); var newTempCache = db.FileCaches.Single(f => f.Filepath == path.ToLowerInvariant());
newTempCache.Hash = Hash; newTempCache.Hash = Hash;
db.Update(newTempCache); db.Update(newTempCache);
db.SaveChanges(); db.SaveChanges();
@@ -88,7 +88,7 @@ namespace MareSynchronos.Models
string hash = Crypto.GetFileHash(fi.FullName); string hash = Crypto.GetFileHash(fi.FullName);
using FileCacheContext db = new(); using FileCacheContext db = new();
var fileAddedDuringCompute = db.FileCaches.FirstOrDefault(f => f.Filepath == fi.FullName.ToLower()); var fileAddedDuringCompute = db.FileCaches.FirstOrDefault(f => f.Filepath == fi.FullName.ToLowerInvariant());
if (fileAddedDuringCompute != null) return fileAddedDuringCompute.Hash; if (fileAddedDuringCompute != null) return fileAddedDuringCompute.Hash;
try try
@@ -96,7 +96,7 @@ namespace MareSynchronos.Models
db.Add(new FileCache() db.Add(new FileCache()
{ {
Hash = hash, Hash = hash,
Filepath = fi.FullName.ToLower(), Filepath = fi.FullName.ToLowerInvariant(),
LastModifiedDate = fi.LastWriteTimeUtc.Ticks.ToString() LastModifiedDate = fi.LastWriteTimeUtc.Ticks.ToString()
}); });
db.SaveChanges(); db.SaveChanges();

View File

@@ -273,8 +273,8 @@ namespace MareSynchronos.UI
{ {
if (_characterOrCommentFilter.IsNullOrEmpty()) return true; if (_characterOrCommentFilter.IsNullOrEmpty()) return true;
_configuration.GetCurrentServerUidComments().TryGetValue(p.OtherUID, out var comment); _configuration.GetCurrentServerUidComments().TryGetValue(p.OtherUID, out var comment);
return p.OtherUID.ToLower().Contains(_characterOrCommentFilter.ToLower()) || return p.OtherUID.ToLowerInvariant().Contains(_characterOrCommentFilter.ToLowerInvariant()) ||
(comment?.ToLower().Contains(_characterOrCommentFilter.ToLower()) ?? false); (comment?.ToLowerInvariant().Contains(_characterOrCommentFilter.ToLowerInvariant()) ?? false);
}); });
if (_configuration.ReverseUserSort) users = users.Reverse(); if (_configuration.ReverseUserSort) users = users.Reverse();

View File

@@ -424,7 +424,7 @@ namespace MareSynchronos.UI
{ {
if (!success) return; if (!success) return;
_isPenumbraDirectory = path.ToLower() == _ipcManager.PenumbraModDirectory()?.ToLower(); _isPenumbraDirectory = path.ToLowerInvariant() == _ipcManager.PenumbraModDirectory()?.ToLowerInvariant();
_isDirectoryWritable = IsDirectoryWritable(path); _isDirectoryWritable = IsDirectoryWritable(path);
_cacheDirectoryHasOtherFilesThanCache = Directory.GetFiles(path, "*", SearchOption.AllDirectories).Any(f => new FileInfo(f).Name.Length != 40); _cacheDirectoryHasOtherFilesThanCache = Directory.GetFiles(path, "*", SearchOption.AllDirectories).Any(f => new FileInfo(f).Name.Length != 40);
_cacheDirectoryIsValidPath = Regex.IsMatch(path, @"^(?:[a-zA-Z]:\\[\w\s\-\\]+?|\/(?:[\w\s\-\/])+?)$", RegexOptions.ECMAScript); _cacheDirectoryIsValidPath = Regex.IsMatch(path, @"^(?:[a-zA-Z]:\\[\w\s\-\\]+?|\/(?:[\w\s\-\/])+?)$", RegexOptions.ECMAScript);

View File

@@ -172,7 +172,7 @@ namespace MareSynchronos.WebAPI
{ {
CurrentUploads.Add(new UploadFileTransfer(file) CurrentUploads.Add(new UploadFileTransfer(file)
{ {
Total = new FileInfo(db.FileCaches.FirstOrDefault(f => f.Hash.ToLower() == file.Hash.ToLower()) Total = new FileInfo(db.FileCaches.FirstOrDefault(f => f.Hash.ToLowerInvariant() == file.Hash.ToLowerInvariant())
?.Filepath ?? string.Empty).Length ?.Filepath ?? string.Empty).Length
}); });
} }