From f812b6d09e864c8d2244b846ce443b097a1c0bbf Mon Sep 17 00:00:00 2001 From: choco Date: Thu, 1 Jan 2026 22:32:34 +0100 Subject: [PATCH] own syncshell sometimes not showing in list bug --- .../Services/LightFinder/LightFinderScannerService.cs | 8 ++++++-- LightlessSync/Services/LightFinder/LightFinderService.cs | 7 +++++-- LightlessSync/Services/Mediator/Messages.cs | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/LightlessSync/Services/LightFinder/LightFinderScannerService.cs b/LightlessSync/Services/LightFinder/LightFinderScannerService.cs index 38417a2..16de3c4 100644 --- a/LightlessSync/Services/LightFinder/LightFinderScannerService.cs +++ b/LightlessSync/Services/LightFinder/LightFinderScannerService.cs @@ -23,6 +23,7 @@ public class LightFinderScannerService : DisposableMediatorSubscriberBase private readonly HashSet _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() diff --git a/LightlessSync/Services/LightFinder/LightFinderService.cs b/LightlessSync/Services/LightFinder/LightFinderService.cs index f07064c..b73dbed 100644 --- a/LightlessSync/Services/LightFinder/LightFinderService.cs +++ b/LightlessSync/Services/LightFinder/LightFinderService.cs @@ -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; diff --git a/LightlessSync/Services/Mediator/Messages.cs b/LightlessSync/Services/Mediator/Messages.cs index efe3341..ae74b78 100644 --- a/LightlessSync/Services/Mediator/Messages.cs +++ b/LightlessSync/Services/Mediator/Messages.cs @@ -123,7 +123,7 @@ public record GPoseLobbyReceivePoseData(UserData UserData, PoseData PoseData) : public record GPoseLobbyReceiveWorldData(UserData UserData, WorldData WorldData) : MessageBase; public record OpenCharaDataHubWithFilterMessage(UserData UserData) : 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 UserJoinedSyncshell(string gid) : MessageBase; public record SyncshellBroadcastsUpdatedMessage : MessageBase;