diff --git a/renderer/maingui.js b/renderer/maingui.js
index d476cb1..4ff542b 100755
--- a/renderer/maingui.js
+++ b/renderer/maingui.js
@@ -52,7 +52,7 @@ class MainGUI {
$("#dlgGeneralError").iziModal();
$("#dlgGeneralError").iziModal("open");
- $("#btnGeneralErrorOK").click(function() {
+ $("#btnGeneralErrorOK").click(function () {
$("#dlgGeneralError").iziModal("close");
});
}
@@ -64,12 +64,12 @@ class MainGUI {
$("#dlgGeneralConfirm").iziModal();
$("#dlgGeneralConfirm").iziModal("open");
- $("#btnGeneralConfirmYes").click(function() {
+ $("#btnGeneralConfirmYes").click(function () {
$("#dlgGeneralConfirm").iziModal("close");
callback(true);
});
- $("#btnGeneralConfirmNo").click(function() {
+ $("#btnGeneralConfirmNo").click(function () {
$("#dlgGeneralConfirm").iziModal("close");
callback(false);
});
@@ -82,12 +82,12 @@ class MainGUI {
$("#dlgAboutInfo").iziModal();
$("#dlgAboutInfo").iziModal("open");
- $("#urlOpenLicence, #urlOpenGitHub").off("click").on("click", function(even) {
+ $("#urlOpenLicence, #urlOpenGitHub").off("click").on("click", function (even) {
event.preventDefault();
ipcRenderer.send("openURL", $(this).attr("href"));
});
- $("#btnAboutInfoClose").off("click").on("click", function(even) {
+ $("#btnAboutInfoClose").off("click").on("click", function (even) {
$("#dlgAboutInfo").iziModal("close");
});
}
@@ -112,49 +112,49 @@ class MainGUI {
}
}
-ipcRenderer.on("showAboutDialog", function(event, message) {
+ipcRenderer.on("showAboutDialog", function (event, message) {
EthoMainGUI.showAboutDialog(message);
});
-$("#mainNavBtnTransactions").click(function() {
+$("#mainNavBtnTransactions").click(function () {
EthoTransactions.clearFilter();
EthoMainGUI.changeAppState("transactions");
EthoTransactions.renderTransactions();
});
-$("#mainNavBtnAddressBoook").click(function() {
+$("#mainNavBtnAddressBoook").click(function () {
EthoMainGUI.changeAppState("addressBook");
EthoAddressBook.renderAddressBook();
});
-$("#mainNavBtnSend").click(function() {
+$("#mainNavBtnSend").click(function () {
EthoMainGUI.changeAppState("send");
EthoSend.renderSendState();
});
-$("#mainNavBtnWallets").click(function() {
+$("#mainNavBtnWallets").click(function () {
EthoMainGUI.changeAppState("account");
EthoWallets.renderWalletsState();
});
-$("#mainNavBtnMarkets").click(function() {
+$("#mainNavBtnMarkets").click(function () {
EthoMainGUI.changeAppState("markets");
EthoMarkets.renderMarkets();
});
-$("#mainNavBtnUploads").click(function() {
+$("#mainNavBtnUploads").click(function () {
EthoMainGUI.changeAppState("uploads");
EthoUploads.renderUploads();
});
-$("#mainNavBtnSettings").click(function() {
+$("#mainNavBtnSettings").click(function () {
EthoMainGUI.changeAppState("settings");
EthoSettings.renderSettingsState();
});
-$("#mainNavBtnAbout").click(function() {
+$("#mainNavBtnAbout").click(function () {
EthoMainGUI.changeAppState("about");
EthoAbout.renderAbout();
});
-EthoMainGUI = new MainGUI();
+EthoMainGUI = new MainGUI();
\ No newline at end of file
diff --git a/renderer/uploads.js b/renderer/uploads.js
index 7d1a615..fb89780 100644
--- a/renderer/uploads.js
+++ b/renderer/uploads.js
@@ -7,7 +7,7 @@ const path = require("path");
const Buf = require('buffer').Buffer;
const Common = require('ethereumjs-common');
const fetch = require("node-fetch");
-const fs = require('fs');
+const fs = require("fs");
const fileReaderPullStream = require('pull-file-reader')
const request = require('request');
const keythereum = require("keythereum");
@@ -147,12 +147,15 @@ class Uploads {
$('#ethofsLoginModal').iziModal();
$('#ethofsLoginModal').iziModal('close');
$('#ethofsRegistrationModal').iziModal('close');
+ EthoUploads.resetUploadSystem();
+ EthoUploads.resetUploadProcess();
+ EthoUploads.resetUploadModal();
//CREATE ETHER-1 CHAIN CONNECTION AND LOOK FOR EXISTING USER ACCOUNT
if (privateKey != "") {
GlobalPrivateKey = privateKey;
privateKeyLogin = true;
web3.eth.net.isListening()
- .then(function() {
+ .then(function () {
console.log('ethoFS is connected')
var account = web3.eth.accounts.privateKeyToAccount('0x' + privateKey);
console.log(account);
@@ -163,7 +166,7 @@ class Uploads {
} else {
privateKeyLogin = false;
web3 = new Web3(web3.currentProvider);
- web3.eth.getAccounts(function(err, accounts) {
+ web3.eth.getAccounts(function (err, accounts) {
if (err != null) {
console.error("An error occurred: " + err);
EthoUploads.outputNoAddressContractTable();
@@ -188,11 +191,11 @@ class Uploads {
console.log("Starting ethoFS");
GlobalUserAddress = web3.eth.defaultAccount;
var ethoFSAccounts = new web3.eth.Contract(GlobalControllerABI, GlobalControllerContractAddress);
- ethoFSAccounts.methods.CheckAccountExistence(GlobalUserAddress).call(function(error, result) {
+ ethoFSAccounts.methods.CheckAccountExistence(GlobalUserAddress).call(function (error, result) {
if (!error) {
if (result) {
document.getElementById("accountaddress").textContent = web3.eth.defaultAccount;
- ethoFSAccounts.methods.GetUserAccountName(GlobalUserAddress).call(function(error, result) {
+ ethoFSAccounts.methods.GetUserAccountName(GlobalUserAddress).call(function (error, result) {
if (!error) {
if (result) {
EthoUploads.getBlockHeight(web3);
@@ -233,14 +236,14 @@ class Uploads {
};
var privateKey = '0x' + GlobalPrivateKey;
web3.eth.accounts.signTransaction(tx, privateKey)
- .then(function(signedTransactionData) {
- web3.eth.sendSignedTransaction(signedTransactionData.rawTransaction, function(error, result) {
+ .then(function (signedTransactionData) {
+ web3.eth.sendSignedTransaction(signedTransactionData.rawTransaction, function (error, result) {
if (!error) {
if (result) {
$('#minedBlockTrackerModal').iziModal();
$('#minedBlockTrackerModal').iziModal('open');
$miningMessage = document.querySelector('.mining-message')
- EthoUploads.waitForReceipt(result, function(receipt) {
+ EthoUploads.waitForReceipt(result, function (receipt) {
console.log("Transaction Has Been Mined: " + receipt);
$('#minedBlockTrackerModal').iziModal('close');
EthoUploads.ethofsLogin(GlobalPrivateKey);
@@ -254,14 +257,14 @@ class Uploads {
});
});
} else {
- controller.methods.AddNewUserPublic(userName).send(function(error, result) {
+ controller.methods.AddNewUserPublic(userName).send(function (error, result) {
if (!error) {
if (result) {
document.getElementById("wait").innerHTML = 'Waiting For Add User Confirmation.';
$('#minedBlockTrackerModal').iziModal();
$('#minedBlockTrackerModal').iziModal('open');
$miningMessage = document.querySelector('.mining-message')
- EthoUploads.waitForReceipt(result, function(receipt) {
+ EthoUploads.waitForReceipt(result, function (receipt) {
console.log("Transaction Has Been Mined: " + receipt);
$('#minedBlockTrackerModal').iziModal('close');
ethofsLogin("");
@@ -281,14 +284,14 @@ class Uploads {
}
getBlockHeight(web3) {
console.log("Starting Block Height Detection..");
- web3.eth.getBlockNumber(function(err, data) {
+ web3.eth.getBlockNumber(function (err, data) {
document.getElementById("blocknumber").textContent = data;
console.log("ETHO Block Number: " + data);
});
}
getBalance(web3) {
console.log("Starting Balance Detection..");
- web3.eth.getBalance(web3.eth.defaultAccount, function(err, data) {
+ web3.eth.getBalance(web3.eth.defaultAccount, function (err, data) {
var balance = "ETHO Balance: " + Number(web3.utils.fromWei(data, "ether")).toFixed(2);
document.getElementById("ethobalance").textContent = balance;
console.log("ETHO Balance: " + data);
@@ -304,10 +307,10 @@ class Uploads {
}
//CHECK FOR TX - BLOCK TO BE MINED
waitForReceipt(hash, cb) {
- web3.eth.getTransactionReceipt(hash, function(err, receipt) {
+ web3.eth.getTransactionReceipt(hash, function (err, receipt) {
//document.getElementById("mining-status-message").textContent = "In Progress";
$miningMessage.innerText = "Waiting For Transaction Confirmation";
- web3.eth.getBlock('latest', function(e, res) {
+ web3.eth.getBlock('latest', function (e, res) {
if (!e) {
document.getElementById("block-height").textContent = res.number;
}
@@ -323,7 +326,7 @@ class Uploads {
cb(receipt);
}
} else {
- setTimeout(function() {
+ setTimeout(function () {
EthoUploads.waitForReceipt(hash, cb);
}, 10000);
}
@@ -344,15 +347,15 @@ class Uploads {
console.log("Private Key: " + privateKey);
console.log("Hosting Address: " + hostingAddress + " Removal Hash: " + contentHash);
web3.eth.accounts.signTransaction(tx, privateKey)
- .then(function(signedTransactionData) {
+ .then(function (signedTransactionData) {
console.log("Signed TX Data: " + signedTransactionData.rawTransaction);
- web3.eth.sendSignedTransaction(signedTransactionData.rawTransaction, function(error, result) {
+ web3.eth.sendSignedTransaction(signedTransactionData.rawTransaction, function (error, result) {
if (!error) {
if (result) {
$('#minedBlockTrackerModal').iziModal();
$('#minedBlockTrackerModal').iziModal('open');
$miningMessage = document.querySelector('.mining-message')
- EthoUploads.waitForReceipt(result, function(receipt) {
+ EthoUploads.waitForReceipt(result, function (receipt) {
console.log("Transaction Has Been Mined: " + receipt);
$('#minedBlockTrackerModal').iziModal('close');
EthoUploads.updateContractTable();
@@ -370,10 +373,10 @@ class Uploads {
to: GlobalControllerContractAddress,
from: GlobalUserAddress,
};
- pinRemoving.methods.RemoveHostingContract(hostingAddress, contentHash).send(tx, function(error, result) {
+ pinRemoving.methods.RemoveHostingContract(hostingAddress, contentHash).send(tx, function (error, result) {
if (!error) {
if (result) {
- EthoUploads.waitForReceipt(result, function(receipt) {
+ EthoUploads.waitForReceipt(result, function (receipt) {
console.log("Transaction Has Been Mined: " + receipt);
$('#minedBlockTrackerModal').iziModal('close');
EthoUploads.updateContractTable();
@@ -394,14 +397,14 @@ class Uploads {
var hostingContracts = "";
var TotalContractCount = 0;
var blockHeight = 0;
- web3.eth.getBlockNumber(function(error, result) {
+ web3.eth.getBlockNumber(function (error, result) {
if (!error) {
blockHeight = result;
} else
console.error(error);
});
var ethoFSAccounts = new web3.eth.Contract(GlobalControllerABI, GlobalControllerContractAddress);
- ethoFSAccounts.methods.GetUserAccountTotalContractCount(web3.eth.defaultAccount).call(function(error, result) {
+ ethoFSAccounts.methods.GetUserAccountTotalContractCount(web3.eth.defaultAccount).call(function (error, result) {
TotalContractCount = result;
GlobalTotalContractCount = result;
const getContractData = async (ethoFSAccounts, account, TotalContractCount) => {
@@ -528,7 +531,6 @@ class Uploads {
document.getElementById("contract-cost").innerHTML = EthoUploads.round(GlobalContractCost, 2);
document.getElementById("upload-hash").innerHTML = GlobalUploadHash;
document.getElementById("upload-size").innerHTML = GlobalUploadSizeMB;
- GlobalContractCost = 0;
return;
}
//CHECK FOR PROPAGATED & AVAILABLE DATA ON NETWORK - FINAL VERIFICATION FOR UPLOADED CONTENT
@@ -724,15 +726,15 @@ class Uploads {
var privateKey = '0x' + GlobalPrivateKey;
console.log("Private Key: " + privateKey);
web3.eth.accounts.signTransaction(tx, privateKey)
- .then(function(signedTransactionData) {
+ .then(function (signedTransactionData) {
console.log("Signed TX Data: " + signedTransactionData.rawTransaction);
- web3.eth.sendSignedTransaction(signedTransactionData.rawTransaction, function(error, result) {
+ web3.eth.sendSignedTransaction(signedTransactionData.rawTransaction, function (error, result) {
if (!error) {
if (result) {
$("#contractDetailModal").iziModal("close");
$("#minedBlockTrackerModal").iziModal();
$("#minedBlockTrackerModal").iziModal("open");
- EthoUploads.waitForReceipt(result, function(receipt) {
+ EthoUploads.waitForReceipt(result, function (receipt) {
console.log("Transaction Has Been Mined: " + receipt);
$("#minedBlockTrackerModal").iziModal("close");
EthoUploads.updateContractTable();
@@ -747,13 +749,13 @@ class Uploads {
});
} else {
- ethoFSController.methods.ExtendContract(GlobalHostingContractDetailArray['address'], extensionDuration).send(transactionObject, function(error, result) {
+ ethoFSController.methods.ExtendContract(GlobalHostingContractDetailArray['address'], extensionDuration).send(transactionObject, function (error, result) {
if (!error) {
if (result) {
$('#contractDetailModal').iziModal('close');
$("#minedBlockTrackerModal").iziModal();
$('#minedBlockTrackerModal').iziodal('open');
- EthoUploads.waitForReceipt(result, function(receipt) {
+ EthoUploads.waitForReceipt(result, function (receipt) {
console.log("Transaction Has Been Mined: " + receipt);
$('#minedBlockTrackerModal').iziModal('close');
EthoUploads.updateContractTable();
@@ -783,7 +785,7 @@ class Uploads {
var availableStorageTotal = 0;
var activeHistory = 0;
var nodeCounter = 0;
- splitMessage.forEach(function(nodeMessage, index) {
+ splitMessage.forEach(function (nodeMessage, index) {
var nodeSplitMessage = nodeMessage.split(":");
activeHistory = Number(nodeSplitMessage[5]);
if (activeHistory >= 5) {
@@ -818,23 +820,23 @@ class Uploads {
function calculateStorageAverages(usedStorageArray, availableStorageArray, nodeCountArray) {
var sumAvailableStorage = 0;
- availableStorageArray.forEach(function(value, index) {
+ availableStorageArray.forEach(function (value, index) {
sumAvailableStorage += value;
if (index == (availableStorageArray.length - 1)) {
averageAvailableStorageTotal = (sumAvailableStorage / availableStorageArray.length);
var element = document.getElementById("nodestorage");
- if (typeof(element) != 'undefined' && element != null) {
+ if (typeof (element) != 'undefined' && element != null) {
element.textContent = (EthoUploads.round(2 + ((averageAvailableStorageTotal) / 1000000), 1)) + "TB";
}
}
});
var sumNodeCount = 0;
- nodeCountArray.forEach(function(value, index) {
+ nodeCountArray.forEach(function (value, index) {
sumNodeCount += value;
if (index == (nodeCountArray.length - 1)) {
var averageNodeCount = (sumNodeCount / nodeCountArray.length) + 19;
var element = document.getElementById("nodecount");
- if (typeof(element) != 'undefined' && element != null) {
+ if (typeof (element) != 'undefined' && element != null) {
element.textContent = (EthoUploads.round(averageNodeCount, 0));
}
}
@@ -912,7 +914,8 @@ class Uploads {
}
resetFileTable() {
- if (typeof($fileHistory) != 'undefined' && $fileHistory != null) {
+ document.getElementById("fileUploadButton").value = null;
+ if (typeof ($fileHistory) != 'undefined' && $fileHistory != null) {
while ($fileHistory.hasChildNodes()) {
$fileHistory.removeChild($fileHistory.firstChild);
}
@@ -936,7 +939,7 @@ class Uploads {
for (var i = 0; i < MainFileArray.length; i++) {
const streamFiles = (files) => {
const stream = node.addReadableStream()
- stream.on('data', function(data) {
+ stream.on('data', function (data) {
GlobalHashArray.push(`${data.hash}`);
GlobalSizeArray.push(`${data.size}`);
GlobalPathArray.push(`${data.path}`);
@@ -975,8 +978,8 @@ class Uploads {
console.log("Sending Immediate Pin Request: " + MainHashArray[i]);
EthoUploads.publishImmediatePin(MainHashArray[i]);
}
- setTimeout(function() {
- hashVerificationArray.forEach(function(hash) {
+ setTimeout(function () {
+ hashVerificationArray.forEach(function (hash) {
verifyDataUpload(hash);
});
}, 5000);
@@ -1006,7 +1009,7 @@ class Uploads {
} else {
var confirmationPercentage = Math.ceil((hashConfirmationCount / hashVerificationArray.length) * 100);
if (confirmationPercentage < 99) {
- setTimeout(function() {
+ setTimeout(function () {
verifyDataUpload(hash)
}, 2000);
} else {
@@ -1018,7 +1021,7 @@ class Uploads {
console.log("Data Confirmation Error: " + error.status);
var confirmationPercentage = Math.ceil((hashConfirmationCount / hashVerificationArray.length) * 100);
if (confirmationPercentage < 99) {
- setTimeout(function() {
+ setTimeout(function () {
verifyDataUpload(hash)
}, 2000);
} else {
@@ -1073,9 +1076,9 @@ class Uploads {
var privateKey = '0x' + GlobalPrivateKey;
console.log("Private Key: " + privateKey);
web3.eth.accounts.signTransaction(tx, privateKey)
- .then(function(signedTransactionData) {
+ .then(function (signedTransactionData) {
console.log("Signed TX Data: " + signedTransactionData.rawTransaction);
- web3.eth.sendSignedTransaction(signedTransactionData.rawTransaction, function(error, result) {
+ web3.eth.sendSignedTransaction(signedTransactionData.rawTransaction, function (error, result) {
if (!error) {
if (result) {
console.log("Result: " + result);
@@ -1083,7 +1086,7 @@ class Uploads {
$('#minedBlockTrackerModal').iziModal('open');
$miningMessage = document.querySelector('.mining-message')
$('#preparingUploadModal').iziModal('close');
- EthoUploads.waitForReceipt(result, function(receipt) {
+ EthoUploads.waitForReceipt(result, function (receipt) {
console.log("Transaction Has Been Mined: " + receipt);
$('#minedBlockTrackerModal').iziModal('close');
$('#nodeModal').iziModal('close');
@@ -1100,14 +1103,14 @@ class Uploads {
});
});
} else {
- pinAdding.methods.AddNewContract(GlobalMainContentHash, HostingContractName, HostingContractDuration, pinSize, pinSize, contentHashString, contentPathString).send(transactionObject, function(error, result) {
+ pinAdding.methods.AddNewContract(GlobalMainContentHash, HostingContractName, HostingContractDuration, pinSize, pinSize, contentHashString, contentPathString).send(transactionObject, function (error, result) {
if (!error) {
if (result) {
$('#minedBlockTrackerModal').iziModal();
$('#minedBlockTrackerModal').iziModal('open');
$miningMessage = document.querySelector('.mining-message')
$('#preparingUploadModal').iziModal('close');
- EthoUploads.waitForReceipt(result, function(receipt) {
+ EthoUploads.waitForReceipt(result, function (receipt) {
console.log("Transaction Has Been Mined: " + receipt);
$('#minedBlockTrackerModal').iziModal('close');
$('#nodeModal').iziModal('close');
@@ -1145,6 +1148,13 @@ class Uploads {
MainFileArray = new Array();
GlobalUploadSize = 0;
GlobalUploadSizeMB = 0;
+ GlobalMainHashArray = new Array();
+ GlobalMainPathArray = new Array();
+ GlobalHashArray = new Array();
+ GlobalPathArray = new Array();
+ GlobalUploadHash = "";
+ GlobalUploadPath = "";
+ GlobalContractCost = 0;
}
updateAnalyzeProgress(width) {
@@ -1159,153 +1169,6 @@ class Uploads {
elem.innerHTML = width * 1 + '%';
}
- onFileUpload(event) {
- event.preventDefault()
- document.getElementById("upload-hash").textContent = "ANALYZING UPLOAD DATA";
- document.getElementById("upload-confirm-button").style.visibility = "hidden";
- MainFileArray.push([]);
- let dirSelected = event.target.files;
- let dirName = dirSelected[0].name;
- let dirPath = dirSelected[0].path;
- var streamCompareCount = 0;
- var totalUploadItems = 0;
- readDirectoryContents(dirPath);
-
- function readDirectoryContents(directory) {
- console.log("Directory Path: " + directory);
- fs.readdir(directory, function(err, filesUploaded) {
- if (!err) {
- for (let i = 0; filesUploaded.length > i; i++) {
- handleItem(filesUploaded[i], directory);
- }
- } else {
- console.log("File Upload Error: " + err);
- }
- });
- }
-
- function handleItem(filename, relativePath) {
- var filepath = relativePath.concat(pathSymbol, filename);
- fs.stat(filepath, function(err, stats) {
- if (!err) {
- if (stats.isDirectory()) {
- readDirectoryContents(filepath)
- } else {
- streamCompareCount++;
- totalUploadItems++;
- console.log("File Path: " + filepath);
- fs.readFile(filepath, function(err, file) {
- var updatedPath = filepath.replace(dirPath, dirName);
- var filetowrite = {
- path: updatedPath,
- content: file
- };
- var filename = updatedPath;
- MainFileArray[MainFileArray.length - 1].push(filetowrite);
- GlobalUploadSize += Number(stats.size);
- GlobalUploadSizeMB += Number(stats.size) / 1000000;
- fileSize += Number(stats.size) / 1000000;
- var totalUploadSizeMB = GlobalUploadSizeMB;
- EthoUploads.appendFile(updatedPath, filename, stats.size, null);
- console.log("Path: " + filepath + " Size: " + stats.size + " Total Size: " + GlobalUploadSize);
- document.getElementById("upload-size").textContent = totalUploadSizeMB;
- EthoUploads.contractDurationChange(document.getElementById('contract-duration'));
- EthoUploads.updateAnalyzeProgress(((totalUploadItems - streamCompareCount) / totalUploadItems));
- if (streamCompareCount == 0) {
- document.getElementById("upload-hash").textContent = "READY FOR UPLOAD";
- document.getElementById("upload-confirm-button").style.visibility = "visible";
- }
- });
- }
- } else {
- console.log("File Stats Error: " + err);
- }
- });
- }
- }
- onDrop(event) {
- console.log(event);
- MainFileArray.push([]);
- document.getElementById("upload-hash").textContent = "ANALYZING UPLOAD DATA";
- document.getElementById("upload-confirm-button").style.visibility = "hidden";
- fileSize = 0;
- EthoUploads.resetProgress();
- EthoUploads.onDragLeave()
- event.preventDefault()
- if (GlobalUploadHash != "" && GlobalUploadPath != "") {
- GlobalMainHashArray.push(GlobalUploadHash);
- GlobalMainPathArray.push(GlobalUploadPath);
- }
- const dt = event.dataTransfer
- //const filesDropped = dt.files
- const itemsDropped = dt.items
-
- function readFileContents(file) {
- return new Promise((resolve) => {
- const reader = new window.FileReader()
- reader.onload = (event) => resolve(event.target.result)
- reader.readAsArrayBuffer(file)
- })
- }
- var totalItemCount = 0;
- var streamCompareCount = 0;
-
- function initialHandleItems(items) {
- const files = [];
- totalItemCount = items.length;
- streamCompareCount = items.length;
- for (var item of items) {
- var awaitHandleEntry = handleEntry(item.webkitGetAsEntry());
- }
-
- function handleEntry(entry) {
- if (entry.isFile) {
- getFile(entry);
-
- function getFile(entry) {
- document.getElementById("upload-hash").textContent = "ANALYZING UPLOAD DATA";
- document.getElementById("upload-confirm-button").style.visibility = "hidden";
- entry.file(function(file) {
- readFileContents(file)
- .then((buffer) => {
- var filePath = entry.fullPath;
- var filetowrite = {
- path: entry.fullPath,
- content: Buffer.from(buffer)
- };
- MainFileArray[MainFileArray.length - 1].push(filetowrite);
- GlobalUploadSize += Number(file.size);
- fileSize += Number(file.size);
- var totalUploadSizeMB = GlobalUploadSize / 1000000;
- EthoUploads.appendFile(entry.fullPath, entry.name, file.size, null);
- document.getElementById("upload-size").textContent = totalUploadSizeMB;
- EthoUploads.contractDurationChange(document.getElementById('contract-duration'));
- streamCompareCount--;
- EthoUploads.updateAnalyzeProgress(((totalItemCount - streamCompareCount) / totalItemCount));
- if (streamCompareCount == 0) {
- document.getElementById("upload-hash").textContent = "READY FOR UPLOAD";
- document.getElementById("upload-confirm-button").style.visibility = "visible";
- }
- });
- });
- }
-
- } else if (entry.isDirectory) {
- let directoryReader = entry.createReader();
- directoryReader.readEntries(function(entries) {
- streamCompareCount += entries.length - 1;
- totalItemCount += entries.length - 1;
- entries.forEach(function(newEntry) {
- handleEntry(newEntry);
- });
- });
- }
- }
-
- }
- initialHandleItems(event.dataTransfer.items);
- }
-
connectToPeer(event) {
const multiaddr = $multiaddrInput.value
@@ -1409,7 +1272,7 @@ class Uploads {
}
- renderUploads() {
+ renderUploads(ethofsRenderFlag) {
EthoMainGUI.renderTemplate("uploads.html", {});
$(document).trigger("render_uploads");
}
@@ -1419,19 +1282,169 @@ class Uploads {
EthoUploads = new Uploads();
-$(document).on("render_uploads", function() {
+function onFileUpload(event) {
+ event.preventDefault()
+ GlobalUploadSize = 0;
+ GlobalUploadSizeMB = 0;
+ document.getElementById("upload-hash").textContent = "ANALYZING UPLOAD DATA";
+ document.getElementById("upload-confirm-button").style.visibility = "hidden";
+ MainFileArray.push([]);
+ let dirSelected = event.target.files;
+ let dirName = dirSelected[0].name;
+ let dirPath = dirSelected[0].path;
+ var streamCompareCount = 0;
+ var totalUploadItems = 0;
+ readDirectoryContents(dirPath);
+
+ function readDirectoryContents(directory) {
+ console.log("Directory Path: " + directory);
+ fs.readdir(directory, function (err, filesUploaded) {
+ if (!err) {
+ for (let i = 0; filesUploaded.length > i; i++) {
+ handleItem(filesUploaded[i], directory);
+ }
+ } else {
+ console.log("File Upload Error: " + err);
+ }
+ });
+ }
+
+ function handleItem(filename, relativePath) {
+ var filepath = relativePath.concat(pathSymbol, filename);
+ fs.stat(filepath, function (err, stats) {
+ if (!err) {
+ if (stats.isDirectory()) {
+ readDirectoryContents(filepath)
+ } else {
+ streamCompareCount++;
+ totalUploadItems++;
+ console.log("File Path: " + filepath);
+ fs.readFile(filepath, function (err, file) {
+ var updatedPath = filepath.replace(dirPath, dirName);
+ var filetowrite = {
+ path: updatedPath,
+ content: file
+ };
+ var filename = updatedPath;
+ MainFileArray[MainFileArray.length - 1].push(filetowrite);
+ GlobalUploadSize += Number(stats.size);
+ GlobalUploadSizeMB += Number(stats.size) / 1000000;
+ fileSize += Number(stats.size) / 1000000;
+ var totalUploadSizeMB = GlobalUploadSizeMB;
+ EthoUploads.appendFile(updatedPath, filename, stats.size, null);
+ console.log("Path: " + filepath + " Size: " + stats.size + " Total Size: " + GlobalUploadSize);
+ document.getElementById("upload-size").textContent = totalUploadSizeMB;
+ EthoUploads.contractDurationChange(document.getElementById('contract-duration'));
+ EthoUploads.updateAnalyzeProgress(((totalUploadItems - streamCompareCount) / totalUploadItems));
+ if (streamCompareCount == 0) {
+ document.getElementById("upload-hash").textContent = "READY FOR UPLOAD";
+ document.getElementById("upload-confirm-button").style.visibility = "visible";
+ }
+ });
+ }
+ } else {
+ console.log("File Stats Error: " + err);
+ }
+ });
+ }
+}
+
+function onDrop(event) {
+ console.log(event);
+ MainFileArray.push([]);
+ document.getElementById("upload-hash").textContent = "ANALYZING UPLOAD DATA";
+ document.getElementById("upload-confirm-button").style.visibility = "hidden";
+ fileSize = 0;
+ EthoUploads.resetProgress();
+ EthoUploads.onDragLeave()
+ event.preventDefault()
+ if (GlobalUploadHash != "" && GlobalUploadPath != "") {
+ GlobalMainHashArray.push(GlobalUploadHash);
+ GlobalMainPathArray.push(GlobalUploadPath);
+ }
+ const dt = event.dataTransfer
+ //const filesDropped = dt.files
+ const itemsDropped = dt.items
+
+ function readFileContents(file) {
+ return new Promise((resolve) => {
+ const reader = new window.FileReader()
+ reader.onload = (event) => resolve(event.target.result)
+ reader.readAsArrayBuffer(file)
+ })
+ }
+ var totalItemCount = 0;
+ var streamCompareCount = 0;
+
+ function initialHandleItems(items) {
+ const files = [];
+ totalItemCount = items.length;
+ streamCompareCount = items.length;
+ for (var item of items) {
+ var awaitHandleEntry = handleEntry(item.webkitGetAsEntry());
+ }
+
+ function handleEntry(entry) {
+ if (entry.isFile) {
+ getFile(entry);
+
+ function getFile(entry) {
+ document.getElementById("upload-hash").textContent = "ANALYZING UPLOAD DATA";
+ document.getElementById("upload-confirm-button").style.visibility = "hidden";
+ entry.file(function (file) {
+ readFileContents(file)
+ .then((buffer) => {
+ var filePath = entry.fullPath;
+ var filetowrite = {
+ path: entry.fullPath,
+ content: Buffer.from(buffer)
+ };
+ MainFileArray[MainFileArray.length - 1].push(filetowrite);
+ GlobalUploadSize += Number(file.size);
+ fileSize += Number(file.size);
+ var totalUploadSizeMB = GlobalUploadSize / 1000000;
+ EthoUploads.appendFile(entry.fullPath, entry.name, file.size, null);
+ document.getElementById("upload-size").textContent = totalUploadSizeMB;
+ EthoUploads.contractDurationChange(document.getElementById('contract-duration'));
+ streamCompareCount--;
+ EthoUploads.updateAnalyzeProgress(((totalItemCount - streamCompareCount) / totalItemCount));
+ if (streamCompareCount == 0) {
+ document.getElementById("upload-hash").textContent = "READY FOR UPLOAD";
+ document.getElementById("upload-confirm-button").style.visibility = "visible";
+ }
+ });
+ });
+ }
+
+ } else if (entry.isDirectory) {
+ let directoryReader = entry.createReader();
+ directoryReader.readEntries(function (entries) {
+ streamCompareCount += entries.length - 1;
+ totalItemCount += entries.length - 1;
+ entries.forEach(function (newEntry) {
+ handleEntry(newEntry);
+ });
+ });
+ }
+ }
+
+ }
+ initialHandleItems(event.dataTransfer.items);
+}
+
+$(document).on("render_uploads", function () {
$('#privatekeytable').hide();
$('#walletpasswordtable').hide();
if (isFullySynced) {
- (function($, _M) {
+ (function ($, _M) {
M.toast({
html: 'Node is fully synced and operational.',
displayLength: 10000
});
}(jQuery, M));
} else {
- (function($, _M) {
+ (function ($, _M) {
M.toast({
html: 'Node is still syncing. Please do not attempt to use the wallet or ethoFS upload system.',
displayLength: 10000
@@ -1450,188 +1463,6 @@ $(document).on("render_uploads", function() {
EthoUploads.beforeLoginState();
EthoUploads.checkExistingLogin(GlobalPrivateKey);
-
- $(document).on("dragenter", "#drag-container", function(event) {
- EthoUploads.onDragEnter(event);
- });
-
- $(document).on("dragover", "#drag-container", function(event) {
- EthoUploads.onDragEnter(event);
- });
-
- $(document).on("drop", "#drag-container", function(event) {
- EthoUploads.onDrop(event.originalEvent);
- });
-
- $(document).on("dragleave", "#drag-container", function(event) {
- EthoUploads.onDragLeave(event);
- });
-
- $(document).on("change", "#fileUploadButton", function(event) {
- EthoUploads.onFileUpload(event);
- });
-
- $(document).on("click", "#main-login-button", function(event) {
- GlobalPrivateKey = switchFlag;
- EthoUploads.checkLogin();
-
- $('#ethofsLoginModal').iziModal({
- onOpened: function() {
- console.log("Login Setup Opened ..");
- var addressBook = EthoDatatabse.getWallets();
- console.log("Getting Address List...");
-
- $('#sendFromAddress').empty();
- $('#sendFromAddress').append(new Option('Login With Private Key', 'privatekey'))
- $('#privatekeytable').show();
- var option = $(this).find("option:selected").text();
- $("#sendFromAddressName").html(option.trim());
-
- for (var key in addressBook.names) {
- if (addressBook.names.hasOwnProperty(key)) {
- $('#sendFromAddress').append(new Option(addressBook.names[key], key))
- }
- }
-
- $("#sendFromAddress").on("change", function() {
- var optionText = $(this).find("option:selected").text();
- var optionTextValue = $(this).find("option:selected").val();
- $("#sendFromAddressName").html(optionText.trim());
- console.log("Address Name: " + optionText)
- console.log("Address: " + optionText)
- if (optionTextValue == 'privatekey') {
- privateKeyLogin = true;
- $("#sendFromAddressValue").hide();
- $('#walletpasswordtable').hide();
- $('#privatekeytable').show();
- } else {
- privateKeyLogin = false;
- $("#sendFromAddressValue").show();
- $('#privatekeytable').hide();
- $('#walletpasswordtable').show();
- $("#sendFromAddressValue").html(optionTextValue.trim());
- loginAddress = optionTextValue.trim();
- }
- });
- },
- onOpening: function(modal) {
- console.log("Opening Login Setup..");
- $("#sendFromAddressValue").hide();
- $('#walletpasswordtable').hide();
- $('#privatekeytable').hide();
- (function($, _M) {
- M.toast({
- html: 'warning If your wallet has a default name e.g: Account 1, you will not be able to select it.',
- displayLength: 10000,
- classes: 'warning'
- });
- }(jQuery, M));
- }
- });
- $('#ethofsLoginModal').iziModal('open');
- });
-
- $(document).on("click", "#ethofs-login-button", function(event) {
- if (privateKeyLogin == true) {
- GlobalPrivateKey = document.getElementById('privatekey').value;
- console.log("Global Private Key: " + GlobalPrivateKey);
- EthoUploads.ethofsLogin(GlobalPrivateKey);
- } else {
- loginPassword = document.getElementById('walletpassword').value;
- loginAddress = $("#sendFromAddress").find("option:selected").val().trim();
- var accountsPath = getKeyStoreLocation();
- var keyObject = keythereum.importFromFile(loginAddress, accountsPath);
- var privateKey = keythereum.recover(loginPassword, keyObject);
- var key = privateKey.toString('hex');
- GlobalPrivateKey = key;
- console.log("Global Private Key: " + GlobalPrivateKey);
- EthoUploads.ethofsLogin(GlobalPrivateKey);
- }
-
- });
-
- $(document).on("click", "#main-upload-button", function(event) {
- $('#defaultModal').iziModal();
- $('#defaultModal').iziModal('open');
- EthoUploads.resetUploadProcess();
- });
-
- $(document).on("click", "#defaultModal-close", function(event) {
- $('#defaultModal').iziModal('close');
- EthoUploads.resetUploadSystem();
- EthoUploads.resetUploadModal();
- });
-
- $(document).on("click", "#defaultModal-next", function(event) {
- $('#defaultModal2').iziModal({
- onOpening: function() {
- EthoUploads.resetFileTable();
- }
- });
-
- $('#defaultModal2').iziModal('open');
- $('#defaultModal').iziModal('close');
- EthoUploads.resetUploadProcess();
- });
-
- $(document).on("click", "#defaultModal2-close", function(event) {
- $('#defaultModal2').iziModal('close');
- EthoUploads.resetUploadSystem();
- EthoUploads.resetUploadModal();
- });
-
- $(document).on("click", "#ethofs-registration-button", function(event) {
- EthoUploads.AddNewUser(document.getElementById('username').value);
- });
-
- $(document).on("click", "#confirm-files-button", function(event) {
- $('#defaultModal3').iziModal();
- $('#defaultModal3').iziModal('open');
- document.getElementById("contract-cost").innerHTML = EthoUploads.round(GlobalContractCost, 2);
- $('#defaultModal2').iziModal('close');
- document.getElementById("upload-hash").textContent = "READY FOR UPLOAD";
- document.getElementById("upload-confirm-button").style.visibility = "visible";
- EthoUploads.resetUploadModal();
- });
-
- $(document).on("click", "#defaultModal3-close", function(event) {
- $('#defaultModal3').iziModal('close');
- EthoUploads.resetUploadSystem();
- EthoUploads.resetUploadModal();
- });
-
- $(document).on("click", "#upload-confirm-button", function(event) {
- $('#preparingUploadModal').iziModal();
- $('#preparingUploadModal').iziModal('open');
- $('#defaultModal3').iziModal('close');
- EthoUploads.startUploadProcess();
- });
-
- $(document).on("click", "#tracker-close-button", function(event) {
- EthoUploads.updateContractTable();
- });
-
- $(document).on("click", "#upload-check-button", function(event) {
- EthoUploads.finishUploadModal();
- });
-
- $(document).on("click", "#contract-extension-button", function(event) {
- EthoUploads.contractExtensionConfirmation();
- });
-
- $(document).on("click", "#reset-table-button", function(event) {
- $("#contractDetailModal").iziModal("close");
- EthoUploads.resetContractDetailTableRows();
- });
-
- $(document).on("change", "#contract-duration", function(event) {
- EthoUploads.contractDurationChange(document.getElementById('contract-duration'));
- });
-
- $(document).on("change", "#extend-contract", function(event) {
- EthoUploads.contractExtensionChange(document.getElementById('extend-contract'));
- });
-
fetch('https://api.coinmarketcap.com/v2/ticker/3452/').then(response => {
return response.json();
}).then(data => {
@@ -1649,3 +1480,203 @@ function getKeyStoreLocation() {
return path.join(process.env.APPDATA, "Ether1");
}
}
+
+$(document).on("dragenter", "#drag-container", function (event) {
+ EthoUploads.onDragEnter(event);
+});
+
+$(document).on("dragover", "#drag-container", function (event) {
+ EthoUploads.onDragEnter(event);
+});
+
+$(document).on("drop", "#drag-container", function (event) {
+ onDrop(event.originalEvent);
+});
+
+$(document).on("dragleave", "#drag-container", function (event) {
+ EthoUploads.onDragLeave(event);
+});
+
+$(document).on("change", "#fileUploadButton", function (event) {
+ onFileUpload(event);
+});
+
+$(document).on("click", "#main-login-button", function (event) {
+ GlobalPrivateKey = switchFlag;
+ EthoUploads.checkLogin();
+
+ $('#ethofsLoginModal').iziModal({
+ onOpened: function () {
+ console.log("Login Setup Opened ..");
+ var addressBook = EthoDatatabse.getWallets();
+ console.log("Getting Address List...");
+
+ $('#sendFromAddress').empty();
+ $('#sendFromAddress').append(new Option('Login With Private Key', 'privatekey'))
+ $('#privatekeytable').show();
+ var option = $(this).find("option:selected").text();
+ $("#sendFromAddressName").html(option.trim());
+
+ for (var key in addressBook.names) {
+ if (addressBook.names.hasOwnProperty(key)) {
+ $('#sendFromAddress').append(new Option(addressBook.names[key], key))
+ }
+ }
+
+ $("#sendFromAddress").on("change", function () {
+ var optionText = $(this).find("option:selected").text();
+ var optionTextValue = $(this).find("option:selected").val();
+ $("#sendFromAddressName").html(optionText.trim());
+ console.log("Address Name: " + optionText)
+ console.log("Address: " + optionText)
+ if (optionTextValue == 'privatekey') {
+ privateKeyLogin = true;
+ $("#sendFromAddressValue").hide();
+ $('#walletpasswordtable').hide();
+ $('#privatekeytable').show();
+ } else {
+ privateKeyLogin = false;
+ $("#sendFromAddressValue").show();
+ $('#privatekeytable').hide();
+ $('#walletpasswordtable').show();
+ $("#sendFromAddressValue").html(optionTextValue.trim());
+ loginAddress = optionTextValue.trim();
+ }
+ });
+ },
+ onOpening: function (modal) {
+ console.log("Opening Login Setup..");
+ $("#sendFromAddressValue").hide();
+ $('#walletpasswordtable').hide();
+ $('#privatekeytable').hide();
+ (function ($, _M) {
+ M.toast({
+ html: 'warning If your wallet has a default name e.g: Account 1, you will not be able to select it.',
+ displayLength: 10000,
+ classes: 'warning'
+ });
+ }(jQuery, M));
+ }
+ });
+ $('#ethofsLoginModal').iziModal('open');
+});
+
+$(document).on("click", "#ethofs-login-button", function (event) {
+ if (privateKeyLogin == true) {
+ GlobalPrivateKey = document.getElementById('privatekey').value;
+ console.log("Global Private Key: " + GlobalPrivateKey);
+ EthoUploads.ethofsLogin(GlobalPrivateKey);
+ } else {
+ loginPassword = document.getElementById('walletpassword').value;
+ loginAddress = $("#sendFromAddress").find("option:selected").val().trim();
+ var accountsPath = getKeyStoreLocation();
+ var keyObject = keythereum.importFromFile(loginAddress, accountsPath);
+ var privateKey = keythereum.recover(loginPassword, keyObject);
+ var key = privateKey.toString('hex');
+ GlobalPrivateKey = key;
+ console.log("Global Private Key: " + GlobalPrivateKey);
+ EthoUploads.ethofsLogin(GlobalPrivateKey);
+ }
+
+});
+
+$(document).on("click", "#main-upload-button", function (event) {
+ $('#defaultModal').iziModal();
+ $('#defaultModal').iziModal('open');
+ EthoUploads.resetUploadProcess();
+});
+
+$(document).on("click", "#defaultModal-close", function (event) {
+ $('#defaultModal').iziModal('close');
+ EthoUploads.resetUploadSystem();
+ EthoUploads.resetUploadProcess();
+ EthoUploads.resetUploadModal();
+});
+
+$(document).on("click", "#defaultModal-next", function (event) {
+ $('#defaultModal2').iziModal({
+ onOpened: function () {
+ //EthoUploads.resetFileTable();
+ },
+ onOpening: function () {
+ EthoUploads.resetFileTable();
+ },
+ onClosed: function () {
+ //document.getElementById("fileUploadButton").value = "";
+ },
+ onHide: function () {
+ //document.getElementById("fileUploadButton").value = "";
+ }
+ });
+
+ $('#defaultModal2').iziModal('open');
+ $('#defaultModal').iziModal('close');
+ EthoUploads.resetUploadProcess();
+});
+
+$(document).on("click", "#defaultModal2-close", function (event) {
+ $('#defaultModal2').iziModal('close');
+ EthoUploads.resetUploadSystem();
+ EthoUploads.resetUploadProcess();
+ EthoUploads.resetUploadModal();
+});
+
+$(document).on("click", "#ethofs-registration-button", function (event) {
+ EthoUploads.AddNewUser(document.getElementById('username').value);
+});
+
+$(document).on("click", "#confirm-files-button", function (event) {
+ $('#defaultModal3').iziModal({
+ onClosed: function () {
+ document.getElementById("fileUploadButton").value = null;
+ },
+ onHidden: function () {
+ document.getElementById("fileUploadButton").value = null;
+ }
+ });
+ $('#defaultModal3').iziModal('open');
+ document.getElementById("contract-cost").innerHTML = EthoUploads.round(GlobalContractCost, 2);
+ $('#defaultModal2').iziModal('close');
+ document.getElementById("upload-hash").textContent = "READY FOR UPLOAD";
+ document.getElementById("upload-confirm-button").style.visibility = "visible";
+ EthoUploads.resetUploadModal();
+});
+
+$(document).on("click", "#defaultModal3-close", function (event) {
+ $('#defaultModal3').iziModal('close');
+ EthoUploads.resetUploadSystem();
+ EthoUploads.resetUploadProcess();
+ EthoUploads.resetUploadModal();
+});
+
+$(document).on("click", "#upload-confirm-button", function (event) {
+ $('#preparingUploadModal').iziModal();
+ $('#preparingUploadModal').iziModal('open');
+ $('#defaultModal3').iziModal('close');
+ EthoUploads.startUploadProcess();
+});
+
+$(document).on("click", "#tracker-close-button", function (event) {
+ EthoUploads.updateContractTable();
+});
+
+$(document).on("click", "#upload-check-button", function (event) {
+ EthoUploads.finishUploadModal();
+});
+
+$(document).on("click", "#contract-extension-button", function (event) {
+ EthoUploads.contractExtensionConfirmation();
+});
+
+$(document).on("click", "#reset-table-button", function (event) {
+ $("#contractDetailModal").iziModal("close");
+ EthoUploads.resetContractDetailTableRows();
+});
+
+$(document).on("change", "#contract-duration", function (event) {
+ EthoUploads.contractDurationChange(document.getElementById('contract-duration'));
+});
+
+$(document).on("change", "#extend-contract", function (event) {
+ EthoUploads.contractExtensionChange(document.getElementById('extend-contract'));
+});
\ No newline at end of file