Пример #1
0
        public void OnClick(View view)
        {
            if (view.Id == DemoButton.Id)
            {
                ServerName.Text    = Constants.Localhost;
                Username.Text      = "admin1";
                Password.Text      = "123";
                RememberMe.Checked = false;
            }
            else
            {
                var data = new object[]
                {
                    null,
                    null,
                    ServerName.Text
                };
                AuthorizationManager.SetAuthorization(data);
            }

            LoginModel.ServerName = ServerName.Text;
            LoginModel.Username   = Username.Text;
            LoginModel.Password   = Password.Text;
            LoginModel.RememberMe = RememberMe.Checked;

            var token = CancelAndSetTokenForView(view);

            SetEnabled(false);

            var animationFadeOut = AnimationUtils.LoadAnimation(Context, Android.Resource.Animation.FadeOut);

            animationFadeOut.Duration = 500;
            var animationFadeIn = AnimationUtils.LoadAnimation(Context, Android.Resource.Animation.FadeIn);

            animationFadeIn.Duration = 500;

            animationFadeIn.SetAnimationListener(new VisibilityAnimationListener(LoginProgressBar, ViewStates.Visible));
            animationFadeOut.SetAnimationListener(new VisibilityAnimationListener(LoginLayout, ViewStates.Invisible));

            LoginLayout.StartAnimation(animationFadeOut);
            LoginProgressBar.StartAnimation(animationFadeIn);

            OnServerProvidedListener.OnServerProvided(LoginModel.ServerName);

            Task.Run(async() =>
            {
                HttpResult <string> result = null;
                try
                {
                    result = await AuthService.Login(LoginModel, token);
                }
                catch (System.Exception ex)
                {
                    RunOnUiThread(() =>
                    {
                        ShowToastMessage(ex.Message, ToastLength.Long);
                    });
                    return;
                }

                if (result.Error.Any())
                {
                    var errorMessage = result.Error.Select(kv => kv.Value.FirstOrDefault()).FirstOrDefault()
                                       ?? "An error occurred";

                    RunOnUiThread(() =>
                    {
                        ShowToastMessage(errorMessage);

                        animationFadeOut.Cancel();
                        animationFadeIn.Cancel();

                        animationFadeIn.SetAnimationListener(new VisibilityAnimationListener(LoginLayout, ViewStates.Visible));
                        animationFadeOut.SetAnimationListener(new VisibilityAnimationListener(LoginProgressBar, ViewStates.Invisible));

                        LoginProgressBar.StartAnimation(animationFadeOut);
                        LoginLayout.StartAnimation(animationFadeIn);

                        SetEnabled(true);
                    });

                    return;
                }

                RunOnUiThread(() =>
                {
                    animationFadeOut.Cancel();
                    animationFadeIn.Cancel();

                    animationFadeIn.SetAnimationListener(new VisibilityAnimationListener(LoginLayout, ViewStates.Visible));
                    animationFadeOut.SetAnimationListener(new VisibilityAnimationListener(LoginProgressBar, ViewStates.Invisible));

                    LoginProgressBar.StartAnimation(animationFadeOut);
                    LoginLayout.StartAnimation(animationFadeIn);

                    SetEnabled(true);

                    if (LoginModel.RememberMe)
                    {
                        PersistenceProvider.SetCredentials(LoginModel);
                    }
                    else
                    {
                        PersistenceProvider.ClearCredentials();
                    }

                    OnLoginListener.OnLogin(LoginModel, result.Data);
                });
            }, token);
        }