fix connectivity issue on server loss, fix filecache not updating on changed files, fix crash on exception in character data factory
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,6 +96,7 @@ namespace MareSynchronos.Managers
|
||||
private async Task<CharacterCacheDto?> 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 ?? "-"))
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<Authors></Authors>
|
||||
<Company></Company>
|
||||
<Version>0.1.9.0</Version>
|
||||
<Version>0.1.10.0</Version>
|
||||
<Description></Description>
|
||||
<Copyright></Copyright>
|
||||
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
||||
|
||||
@@ -292,7 +292,7 @@ namespace MareSynchronos.WebAPI
|
||||
{
|
||||
Logger.Debug("Connection restored");
|
||||
await Task.Delay(TimeSpan.FromSeconds(new Random().Next(5, 10)));
|
||||
_connectionDto = _connectionHub!.InvokeAsync<ConnectionDto>(ConnectionHubAPI.InvokeHeartbeat, _dalamudUtil.PlayerNameHashed).Result;
|
||||
_connectionDto = await _connectionHub!.InvokeAsync<ConnectionDto>(ConnectionHubAPI.InvokeHeartbeat, _dalamudUtil.PlayerNameHashed);
|
||||
Connected?.Invoke();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user