public async Task SignInAsync(string userName, string userPassword) { try { LoggerService.Instance.Log("Account.SignInAsync..."); IsLoading = true; UserInfo = null; var errorMessage = string.Empty; var response = await LoginClient.LoginWithCredentials(userName, userPassword); if (response != null) { if (response.Success) { var newUser = response.Data.ToObject <User>(); if (!string.IsNullOrEmpty(newUser.Token)) { UserInfo = newUser; newUser.Password = userPassword; await FetchUserCreditsAsync(); UserStoreService.Instance.SaveUserCredentials(UserInfo); } else { LoggerService.Instance.Log("ERROR: Account.SignInAsync: token is null"); errorMessage = "There was an error logging in"; } } else { errorMessage = response.ErrorMessageClean; } } else { errorMessage = "There was an error logging in"; } if (!string.IsNullOrEmpty(errorMessage)) { LoggerService.Instance.Log("ERROR: Account.SignInAsync: " + errorMessage); } else { LoggerService.Instance.Log("Account.SignInAsync: success"); } OnPropertyChanged("SignedIn"); await Fire_OnSignInComplete(SignedIn, errorMessage, false, SignInAErrorType.LoginError); } catch (ThrottleException ex) { await Application.Current.MainPage.DisplayAlert("Error", ex.Message, "OK"); } finally { IsLoading = false; } }