mirror of
https://github.com/Caraxi/mare.client.git
synced 2025-12-12 20:57:22 +01:00
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:
parent
4959633242
commit
0ba07b9b67
5 changed files with 18 additions and 7 deletions
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue