1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-26 20:10:39 +08:00

Prevent spectate/invite callbacks on invalid states

This commit is contained in:
Dan Balasescu
2025-03-13 01:44:20 +09:00
Unverified
parent 4b54b8c0d8
commit e4ade7acd1
+12 -4
View File
@@ -157,20 +157,28 @@ namespace osu.Game.Users
chatOverlay?.Show();
}));
if (metadataClient?.GetPresence(User.OnlineID) != null)
if (isUserOnline())
{
items.Add(new OsuMenuItem(ContextMenuStrings.SpectatePlayer, MenuItemType.Standard, () =>
{
performer?.PerformFromScreen(s => s.Push(new SoloSpectatorScreen(User)));
if (isUserOnline())
performer?.PerformFromScreen(s => s.Push(new SoloSpectatorScreen(User)));
}));
if (multiplayerClient?.Room?.Users.All(u => u.UserID != User.Id) == true)
if (canInviteUser())
{
items.Add(new OsuMenuItem(ContextMenuStrings.InvitePlayer, MenuItemType.Standard, () => multiplayerClient.InvitePlayer(User.Id)));
items.Add(new OsuMenuItem(ContextMenuStrings.InvitePlayer, MenuItemType.Standard, () =>
{
if (canInviteUser())
multiplayerClient!.InvitePlayer(User.Id);
}));
}
}
return items.ToArray();
bool isUserOnline() => metadataClient?.GetPresence(User.OnlineID) != null;
bool canInviteUser() => isUserOnline() && multiplayerClient?.Room?.Users.All(u => u.UserID != User.Id) == true;
}
}