/// <summary>
        /// Async JoinLobby
        /// </summary>
        /// <param name="lobby">LobbyInterface</param>
        /// <param name="lobbyDetailsHandle">Lobby detail</param>
        /// <param name="localUserId">Login user id</param>
        /// <returns>Task</returns>
        public static async UniTask <JoinLobbyCallbackInfo> JoinLobby(this LobbyInterface lobby, LobbyDetails lobbyDetailsHandle, ProductUserId localUserId)
        {
            var joinOp = new JoinLobbyOptions
            {
                LobbyDetailsHandle = lobbyDetailsHandle,
                LocalUserId        = localUserId
            };
            JoinLobbyCallbackInfo info = null;

            lobby.JoinLobby(joinOp, null, e =>
            {
                info = e;
            });
            while (info == null)
            {
                await UniTask.NextFrame();
            }

            if (info.ResultCode == Result.Success)
            {
                return(info);
            }
            Debug.LogError($"error {DebugTools.GetClassMethodName()}:{info.ResultCode}");
            return(null);
        }
 public void Set(JoinLobbyOptions other)
 {
     if (other != null)
     {
         m_ApiVersion       = LobbyInterface.JoinlobbyApiLatest;
         LobbyDetailsHandle = other.LobbyDetailsHandle;
         LocalUserId        = other.LocalUserId;
         PresenceEnabled    = other.PresenceEnabled;
     }
 }