Skip to content

Commit 511e7e9

Browse files
committed
fix: Take appropriate actions when presence enabled state changes
1 parent 1f75cec commit 511e7e9

File tree

1 file changed

+36
-25
lines changed

1 file changed

+36
-25
lines changed

Runtime/Client/LootLockerPresenceManager.cs

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -497,11 +497,9 @@ public static bool IsEnabled
497497
set
498498
{
499499
var instance = Get();
500-
if (!value && instance.isEnabled)
501-
{
502-
DisconnectAll();
503-
}
504-
instance.isEnabled = value;
500+
if(!instance)
501+
return;
502+
instance.SetPresenceEnabled(value);
505503
}
506504
}
507505

@@ -511,7 +509,7 @@ public static bool IsEnabled
511509
public static bool AutoConnectEnabled
512510
{
513511
get => Get()?.autoConnectEnabled ?? false;
514-
set { var instance = Get(); if (instance != null) instance.autoConnectEnabled = value; }
512+
set { var instance = Get(); if (instance != null) instance.SetAutoConnectEnabled(value); }
515513
}
516514

517515
/// <summary>
@@ -546,25 +544,6 @@ public static IEnumerable<string> ActiveClientUlids
546544

547545
#region Public Methods
548546

549-
/// <summary>
550-
/// Connect presence using player data directly (used by event handlers to avoid StateData lookup issues)
551-
/// </summary>
552-
private static void ConnectPresenceWithPlayerData(LootLockerPlayerData playerData, LootLockerPresenceCallback onComplete = null)
553-
{
554-
var instance = Get();
555-
556-
// Create and initialize the client
557-
var client = instance.CreateAndInitializePresenceClient(playerData);
558-
if (client == null)
559-
{
560-
onComplete?.Invoke(false, "Failed to create or initialize presence client");
561-
return;
562-
}
563-
564-
// Connect the client
565-
instance.ConnectExistingPresenceClient(playerData.ULID, client, onComplete);
566-
}
567-
568547
/// <summary>
569548
/// Connect presence for a specific player session
570549
/// </summary>
@@ -970,6 +949,38 @@ public static string GetLastSentStatus(string playerUlid = null)
970949

971950
#region Private Helper Methods
972951

952+
private void SetPresenceEnabled(bool enabled)
953+
{
954+
bool changingState = isEnabled != enabled;
955+
isEnabled = enabled;
956+
if(changingState && enabled && autoConnectEnabled)
957+
{
958+
SubscribeToSessionEvents();
959+
StartCoroutine(AutoConnectExistingSessions());
960+
}
961+
else if (changingState && !enabled)
962+
{
963+
UnsubscribeFromSessionEvents();
964+
DisconnectAllInternal();
965+
}
966+
}
967+
968+
private void SetAutoConnectEnabled(bool enabled)
969+
{
970+
bool changingState = autoConnectEnabled != enabled;
971+
autoConnectEnabled = enabled;
972+
if(changingState && enabled)
973+
{
974+
SubscribeToSessionEvents();
975+
StartCoroutine(AutoConnectExistingSessions());
976+
}
977+
else if (changingState && !enabled)
978+
{
979+
UnsubscribeFromSessionEvents();
980+
DisconnectAllInternal();
981+
}
982+
}
983+
973984
/// <summary>
974985
/// Handle client state changes for automatic cleanup
975986
/// </summary>

0 commit comments

Comments
 (0)