protected-resources-list/assets/App.js

79 lines
2.0 KiB
JavaScript

import {JSONRPC} from "./jrpc.js";
const App = {
config: {},
networks: {},
RPC: JSONRPC
};
App.auth = async function () {
let authorized = await JSONRPC.__invoke("auth");
if (!authorized) {
do {
let pass = prompt("Password");
authorized = await JSONRPC.__invoke("auth", {
"password": pass
});
if (!authorized) {
alert("Wrong password");
}
} while (!authorized);
}
this.config = await JSONRPC.__invoke("getConfig");
this.networks = await JSONRPC.__invoke("getNetworks");
for (const key of this.config.plugins) {
$("body").append("<" + "script type='module' src='/plugins/" + key + "/plugin.js'><" + "/script>");
}
$("#loading").hide();
this.fillNetworks();
$("#panel").show();
let invalidNetworks = await JSONRPC.__invoke("getInvalidNetworks");
if (invalidNetworks.length > 0) {
$("body").append(`<span>There are invalid networks <BR>` + invalidNetworks.join("<BR>") + ` <BR></span>`);
}
}
App.fillNetworks = function () {
const that = this;
let proto = $("#net-table tr");
proto.detach();
for (const net in this.networks) {
let item = proto.clone();
item.find("input").prop('checked', this.config.networks.indexOf(net) !== -1).change(function () {
if ($(this).prop('checked')) {
that.config.networks.push(net);
} else {
that.config.networks = that.config.networks.filter(e => e !== net);
}
});
item.find("span").text(net);
$("#net-table").append(item);
}
}
App.render = async function () {
await this.auth();
$("#save").click(function () {
const self = $(this);
self.prop("disabled", true);
(async function () {
await JSONRPC.__invoke("setConfig", App.config);
alert("Config saved!");
self.prop("disabled", false);
})();
});
}
export {App};