Files
paperclip-wallet/renderer/maingui.js
matt 2c3ad62bc4 feat: Add comprehensive staking interface to PaperclipWallet
- Add staking RPC methods for validators, delegation, and rewards
- Implement complete staking UI with validator selection and delegation
- Add reward claiming functionality and validator creation interface
- Include professional staking dashboard with real-time data
- Integrate staking navigation into existing wallet interface
2025-06-17 14:38:53 -07:00

168 lines
4.3 KiB
JavaScript
Executable File

// In renderer process (web page).
const {
ipcRenderer
} = require("electron");
class MainGUI {
constructor() {
this.appState = "account";
}
changeAppState(newState) {
this.appState = newState;
$(".sidebarIconWrapper").removeClass("iconSelected");
switch (this.appState) {
case "account":
$("#mainNavBtnWalletsWrapper").addClass("iconSelected");
break;
case "addressBook":
$("#mainNavBtnAddressBoookWrapper").addClass("iconSelected");
break;
case "send":
$("#mainNavBtnSendWrapper").addClass("iconSelected");
break;
case "transactions":
$("#mainNavBtnTransactionsWrapper").addClass("iconSelected");
break;
case "staking":
$("#mainNavBtnStakingWrapper").addClass("iconSelected");
break;
case "markets":
$("#mainNavBtnMarketsWrapper").addClass("iconSelected");
break;
case "uploads":
$("#mainNavBtnUploadsWrapper").addClass("iconSelected");
break;
case "settings":
$("#mainNavBtnSettingsWrapper").addClass("iconSelected");
break;
case "about":
$("#mainNavBtnAboutWrapper").addClass("iconSelected");
break;
default: // do nothing for now
}
}
getAppState() {
return this.appState;
}
showGeneralError(errorText) {
$("#txtGeneralError").html(errorText);
// create and open the dialog
$("#dlgGeneralError").iziModal();
$("#dlgGeneralError").iziModal("open");
$("#btnGeneralErrorOK").click(function () {
$("#dlgGeneralError").iziModal("close");
});
}
showGeneralConfirmation(confirmText, callback) {
$("#txtGeneralConfirm").html(confirmText);
// create and open the dialog
$("#dlgGeneralConfirm").iziModal();
$("#dlgGeneralConfirm").iziModal("open");
$("#btnGeneralConfirmYes").click(function () {
$("#dlgGeneralConfirm").iziModal("close");
callback(true);
});
$("#btnGeneralConfirmNo").click(function () {
$("#dlgGeneralConfirm").iziModal("close");
callback(false);
});
}
showAboutDialog(infoData) {
$("#versionNumber").html(infoData.version);
// create and open the dialog
$("#dlgAboutInfo").iziModal();
$("#dlgAboutInfo").iziModal("open");
$("#urlOpenLicence, #urlOpenGitHub").off("click").on("click", function (even) {
event.preventDefault();
ipcRenderer.send("openURL", $(this).attr("href"));
});
$("#btnAboutInfoClose").off("click").on("click", function (even) {
$("#dlgAboutInfo").iziModal("close");
});
}
renderTemplate(template, data, container) {
var template = Handlebars.compile(ipcRenderer.sendSync("getTemplateContent", template));
if (!container) {
container = $("#mainContent");
}
container.empty();
container.html(template(data));
}
copyToClipboard(text) {
var $temp = $("<input>");
$("body").append($temp);
$temp.val(text).select();
document.execCommand("copy");
$temp.remove();
}
}
ipcRenderer.on("showAboutDialog", function (event, message) {
EthoMainGUI.showAboutDialog(message);
});
$("#mainNavBtnTransactions").click(function () {
EthoTransactions.clearFilter();
EthoMainGUI.changeAppState("transactions");
EthoTransactions.renderTransactions();
});
$("#mainNavBtnStaking").click(function () {
EthoMainGUI.changeAppState("staking");
PaperclipStaking.showStakingPage();
});
$("#mainNavBtnAddressBoook").click(function () {
EthoMainGUI.changeAppState("addressBook");
EthoAddressBook.renderAddressBook();
});
$("#mainNavBtnSend").click(function () {
EthoMainGUI.changeAppState("send");
EthoSend.renderSendState();
});
$("#mainNavBtnWallets").click(function () {
EthoMainGUI.changeAppState("account");
EthoWallets.renderWalletsState();
});
$("#mainNavBtnMarkets").click(function () {
EthoMainGUI.changeAppState("markets");
EthoMarkets.renderMarkets();
});
$("#mainNavBtnUploads").click(function () {
EthoMainGUI.changeAppState("uploads");
EthoUploads.renderUploads();
});
$("#mainNavBtnSettings").click(function () {
EthoMainGUI.changeAppState("settings");
EthoSettings.renderSettingsState();
});
$("#mainNavBtnAbout").click(function () {
EthoMainGUI.changeAppState("about");
EthoAbout.renderAbout();
});
EthoMainGUI = new MainGUI();