Exemple #1
0
        private async Task ConfirmAction(INavigation navigation, Type redirectAfter)
        {
            if (string.IsNullOrEmpty(Code))
            {
                _analyticsService.LogEvent("Экран подтверждения регистрации. Неверный код подтверждения");

                Device.BeginInvokeOnMainThread(async() =>
                {
                    await _toastNotificator.Notify(ToastNotificationType.Info, "Ошибка", "Введите код подтверждения из смс", TimeSpan.FromSeconds(2));
                });

                return;
            }

            IsButtonEnabled = false;

            ButtonText = "подтверждение..";

            await Task.Run(async() =>
            {
                string result = null;

                bool success = await new Func <Task>(async() =>
                {
                    result = await Policy.Handle <ModernClientHttpResponseException>(r => r.StatusCode != HttpStatusCode.Gone && r.StatusCode != HttpStatusCode.Unauthorized).Or <WebException>().Or <ModernClientHttpResponseException>()
                             .WaitAndRetryAsync(retryCount: 4, sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)))
                             .ExecuteAsync(async() => await _authenticationService.Confirm(Code, Token));
                }).SaveExecuteHttpRequest(_toastNotificator, true, "Ошибка при попытке зарегистрироваться, попробуйте позже");

                if (!success)
                {
                    return;
                }


                if (!string.IsNullOrEmpty(result))
                {
                    await Task.Run(() =>
                    {
                        _medgreatApplication.ConfigureWebSockets(result);
                    });

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        _medgreatApplication.ChangeRootPage(new RootPage());
                    });

                    MessagingCenter.Send(SharedConstants.AuthorizedEvent, SharedConstants.AuthorizedEvent);
                }
                else
                {
                    _analyticsService.LogEvent("Сервер вернул ошибку <Код подтверждения регистрации неверен>");

                    Device.BeginInvokeOnMainThread(async() =>
                    {
                        await
                        _toastNotificator.Notify(ToastNotificationType.Info, "Внимание", "Код подтверждения неверен",
                                                 TimeSpan.FromSeconds(2));
                    });

                    ButtonText      = "ПОДТВЕРДИТЬ";
                    IsButtonEnabled = true;
                }
            });
        }