Files
paperclip-wallet/renderer/send.js
Taegus 69ffad124d + clean blockchain data
* show sender wallet name and only show address in the main field
2019-02-03 12:51:00 +01:00

244 lines
10 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();