public MainForm() { InitializeComponent(); _accountViewModel = new AccountViewModel(); ViewModel = _accountViewModel; _sendTransactionViewModel = new SendTransactionViewModel(); transferUserControl1.ViewModel = _sendTransactionViewModel; _keyStoreLoaderViewModel = new KeyStoreLoaderViewModel(); keystoreAccountLoaderUserControl3.ViewModel = _keyStoreLoaderViewModel; _privateKeyLoaderViewModel = new PrivateKeyLoaderViewModel(); privateKeyAccountLoaderUserControl1.ViewModel = _privateKeyLoaderViewModel; _hdWalletAccountLoaderViewModel = new HdWalletAccountLoaderViewModel(); hdWalletAccountLoaderUserControl1.ViewModel = _hdWalletAccountLoaderViewModel; _standardTokenBalanceOfViewModel = new StandardTokenBalanceOfViewModel(); standardTokenBalanceOfUserControl1.ViewModel = _standardTokenBalanceOfViewModel; _standardTokenContractAddressViewModel = new StandardTokenContractAddressViewModel(); standardTokenContractAddressUserControl1.ViewModel = _standardTokenContractAddressViewModel; _standardTokenTransferViewModel = new StandardTokenTransferViewModel(); standardTokenTransferUserControl1.ViewModel = _standardTokenTransferViewModel; _transactionsViewModel = new TransactionsViewModel(); transactionsUserControl1.ViewModel = _transactionsViewModel; this.Bind(ViewModel, x => x.Address, x => x.txtCurrentAccount.Text); this.Bind(ViewModel, x => x.PrivateKey, x => x.txtPrivateKey.Text); this.Bind(ViewModel, x => x.Balance, x => x.lblAccountBalance.Text); this.Bind(ViewModel, x => x.Url, x => x.cmbUrl.Text); this.BindCommand(ViewModel, x => x.RefreshBalanceCommand, x => x.btnRefreshBalance); ViewModel.Url = "https://mainnet.infura.io"; }
public MainWindowViewModel() { var nethereumHostProvider = Locator.Current.GetService <NethereumHostProvider>(); var accountService = Locator.Current.GetService <AccountsService>(); var currentAccountsTransactionsService = Locator.Current.GetService <CurrentAccountTransactionsService>(); //Add an account to the account service so we have one already accountService.AddAccount(new Web3.Accounts.Account("0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7")); PrivateKeyLoaderViewModel = new PrivateKeyLoaderViewModel(accountService); PrivateKeyLoaderViewModel.PrivateKey = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; //Default the private key AccountViewModel = new AccountViewModel(nethereumHostProvider); AccountsViewModel = new AccountsViewModel(nethereumHostProvider, accountService); KeyStoreLoaderViewModel = new KeyStoreLoaderViewModel(accountService); SendTransactionViewModel = new SendTransactionViewModel(nethereumHostProvider); TransactionsViewModel = new TransactionsViewModel(nethereumHostProvider, currentAccountsTransactionsService); StandardTokenViewModel = new StandardTokenViewModel(nethereumHostProvider); UrlSettingViewModel = new UrlSettingViewModel(nethereumHostProvider); UrlSettingViewModel.Url = "http://localhost:8545"; //Default simple url //Default someone to send something SendTransactionViewModel.AddressTo = "0x243e72b69141f6af525a9a5fd939668ee9f2b354"; HdWalletAccountLoaderViewModel = new HdWalletAccountLoaderViewModel(accountService); //Default some words HdWalletAccountLoaderViewModel.Words = "ripple scissors kick mammal hire column oak again sun offer wealth tomorrow wagon turn fatal"; }
protected override async Task <(RecipeAction ToSave, SendTransactionViewModel showViewModel)> BuildModel( SendTransactionViewModel viewModel, RecipeAction mainModel) { var services = await _externalServiceManager.GetExternalServicesData(new ExternalServicesDataQuery() { Type = new[] { NBXplorerWalletService.NBXplorerWalletServiceType }, UserId = GetUserId() }); viewModel.ExternalServices = new SelectList(services, nameof(ExternalServiceData.Id), nameof(ExternalServiceData.Name), viewModel.ExternalServiceId); if (viewModel.Action.Equals("add-output", StringComparison.InvariantCultureIgnoreCase)) { viewModel.Outputs.Add(new SendTransactionData.TransactionOutput()); return(null, viewModel); } if (viewModel.Action.StartsWith("remove-output", StringComparison.InvariantCultureIgnoreCase)) { var index = int.Parse(viewModel.Action.Substring(viewModel.Action.IndexOf(":") + 1)); viewModel.Outputs.RemoveAt(index); return(null, viewModel); } if (!viewModel.Outputs.Any()) { ModelState.AddModelError(string.Empty, "Please add at least one transaction output"); } else { var subtractFeesOutputs = viewModel.Outputs.Select((output, i) => (output, i)) .Where(tuple => tuple.Item1.SubtractFeesFromOutput); if (subtractFeesOutputs.Count() > 1) { foreach (var subtractFeesOutput in subtractFeesOutputs) { viewModel.AddModelError(model => model.Outputs[subtractFeesOutput.Item2].SubtractFeesFromOutput, "You can only subtract fees from one output", ModelState); } } } if (ModelState.IsValid) { mainModel.ExternalServiceId = viewModel.ExternalServiceId; mainModel.Set <SendTransactionData>(viewModel); return(mainModel, null); } return(null, viewModel); }
public MainWindowViewModel() { PrivateKeyLoaderViewModel = new PrivateKeyLoaderViewModel(); AccountViewModel = new AccountViewModel(); KeyStoreLoaderViewModel = new KeyStoreLoaderViewModel(); SendTransactionViewModel = new SendTransactionViewModel(); TransactionsViewModel = new TransactionsViewModel(); StandardTokenViewModel = new StandardTokenViewModel(); AccountViewModel.Url = "http://192.168.2.152:8545"; StandardTokenViewModel.StandardTokenContractAddressViewModel.ContractAddress = "0x243e72b69141f6af525a9a5fd939668ee9f2b354"; SendTransactionViewModel.AddressTo = "0x243e72b69141f6af525a9a5fd939668ee9f2b354"; }
public async Task ExecuteAsync() { Ensure.ArgumentNotNullOrEmpty(this.AddressTo, "Address To"); Ensure.ArgumentNotNull(this.Amount, "Token Amount"); var transferfuction = new TransferFunction { TokenAmount = Web3.Web3.Convert.ToWei(Amount.Value), To = AddressTo }; var transactionViewModel = new SendTransactionViewModel(_ethereumHostProvider, _screenHost); await transactionViewModel.InitialiseAsync(transferfuction, ContractAddress); await _screenHost.Router.Navigate.Execute(transactionViewModel); }
public MainForm() { InitializeComponent(); _accountViewModel = new AccountViewModel(); ViewModel = _accountViewModel; _sendTransactionViewModel = new SendTransactionViewModel(); transferUserControl1.ViewModel = _sendTransactionViewModel; _keyStoreLoaderViewModel = new KeyStoreLoaderViewModel(); keystoreAccountLoaderUserControl3.ViewModel = _keyStoreLoaderViewModel; _privateKeyLoaderViewModel = new PrivateKeyLoaderViewModel(); privateKeyAccountLoaderUserControl1.ViewModel = _privateKeyLoaderViewModel; _hdWalletAccountLoaderViewModel = new HdWalletAccountLoaderViewModel(); hdWalletAccountLoaderUserControl1.ViewModel = _hdWalletAccountLoaderViewModel; _standardTokenBalanceOfViewModel = new StandardTokenBalanceOfViewModel(); standardTokenBalanceOfUserControl1.ViewModel = _standardTokenBalanceOfViewModel; _standardTokenContractAddressViewModel = new StandardTokenContractAddressViewModel(); standardTokenContractAddressUserControl1.ViewModel = _standardTokenContractAddressViewModel; _standardTokenTransferViewModel = new StandardTokenTransferViewModel(); standardTokenTransferUserControl1.ViewModel = _standardTokenTransferViewModel; _transactionsViewModel = new TransactionsViewModel(); transactionsUserControl1.ViewModel = _transactionsViewModel; this.Bind(ViewModel, x => x.Address, x => x.txtCurrentAccount.Text); this.Bind(ViewModel, x => x.PrivateKey, x => x.txtPrivateKey.Text); this.Bind(ViewModel, x => x.Balance, x => x.lblAccountBalance.Text); this.Bind(ViewModel, x => x.Url, x => x.cmbUrl.Text); this.BindCommand(ViewModel, x => x.RefreshBalanceCommand, x => x.btnRefreshBalance); // Note: in this sample, a special INFURA API key is used: `7238211010344719ad14a89db874158c`. If you wish to use this sample in your own project you’ll need to [sign up on INFURA](https://infura.io/register) and use your own key. ViewModel.Url = "https://mainnet.infura.io/v3/7238211010344719ad14a89db874158c"; }