예제 #1
0
        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;
            }
        }