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; } }); }