ZencashOfficial/arizen

View on GitHub
app/create_wallet.js

Summary

Maintainability
A
0 mins
Test Coverage
// @flow
/*jshint esversion: 6 */
/*jslint node: true */
"use strict";

const electron = require("electron");
const {ipcRenderer} = electron;
const minLoginLen = 4;
const minPasswdLen = 8;

let usr = false;
let len = false;
let lett = false;
let capl = false;
let num = false;
let ide = false;
let spec = false;

const userWarningCreateWallet = "To make sure that you will never lose your wallet make sure to keep backup of your wallet(s) file. (.uawd or .awd + username + password). If you are not sure please refer to the Arizen manual for further information. By pressing 'I understand' you declare that you understand this. For further information please refer to the help menu of Arizen.";


function checkLoginInfo() {
    document.getElementById("btSubmit").disabled = !(usr && len && lett && capl && num && ide && spec);
}

function doCreateWallet() {
    document.getElementById("wallet_creation_info").innerHTML = "";
    document.getElementById("wallet_creation_info_area").style.display = "none";
    let resp = {
        username: document.getElementById("username").value,
        password: document.getElementById("pswd").value,
        walletPath: (document.getElementById("btWallet").files.length > 0) ? document.getElementById("btWallet").files[0].path : "",
        encrypted: (document.getElementById("old_username_area").style.display === "block"),
        olduser: document.getElementById("old_username").value,
        oldpass: document.getElementById("old_pswd").value
    };
    ipcRenderer.send("write-login-info", JSON.stringify(resp));
}

ipcRenderer.on("write-login-response", function (event, resp) {
    let data = JSON.parse(resp);

    if (data.response === "OK") {
        location.href = "./login.html";
        console.log("Wallet creation was successful - redirecting to login.html");
        alert(userWarningCreateWallet);
    } else {
        console.log("Wallet creation failed");
        document.getElementById("wallet_creation_info").innerHTML = data.msg;
        document.getElementById("wallet_creation_info_area").style.display = "block";
    }
});

function changeClass(objectid, newClass, oldClass) {
    /* FIXME: use classList.replace when electron uses chrome 61 */
    document.getElementById(objectid).classList.add(newClass);
    document.getElementById(objectid).classList.remove(oldClass);
}

function checkLogin() {
    // validate the length
    usr = (document.getElementById("username").value.length >= minLoginLen);
    if (usr) {
        changeClass("usrnm_length_info", "valid", "invalid");
    } else {
        changeClass("usrnm_length_info", "invalid", "valid");
    }
    checkLoginInfo();
}

function checkPasswd() {
    let pswd_val = document.getElementById("pswd").value;

    // validate the length
    len = (pswd_val.length >= minPasswdLen);
    if (len) {
        changeClass("length_info", "valid", "invalid");
    } else {
        changeClass("length_info", "invalid", "valid");
    }

    // validate letter
    lett = pswd_val.match(/[A-z]/);
    if (lett) {
        changeClass("letter_info", "valid", "invalid");
    } else {
        changeClass("letter_info", "invalid", "valid");
    }

    // validate capital letter
    capl = pswd_val.match(/[A-Z]/);
    if (capl) {
        changeClass("capital_info", "valid", "invalid");
    } else {
        changeClass("capital_info", "invalid", "valid");
    }

    // validate number
    num = pswd_val.match(/\d/);
    if (num) {
        changeClass("number_info", "valid", "invalid");
    } else {
        changeClass("number_info", "invalid", "valid");
    }

    // validate special character
    spec = pswd_val.match(/[\-!$%^&*()_+|~=`{}\[\]:";<>?,.\/@#]/);
    if (spec) {
        changeClass("special_info", "valid", "invalid");
    } else {
        changeClass("special_info", "invalid", "valid");
    }
    checkLoginInfo();
}

function checkPasswdAgain() {
    ide = (document.getElementById("pswd").value === document.getElementById("pswd_again").value) &&
        (document.getElementById("pswd").value !== "" || document.getElementById("pswd_again").value !== "");
    if (ide) {
        changeClass("identical_info", "valid", "invalid");
    } else {
        changeClass("identical_info", "invalid", "valid");
    }
    checkLoginInfo();
}

function selectColumn(username, pswd, pswd_again) {
    let username_info = "none";
    let pswd_info = "none";
    let pswd_identical_info = "none";
    if (username === true) {
        username_info = "block";
    } else if (pswd === true) {
        pswd_info = "block";
    } else if (pswd_again === true) {
        pswd_identical_info = "block";
    }
    document.getElementById("username_info").style.display = username_info;
    document.getElementById("pswd_info").style.display = pswd_info;
    document.getElementById("pswd_identical_info").style.display = pswd_identical_info;
}

function handleWalletFile() {
    let re = /(?:\.([^.]+))?$/;
    let targetStyle = "none";

    document.getElementById("btWalletFilename").textContent = document.getElementById("btWallet").value;
    if (re.exec(document.getElementById("btWallet").value)[1] === "awd") {
        targetStyle = "block";
    }
    document.getElementById("old_username_area").style.display = targetStyle;
}

function haveBackup() {
    let re = /(?:\.([^.]+))?$/;
    let targetStylePreviousBackup = "none";

    if(document.getElementById("have_previous_backup_checkbox").checked){
        targetStylePreviousBackup = "block";
        document.getElementById("btWalletFilename").textContent = document.getElementById("btWallet").value;
        if (re.exec(document.getElementById("btWallet").value)[1] === "awd") {
            document.getElementById("old_username_area").style.display = "block";
        }
    } else {
        targetStylePreviousBackup = "none";
        document.getElementById("old_username_area").style.display = "none";
    }

    document.getElementById("have_previous_backup").style.display = targetStylePreviousBackup;
}