コード例 #1
0
        public IActionResult TransactionCommitted(int tranID)
        {
            TransactionSummaryViewModel summary = transactionUtils.RetrieveLastUserCommitSummary(tranID);

            if (summary == null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            return(View(summary));
        }
コード例 #2
0
 public TransactionSummary()
 {
     InitializeComponent();
     vm      = DataContext as TransactionSummaryViewModel;
     Loaded += TransactionSummary_Loaded;
 }
コード例 #3
0
    public TransactionPreviewViewModel(Wallet wallet, TransactionInfo info, BitcoinAddress destination, bool isFixedAmount)
    {
        _wallet                  = wallet;
        _info                    = info;
        _destination             = destination;
        _isFixedAmount           = isFixedAmount;
        _cancellationTokenSource = new CancellationTokenSource();

        PrivacySuggestions        = new PrivacySuggestionsFlyoutViewModel();
        CurrentTransactionSummary = new TransactionSummaryViewModel(this, _wallet, _info, destination);
        PreviewTransactionSummary = new TransactionSummaryViewModel(this, _wallet, _info, destination, true);

        TransactionSummaries = new List <TransactionSummaryViewModel>
        {
            CurrentTransactionSummary,
            PreviewTransactionSummary
        };

        DisplayedTransactionSummary = CurrentTransactionSummary;

        PrivacySuggestions.WhenAnyValue(x => x.PreviewSuggestion)
        .Subscribe(x =>
        {
            if (x is ChangeAvoidanceSuggestionViewModel ca)
            {
                UpdateTransaction(PreviewTransactionSummary, ca.TransactionResult);
            }
            else
            {
                DisplayedTransactionSummary = CurrentTransactionSummary;
            }
        });

        PrivacySuggestions.WhenAnyValue(x => x.SelectedSuggestion)
        .SubscribeAsync(async x =>
        {
            PrivacySuggestions.IsOpen             = false;
            PrivacySuggestions.SelectedSuggestion = null;

            if (x is ChangeAvoidanceSuggestionViewModel ca)
            {
                _info.ChangelessCoins = ca.TransactionResult.SpentCoins;
                UpdateTransaction(CurrentTransactionSummary, ca.TransactionResult);

                await PrivacySuggestions.BuildPrivacySuggestionsAsync(_wallet, _info, _destination, ca.TransactionResult, _isFixedAmount, _cancellationTokenSource.Token);
            }
            else if (x is PocketSuggestionViewModel)
            {
                await OnChangePocketsAsync();
            }
        });

        PrivacySuggestions.WhenAnyValue(x => x.IsOpen)
        .Subscribe(x =>
        {
            if (!x)
            {
                DisplayedTransactionSummary = CurrentTransactionSummary;
            }
        });

        SetupCancel(enableCancel: true, enableCancelOnEscape: true, enableCancelOnPressed: false);
        EnableBack = true;

        AdjustFeeAvailable = !TransactionFeeHelper.AreTransactionFeesEqual(_wallet);

        if (PreferPsbtWorkflow)
        {
            SkipCommand = ReactiveCommand.CreateFromTask(OnConfirmAsync);

            NextCommand = ReactiveCommand.CreateFromTask(OnExportPsbtAsync);

            _nextButtonText = "Save PSBT file";
        }
        else
        {
            NextCommand = ReactiveCommand.CreateFromTask(OnConfirmAsync);

            _nextButtonText = "Confirm";
        }

        AdjustFeeCommand = ReactiveCommand.CreateFromTask(async() =>
        {
            if (_info.IsCustomFeeUsed)
            {
                await ShowAdvancedDialogAsync();
            }
            else
            {
                await OnAdjustFeeAsync();
            }
        });
    }