Files
paperclip-wallet/renderer/send.js
Taegus b0cd7d517a + beautifier
* version info
2019-03-03 10:37:19 +01:00

211 lines
7.3 KiB
JavaScript

// 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();