127.0.0.1:8000 budget / master src / js / pages / settings.js
master

Tree @master (Download .tar.gz)

settings.js @masterraw · history · blame

const utils = require('../utils');
const api = require('../utils/api');
const ui = require('../ui/common');
const logger_commands = require('../utils/logger');
const $ = require('jquery');
const pretty_bytes = require('pretty-bytes');

ui.init_new_password();

$("#settings").on("click", function() {
    $("#logs_size").text(pretty_bytes(logger_commands.logs_memory_usage()));
});

$("#save_display_name").on("click", function() {
    utils.validate.keys({
        display_name: $("#display_name").val().trim()
    }, [
        ["display_name", "Username cannot be empty"]
    ]).then(function(data) {
        return api.post("/account/update/display-name", data);
    }).then(function(data) {
        ui.show_banner(data);
    }).catch(api.handle_error_message);
});

$("#save_new_password").on("click", function() {
    utils.validate.keys({
        current_password: $("#current_password").val(),
        new_password: $("#new_password").val()
    }, [
        ["current_password", "Current password required"],
        ["new_password", "Passwords don't match", password => password === $("#confirm_password").val()],
        ["new_password", "You must appease the password strength meter", password => utils.validate.password(password).score]
    ]).then(function(data) {
        return api.post("/account/update/password", data);
    }).then(function(data) {
        ui.show_banner(data);
    }).catch(api.handle_error_message);
});

$("#export-button").on("click", async function() {
    await api.get('/export');
});

toggle_logger_settings_state(
    logger_commands.logs_enabled(),
    false
);
$("#toggle_logs").on("click", function() {
    toggle_logger_settings_state(
        logger_commands.toggle_logs(), true
    );
});

function toggle_logger_settings_state(enable, show_banner) {
    if (enable) {
        $("#logs_size").text(pretty_bytes(logger_commands.logs_memory_usage()));
        $("#logs_enabled_message").show();
        $("#logs_disabled_message").hide();
        $("#toggle_logs").text("Disable Logs");
        $("#export_logs").removeClass("disabled-button").on("click", function() {
            logger_commands.export_logs().then(function() {
                ui.show_banner({
                    message: "Logs Exported"
                });
                $("#logs_size").text(pretty_bytes(logger_commands.logs_memory_usage()));
            }).catch(api.handle_error_message);
        });
        if (show_banner) {
            ui.show_banner({
                message: "Logs Enabled"
            });
        }
    } else {
        $("#logs_enabled_message").hide();
        $("#logs_disabled_message").show();
        $("#toggle_logs").text("Enable Logs");
        $("#export_logs").addClass("disabled-button").off("click");
        if (show_banner) {
            ui.show_banner({
                message: "Logs Disabled"
            });
        }
    }
}