Example #1
0
        public static void NavigateToCardInfo(IDialogDetailsView view, PaymentInfo paymentInfo, Func <TLTmpPassword> getTmpPassword,
                                              INavigationService navigationService)
        {
            if (paymentInfo == null)
            {
                return;
            }

            var form = paymentInfo.Form;

            if (form == null)
            {
                return;
            }

            var           useSavedCredentials  = false;
            var           savedCredentialsCard = form.SavedCredentials as TLPaymentSavedCredentialsCard;
            TLTmpPassword tmpPassword          = null;

            if (savedCredentialsCard != null && !form.PasswordMissing)
            {
                tmpPassword = getTmpPassword.Invoke();
                if (tmpPassword != null)
                {
                    var now = TLUtils.DateToUniversalTimeTLInt(IoC.Get <IMTProtoService>().ClientTicksDelta, DateTime.Now);
                    if (tmpPassword.ValidUntil.Value - 60 > now.Value)
                    {
                        useSavedCredentials = true;
                    }
                }
            }

            if (useSavedCredentials)
            {
                paymentInfo.Credentials = new TLInputPaymentCredentialsSaved
                {
                    Id          = savedCredentialsCard.Id,
                    TmpPassword = tmpPassword.TmpPassword
                };
                paymentInfo.CredentialsTitle = savedCredentialsCard.Title.ToString();

                Navigate <CheckoutViewModel>(view, navigationService);
            }
            else if (savedCredentialsCard != null && !form.PasswordMissing)
            {
                Navigate <SavedCardInfoViewModel>(view, navigationService);
            }
            else
            {
                if (form.IsNativeProvider)
                {
                    Navigate <CardInfoViewModel>(view, navigationService);
                }
                else
                {
                    Navigate <WebCardInfoViewModel>(view, navigationService);
                }
            }
        }
Example #2
0
 private static void Navigate <T>(IDialogDetailsView view, INavigationService navigationService)
 {
     if (view != null)
     {
         view.StopPlayersAndCreateBitmapCache(() =>
         {
             navigationService.UriFor <T>().Navigate();
         });
     }
     else
     {
         navigationService.UriFor <T>().Navigate();
     }
 }