// In renderer process (web page). const {ipcRenderer} = require("electron"); class SendTransaction { constructor() {} renderSendState() { EthoBlockchain.getAccountsData(function (error) { EthoMainGUI.showGeneralError(error); }, function (data) { EthoMainGUI.renderTemplate("send.html", data); $(document).trigger("render_send"); }); } validateSendForm() { if (EthoMainGUI.getAppState() == "send") { if (!$("#sendFromAddress").val()) { EthoMainGUI.showGeneralError("Sender address must be specified!"); return false; } if (!EthoBlockchain.isAddress($("#sendFromAddress").val())) { EthoMainGUI.showGeneralError("Sender address must be a valid address!"); return false; } if (!$("#sendToAddress").val()) { EthoMainGUI.showGeneralError("Recipient address must be specified!"); return false; } if (!EthoBlockchain.isAddress($("#sendToAddress").val())) { EthoMainGUI.showGeneralError("Recipient address must be a valid address!"); return false; } if (Number($("#sendAmmount").val()) <= 0) { EthoMainGUI.showGeneralError("Send ammount must be greater then zero!"); return false; } return true; } else { return false; } } resetSendForm() { if (EthoMainGUI.getAppState() == "send") { $("#sendToAddressName").html(""); $("#sendToAddress").val(""); $("#sendAmmount").val(0); } } } $(document).on("render_send", function () { //$("select").formSelect({classes: "fromAddressSelect"}); $("#sendFromAddress").on("change", function () { var optionText = $(this).find("option:selected").text(); var addrName = optionText.substr(0, optionText.indexOf("-")); var addrValue = optionText.substr(optionText.indexOf("-") + 1); $(".fromAddressSelect input").val(addrValue.trim()); $("#sendFromAddressName").html(addrName.trim()); web3Local.eth.getBalance(this.value, function (error, balance) { $("#sendMaxAmmount").html(parseFloat(web3Local.utils.fromWei(balance, "ether"))); }); }); $("#btnSendAll").off("click").on("click", function () { $("#sendAmmount").focus(); $("#sendAmmount").val($("#sendMaxAmmount").html()); }); $("#sendToAddress").off("input").on("input", function () { var addressName = null; $("#sendToAddressName").html(""); addressName = EthoAddressBook.getAddressName($("#sendToAddress").val()); if (!addressName) { var wallets = EthoDatatabse.getWallets(); addressName = wallets.names[$("#sendToAddress").val()]; } $("#sendToAddressName").html(addressName); }); $("#btnLookForToAddress").off("click").on("click", function () { EthoBlockchain.getAddressListData(function (error) { EthoMainGUI.showGeneralError(error); }, function (addressList) { var addressBook = EthoAddressBook.getAddressList(); for (var key in addressBook) { if (addressBook.hasOwnProperty(key)) { var adddressObject = {}; adddressObject.address = key; adddressObject.name = addressBook[key]; addressList.addressData.push(adddressObject); } } $("#dlgAddressList").iziModal({width: "800px"}); EthoMainGUI.renderTemplate("addresslist.html", addressList, $("#dlgAddressListBody")); $("#dlgAddressList").iziModal("open"); $(".btnSelectToAddress").off("click").on("click", function () { $("#sendToAddressName").html($(this).attr("data-name")); $("#sendToAddress").val($(this).attr("data-wallet")); $("#dlgAddressList").iziModal("close"); }); $("#addressListFilter").off("input").on("input", function (e) { EthoUtils.filterTable($("#addressTable"), $("#addressListFilter").val()); }); $("#btnClearSearchField").off("click").on("click", function () { EthoUtils.filterTable($("#addressTable"), ""); $("#addressListFilter").val(""); }); }); }); $("#btnAddToAddressBook").off("click").on("click", function () { if (EthoBlockchain.isAddress($("#sendToAddress").val())) { $("#dlgAddAddressToBook").iziModal(); $("#inputAddressName").val(""); $("#dlgAddAddressToBook").iziModal("open"); function doAddAddressToAddressBook() { EthoAddressBook.setAddressName($("#sendToAddress").val(), $("#inputAddressName").val()); $("#dlgAddAddressToBook").iziModal("close"); iziToast.success({title: "Success", message: "Address was added to address book", position: "topRight", timeout: 2000}); } } else { EthoMainGUI.showGeneralError("Recipient address is not valid!"); } $("#btnAddAddressToBookConfirm").off("click").on("click", function () { doAddAddressToAddressBook(); }); $("#dlgAddAddressToBook").off("keypress").on("keypress", function (e) { if (e.which == 13) { doAddAddressToAddressBook(); } }); }); $("#btnSendTransaction").off("click").on("click", function () { if (EthoSend.validateSendForm()) { EthoBlockchain.getTranasctionFee($("#sendFromAddress").val(), $("#sendToAddress").val(), $("#sendAmmount").val(), function (error) { EthoMainGUI.showGeneralError(error); }, function (data) { $("#dlgSendWalletPassword").iziModal(); $("#walletPassword").val(""); $("#fromAddressInfo").html($("#sendFromAddress").val()); $("#toAddressInfo").html($("#sendToAddress").val()); $("#valueToSendInfo").html($("#sendAmmount").val()); $("#feeToPayInfo").html(parseFloat(web3Local.utils.fromWei(data.toString(), "ether"))); $("#dlgSendWalletPassword").iziModal("open"); function doSendTransaction() { $("#dlgSendWalletPassword").iziModal("close"); EthoBlockchain.prepareTransaction($("#walletPassword").val(), $("#sendFromAddress").val(), $("#sendToAddress").val(), $("#sendAmmount").val(), function (error) { EthoMainGUI.showGeneralError(error); }, function (data) { EthoBlockchain.sendTransaction(data.raw, function (error) { EthoMainGUI.showGeneralError(error); }, function (data) { EthoSend.resetSendForm(); iziToast.success({title: "Sent", message: "Transaction was successfully sent to the chain", position: "topRight", timeout: 5000}); EthoBlockchain.getTransaction(data, function (error) { EthoMainGUI.showGeneralError(error); }, function (transaction) { ipcRenderer.send("storeTransaction", { block: transaction.blockNumber, txhash: transaction.hash.toLowerCase(), fromaddr: transaction.from.toLowerCase(), timestamp: moment().format("YYYY-MM-DD HH:mm:ss"), toaddr: transaction.to.toLowerCase(), value: transaction.value }); }); }); }); } $("#btnSendWalletPasswordConfirm").off("click").on("click", function () { doSendTransaction(); }); $("#dlgSendWalletPassword").off("keypress").on("keypress", function (e) { if (e.which == 13) { doSendTransaction(); } }); }); } }); }); // create new account variable EthoSend = new SendTransaction();