diff --git a/MareSynchronos/Factories/CharacterDataFactory.cs b/MareSynchronos/Factories/CharacterDataFactory.cs index be0794b..94d2943 100644 --- a/MareSynchronos/Factories/CharacterDataFactory.cs +++ b/MareSynchronos/Factories/CharacterDataFactory.cs @@ -29,14 +29,24 @@ public class CharacterDataFactory _ipcManager = ipcManager; } - public CharacterData BuildCharacterData() + public CharacterData? BuildCharacterData() { if (!_ipcManager.Initialized) { throw new ArgumentException("Penumbra is not connected"); } - return CreateCharacterData(); + try + { + return CreateCharacterData(); + } + catch (Exception e) + { + Logger.Warn("Failed to create character data"); + Logger.Warn(e.Message); + Logger.Warn(e.StackTrace ?? string.Empty); + return null; + } } private (string, string) GetIndentationForInheritanceLevel(int inheritanceLevel) diff --git a/MareSynchronos/Managers/FileCacheManager.cs b/MareSynchronos/Managers/FileCacheManager.cs index cd6f943..3e20fe5 100644 --- a/MareSynchronos/Managers/FileCacheManager.cs +++ b/MareSynchronos/Managers/FileCacheManager.cs @@ -211,7 +211,7 @@ namespace MareSynchronos.Managers var fileCache = Create(item, _rescanTaskCancellationTokenSource.Token); if (fileCache != null) { - db.RemoveRange(db.FileCaches.Where(f => f.Hash == fileCache.Hash)); + db.RemoveRange(db.FileCaches.Where(f => f.Filepath.ToLower() == fileCache.Filepath.ToLower())); await db.AddAsync(fileCache, _rescanTaskCancellationTokenSource.Token); } } diff --git a/MareSynchronos/Managers/PlayerManager.cs b/MareSynchronos/Managers/PlayerManager.cs index 351c794..65577a8 100644 --- a/MareSynchronos/Managers/PlayerManager.cs +++ b/MareSynchronos/Managers/PlayerManager.cs @@ -96,6 +96,7 @@ namespace MareSynchronos.Managers private async Task CreateFullCharacterCache(CancellationToken token) { var cache = _characterDataFactory.BuildCharacterData(); + if (cache == null) return null; CharacterCacheDto? cacheDto = null; await Task.Run(async () => @@ -165,9 +166,9 @@ namespace MareSynchronos.Managers _dalamudUtil.WaitWhileSelfIsDrawing(token); - var characterCache = (await CreateFullCharacterCache(token))!; + var characterCache = (await CreateFullCharacterCache(token)); - if (token.IsCancellationRequested) return; + if (characterCache == null || token.IsCancellationRequested) return; if (characterCache.Hash == (LastSentCharacterData?.Hash ?? "-")) { diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index 4ceb396..db383e8 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.1.9.0 + 0.1.10.0 https://github.com/Penumbra-Sync/client diff --git a/MareSynchronos/WebAPI/ApiController.Connectivity.cs b/MareSynchronos/WebAPI/ApiController.Connectivity.cs index 9f55e27..25cf268 100644 --- a/MareSynchronos/WebAPI/ApiController.Connectivity.cs +++ b/MareSynchronos/WebAPI/ApiController.Connectivity.cs @@ -292,7 +292,7 @@ namespace MareSynchronos.WebAPI { Logger.Debug("Connection restored"); await Task.Delay(TimeSpan.FromSeconds(new Random().Next(5, 10))); - _connectionDto = _connectionHub!.InvokeAsync(ConnectionHubAPI.InvokeHeartbeat, _dalamudUtil.PlayerNameHashed).Result; + _connectionDto = await _connectionHub!.InvokeAsync(ConnectionHubAPI.InvokeHeartbeat, _dalamudUtil.PlayerNameHashed); Connected?.Invoke(); }