public IActionResult TransactionCommitted(int tranID) { TransactionSummaryViewModel summary = transactionUtils.RetrieveLastUserCommitSummary(tranID); if (summary == null) { return(RedirectToAction("Index", "Home")); } return(View(summary)); }
public TransactionSummary() { InitializeComponent(); vm = DataContext as TransactionSummaryViewModel; Loaded += TransactionSummary_Loaded; }
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(); } }); }