private IEnumerator GetAccountBalanceCall(OnAccountBalanceSuccessDelegate OnSucess, OnAccountBalanceFailedDelegate OnFailed, bool isRetry = false) { bool areAccountsDone = false; string accountsLoadingError = ""; if (CurrentUser == null || CurrentUser.accounts.Count == 0) { Quarters.Instance.GetAccounts(delegate(List <User.Account> accounts) { //accounts loaded areAccountsDone = true; }, delegate(string getAccountsError) { OnFailed("Getting user accounts failed: " + getAccountsError); areAccountsDone = true; accountsLoadingError = getAccountsError; }); while (!areAccountsDone) { yield return(new WaitForEndOfFrame()); } //error occured, break out of coroutine if (!string.IsNullOrEmpty(accountsLoadingError)) { yield break; } } User.Account account = CurrentUser.accounts[0]; string url = API_URL + "/accounts/" + account.address + "/balance"; WWW www = new WWW(url, null, AuthorizationHeader); yield return(www); while (!www.isDone) { yield return(new WaitForEndOfFrame()); } if (!string.IsNullOrEmpty(www.error)) { if (!isRetry) { //refresh access code and retry this call in case access code expired StartCoroutine(GetAccessToken(delegate { StartCoroutine(GetAccountBalanceCall(OnSucess, OnFailed, true)); }, delegate(string error) { OnFailed(www.error); })); } else { Debug.LogError(www.error); OnFailed(www.error); } } else { Debug.Log(www.text); account.balance = JsonConvert.DeserializeObject <User.Account.Balance>(www.text); OnSucess(account.balance); } }
public void GetAccountBalance(OnAccountBalanceSuccessDelegate OnSuccessDelegate, OnAccountBalanceFailedDelegate OnFailedDelegate) { StartCoroutine(GetAccountBalanceCall(OnSuccessDelegate, OnFailedDelegate)); }