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 readonly HashSet<string> _syncshellCids = [];
|
||||||
private volatile bool _pendingLocalBroadcast;
|
private volatile bool _pendingLocalBroadcast;
|
||||||
private TimeSpan? _pendingLocalTtl;
|
private TimeSpan? _pendingLocalTtl;
|
||||||
|
private string? _pendingLocalGid;
|
||||||
|
|
||||||
private static readonly TimeSpan _maxAllowedTtl = TimeSpan.FromMinutes(4);
|
private static readonly TimeSpan _maxAllowedTtl = TimeSpan.FromMinutes(4);
|
||||||
private static readonly TimeSpan _retryDelay = TimeSpan.FromMinutes(1);
|
private static readonly TimeSpan _retryDelay = TimeSpan.FromMinutes(1);
|
||||||
@@ -175,6 +176,7 @@ public class LightFinderScannerService : DisposableMediatorSubscriberBase
|
|||||||
|
|
||||||
_pendingLocalBroadcast = true;
|
_pendingLocalBroadcast = true;
|
||||||
_pendingLocalTtl = msg.Ttl;
|
_pendingLocalTtl = msg.Ttl;
|
||||||
|
_pendingLocalGid = msg.Gid;
|
||||||
TryPrimeLocalBroadcastCache();
|
TryPrimeLocalBroadcastCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,11 +192,12 @@ public class LightFinderScannerService : DisposableMediatorSubscriberBase
|
|||||||
var expiry = DateTime.UtcNow + ttl;
|
var expiry = DateTime.UtcNow + ttl;
|
||||||
|
|
||||||
_broadcastCache.AddOrUpdate(localCid,
|
_broadcastCache.AddOrUpdate(localCid,
|
||||||
new BroadcastEntry(true, expiry, null),
|
new BroadcastEntry(true, expiry, _pendingLocalGid),
|
||||||
(_, old) => new BroadcastEntry(true, expiry, old.GID));
|
(_, old) => new BroadcastEntry(true, expiry, _pendingLocalGid ?? old.GID));
|
||||||
|
|
||||||
_pendingLocalBroadcast = false;
|
_pendingLocalBroadcast = false;
|
||||||
_pendingLocalTtl = null;
|
_pendingLocalTtl = null;
|
||||||
|
_pendingLocalGid = null;
|
||||||
|
|
||||||
var now = DateTime.UtcNow;
|
var now = DateTime.UtcNow;
|
||||||
var activeCids = _broadcastCache
|
var activeCids = _broadcastCache
|
||||||
@@ -204,6 +207,7 @@ public class LightFinderScannerService : DisposableMediatorSubscriberBase
|
|||||||
|
|
||||||
_lightFinderPlateHandler.UpdateBroadcastingCids(activeCids);
|
_lightFinderPlateHandler.UpdateBroadcastingCids(activeCids);
|
||||||
_lightFinderNativePlateHandler.UpdateBroadcastingCids(activeCids);
|
_lightFinderNativePlateHandler.UpdateBroadcastingCids(activeCids);
|
||||||
|
UpdateSyncshellBroadcasts();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateSyncshellBroadcasts()
|
private void UpdateSyncshellBroadcasts()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using Dalamud.Interface;
|
using Dalamud.Interface;
|
||||||
using LightlessSync.API.Dto.Group;
|
using LightlessSync.API.Dto.Group;
|
||||||
using LightlessSync.API.Dto.User;
|
using LightlessSync.API.Dto.User;
|
||||||
using LightlessSync.LightlessConfiguration;
|
using LightlessSync.LightlessConfiguration;
|
||||||
@@ -121,7 +121,10 @@ public class LightFinderService : IHostedService, IMediatorSubscriber
|
|||||||
_waitingForTtlFetch = false;
|
_waitingForTtlFetch = false;
|
||||||
|
|
||||||
if (!wasEnabled || previousRemaining != validTtl)
|
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);
|
_logger.LogInformation("Lightfinder broadcast enabled ({Context}), TTL: {TTL}", context, validTtl);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ public record GPoseLobbyReceivePoseData(UserData UserData, PoseData PoseData) :
|
|||||||
public record GPoseLobbyReceiveWorldData(UserData UserData, WorldData WorldData) : MessageBase;
|
public record GPoseLobbyReceiveWorldData(UserData UserData, WorldData WorldData) : MessageBase;
|
||||||
public record OpenCharaDataHubWithFilterMessage(UserData UserData) : MessageBase;
|
public record OpenCharaDataHubWithFilterMessage(UserData UserData) : MessageBase;
|
||||||
public record EnableBroadcastMessage(string HashedCid, bool Enabled) : MessageBase;
|
public record EnableBroadcastMessage(string HashedCid, bool Enabled) : MessageBase;
|
||||||
public record BroadcastStatusChangedMessage(bool Enabled, TimeSpan? Ttl) : MessageBase;
|
public record BroadcastStatusChangedMessage(bool Enabled, TimeSpan? Ttl, string? Gid = null) : MessageBase;
|
||||||
public record UserLeftSyncshell(string gid) : MessageBase;
|
public record UserLeftSyncshell(string gid) : MessageBase;
|
||||||
public record UserJoinedSyncshell(string gid) : MessageBase;
|
public record UserJoinedSyncshell(string gid) : MessageBase;
|
||||||
public record SyncshellBroadcastsUpdatedMessage : MessageBase;
|
public record SyncshellBroadcastsUpdatedMessage : MessageBase;
|
||||||
|
|||||||
Reference in New Issue
Block a user