99 lines
2.4 KiB
JavaScript
Executable File
99 lines
2.4 KiB
JavaScript
Executable File
const {app, dialog, ipcMain} = require("electron");
|
|
const admZip = require("adm-zip");
|
|
const path = require("path");
|
|
const fs = require("fs-extra");
|
|
const os = require("os");
|
|
|
|
class Accounts {
|
|
constructor() {}
|
|
|
|
getKeyStoreLocation() {
|
|
switch (os.type()) {
|
|
case "Darwin":
|
|
return path.join(os.homedir(), "Library", "Ether1", "keystore");
|
|
break;
|
|
default:
|
|
return path.join(process.env.APPDATA, "Ether1", "keystore");
|
|
}
|
|
}
|
|
|
|
exportAccounts() {
|
|
var savePath = dialog.showSaveDialog({
|
|
defaultPath: path.join(app.getPath("documents"), "accounts.zip")
|
|
});
|
|
|
|
if (savePath) {
|
|
const accPath = EthoAccounts.getKeyStoreLocation();
|
|
|
|
fs.readdir(accPath, function (err, files) {
|
|
var zip = new admZip();
|
|
|
|
for (let filePath of files) {
|
|
zip.addFile(filePath, fs.readFileSync(path.join(accPath, filePath)));
|
|
}
|
|
|
|
// store zip to path
|
|
zip.writeZip(savePath);
|
|
});
|
|
}
|
|
}
|
|
|
|
importAccounts(accountsFile) {
|
|
var extName = path.extname(accountsFile).toUpperCase();
|
|
const accPath = EthoAccounts.getKeyStoreLocation();
|
|
|
|
if (extName == ".ZIP") {
|
|
var zip = new admZip(accountsFile);
|
|
zip.extractAllTo(accPath, true);
|
|
return {success: true, text: "Accounts ware successfully imported."};
|
|
} else {
|
|
try {
|
|
fs.copySync(accountsFile, path.join(accPath, path.basename(accountsFile)));
|
|
return {success: true, text: "Account was successfully imported."};
|
|
} catch (err) {
|
|
return {success: false, text: err};
|
|
}
|
|
}
|
|
}
|
|
|
|
saveAccount(account) {
|
|
fs.writeFile(path.join(tEthoAccountshis.getKeyStoreLocation(), "0x" + account.address), JSON.stringify(account), "utf8", function () {
|
|
// file was written
|
|
});
|
|
}
|
|
}
|
|
|
|
ipcMain.on("exportAccounts", (event, arg) => {
|
|
EthoAccounts.exportAccounts();
|
|
});
|
|
|
|
ipcMain.on("importAccounts", (event, arg) => {
|
|
var openPath = dialog.showOpenDialog({
|
|
defaultPath: app.getPath("documents"),
|
|
filters: [
|
|
{
|
|
name: "archive",
|
|
extensions: ["zip"]
|
|
}, {
|
|
name: "json",
|
|
extensions: ["json"]
|
|
}, {
|
|
name: "All",
|
|
extensions: ["*"]
|
|
}
|
|
]
|
|
});
|
|
|
|
if (openPath) {
|
|
event.returnValue = EthoAccounts.importAccounts(openPath[0]);
|
|
} else {
|
|
event.returnValue = {};
|
|
}
|
|
});
|
|
|
|
ipcMain.on("saveAccount", (event, arg) => {
|
|
EthoAccounts.saveAccount(arg);
|
|
event.returnValue = true;
|
|
});
|
|
|
|
EthoAccounts = new Accounts(); |