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;
|
_ipcManager = ipcManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharacterData BuildCharacterData()
|
public CharacterData? BuildCharacterData()
|
||||||
{
|
{
|
||||||
if (!_ipcManager.Initialized)
|
if (!_ipcManager.Initialized)
|
||||||
{
|
{
|
||||||
throw new ArgumentException("Penumbra is not connected");
|
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)
|
private (string, string) GetIndentationForInheritanceLevel(int inheritanceLevel)
|
||||||
|
|||||||
@@ -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.Hash == fileCache.Hash));
|
db.RemoveRange(db.FileCaches.Where(f => f.Filepath.ToLower() == fileCache.Filepath.ToLower()));
|
||||||
await db.AddAsync(fileCache, _rescanTaskCancellationTokenSource.Token);
|
await db.AddAsync(fileCache, _rescanTaskCancellationTokenSource.Token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ namespace MareSynchronos.Managers
|
|||||||
private async Task<CharacterCacheDto?> CreateFullCharacterCache(CancellationToken token)
|
private async Task<CharacterCacheDto?> CreateFullCharacterCache(CancellationToken token)
|
||||||
{
|
{
|
||||||
var cache = _characterDataFactory.BuildCharacterData();
|
var cache = _characterDataFactory.BuildCharacterData();
|
||||||
|
if (cache == null) return null;
|
||||||
CharacterCacheDto? cacheDto = null;
|
CharacterCacheDto? cacheDto = null;
|
||||||
|
|
||||||
await Task.Run(async () =>
|
await Task.Run(async () =>
|
||||||
@@ -165,9 +166,9 @@ namespace MareSynchronos.Managers
|
|||||||
|
|
||||||
_dalamudUtil.WaitWhileSelfIsDrawing(token);
|
_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 ?? "-"))
|
if (characterCache.Hash == (LastSentCharacterData?.Hash ?? "-"))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Authors></Authors>
|
<Authors></Authors>
|
||||||
<Company></Company>
|
<Company></Company>
|
||||||
<Version>0.1.9.0</Version>
|
<Version>0.1.10.0</Version>
|
||||||
<Description></Description>
|
<Description></Description>
|
||||||
<Copyright></Copyright>
|
<Copyright></Copyright>
|
||||||
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ namespace MareSynchronos.WebAPI
|
|||||||
{
|
{
|
||||||
Logger.Debug("Connection restored");
|
Logger.Debug("Connection restored");
|
||||||
await Task.Delay(TimeSpan.FromSeconds(new Random().Next(5, 10)));
|
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();
|
Connected?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user