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";
        }
Пример #2
0
        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";
        }
Пример #3
0
        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);
        }
Пример #4
0
 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);
        }
Пример #6
0
        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";
        }