own syncshell sometimes not showing in list bug
This commit is contained in:
@@ -23,6 +23,7 @@ public class LightFinderScannerService : DisposableMediatorSubscriberBase
|
||||
private readonly HashSet<string> _syncshellCids = [];
|
||||
private volatile bool _pendingLocalBroadcast;
|
||||
private TimeSpan? _pendingLocalTtl;
|
||||
private string? _pendingLocalGid;
|
||||
|
||||
private static readonly TimeSpan _maxAllowedTtl = TimeSpan.FromMinutes(4);
|
||||
private static readonly TimeSpan _retryDelay = TimeSpan.FromMinutes(1);
|
||||
@@ -175,6 +176,7 @@ public class LightFinderScannerService : DisposableMediatorSubscriberBase
|
||||
|
||||
_pendingLocalBroadcast = true;
|
||||
_pendingLocalTtl = msg.Ttl;
|
||||
_pendingLocalGid = msg.Gid;
|
||||
TryPrimeLocalBroadcastCache();
|
||||
}
|
||||
|
||||
@@ -190,11 +192,12 @@ public class LightFinderScannerService : DisposableMediatorSubscriberBase
|
||||
var expiry = DateTime.UtcNow + ttl;
|
||||
|
||||
_broadcastCache.AddOrUpdate(localCid,
|
||||
new BroadcastEntry(true, expiry, null),
|
||||
(_, old) => new BroadcastEntry(true, expiry, old.GID));
|
||||
new BroadcastEntry(true, expiry, _pendingLocalGid),
|
||||
(_, old) => new BroadcastEntry(true, expiry, _pendingLocalGid ?? old.GID));
|
||||
|
||||
_pendingLocalBroadcast = false;
|
||||
_pendingLocalTtl = null;
|
||||
_pendingLocalGid = null;
|
||||
|
||||
var now = DateTime.UtcNow;
|
||||
var activeCids = _broadcastCache
|
||||
@@ -204,6 +207,7 @@ public class LightFinderScannerService : DisposableMediatorSubscriberBase
|
||||
|
||||
_lightFinderPlateHandler.UpdateBroadcastingCids(activeCids);
|
||||
_lightFinderNativePlateHandler.UpdateBroadcastingCids(activeCids);
|
||||
UpdateSyncshellBroadcasts();
|
||||
}
|
||||
|
||||
private void UpdateSyncshellBroadcasts()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Interface;
|
||||
using LightlessSync.API.Dto.Group;
|
||||
using LightlessSync.API.Dto.User;
|
||||
using LightlessSync.LightlessConfiguration;
|
||||
@@ -121,7 +121,10 @@ public class LightFinderService : IHostedService, IMediatorSubscriber
|
||||
_waitingForTtlFetch = false;
|
||||
|
||||
if (!wasEnabled || previousRemaining != validTtl)
|
||||
_mediator.Publish(new BroadcastStatusChangedMessage(true, validTtl));
|
||||
{
|
||||
var gid = _config.Current.SyncshellFinderEnabled ? _config.Current.SelectedFinderSyncshell : null;
|
||||
_mediator.Publish(new BroadcastStatusChangedMessage(true, validTtl, gid));
|
||||
}
|
||||
|
||||
_logger.LogInformation("Lightfinder broadcast enabled ({Context}), TTL: {TTL}", context, validTtl);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user