private IEnumerator UpgradeWithPlayerPortalAsync(string returnUrl, ResultCallback <UpgradeUserRequest> callback) { Result <UpgradeUserRequest> result = null; yield return(this.userAccount.UpgradeWithPlayerPortal(returnUrl, ttl, r => result = r)); callback.Try(result); while (result == null) { System.Threading.Thread.Sleep(100); yield return(null); } HttpListenerExtension.StartHttpListener(result.Value.temporary_session_id); while (HttpListenerExtension.listenerResult == null) { System.Threading.Thread.Sleep(100); yield return(null); if (HttpListenerExtension.availableLocalUrl != returnUrl) { break; } } if (HttpListenerExtension.listenerResult != null) { if (!HttpListenerExtension.listenerResult.IsError) { Action handler = Upgraded; if (handler != null) { handler(); } } } }
/// <summary> /// Upgrade a headless account using external browser. User must be logged in before this method can be /// used. /// </summary> /// <param name="callback">Returns a Result that contains UpgradeUserRequest via callback when completed</param> public void UpgradeWithPlayerPortal(ResultCallback <UpgradeUserRequest> callback) { Report.GetFunctionLog(this.GetType().Name); this.coroutineRunner.Run( UpgradeWithPlayerPortalAsync(HttpListenerExtension.GetAvailableLocalUrl(), callback)); }