211 lines
7.3 KiB
JavaScript
Executable File
211 lines
7.3 KiB
JavaScript
Executable File
// 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();
|