Contractless-GUI-Wallet/frontend/js/modals_events.js

155 lines
4.6 KiB
JavaScript

const nodeInfoButton = document.querySelector("[data-node-info]");
const nodeModal = document.querySelector("[data-node-modal]");
const nodeCloseButton = document.querySelector("[data-node-close]");
const nftInstructionsOpenButton = document.querySelector("[data-nft-instructions-open]");
const nftInstructionsModal = document.querySelector("[data-nft-instructions-modal]");
const nftInstructionsCloseButton = document.querySelector("[data-nft-instructions-close]");
function toggleNodeModal(open) {
if (!nodeModal) {
return;
}
nodeModal.classList.toggle("hidden", !open);
if (open) {
startNodeInfoRefresh();
return;
}
stopNodeInfoRefresh();
}
function toggleNftInstructionsModal(open) {
nftInstructionsModal?.classList.toggle("hidden", !open);
}
nodeInfoButton?.addEventListener("click", () => toggleNodeModal(true));
nodeCloseButton?.addEventListener("click", () => toggleNodeModal(false));
nodeModal?.addEventListener("click", (event) => {
if (event.target === nodeModal) {
toggleNodeModal(false);
}
});
nftInstructionsOpenButton?.addEventListener("click", () => toggleNftInstructionsModal(true));
nftInstructionsCloseButton?.addEventListener("click", () => toggleNftInstructionsModal(false));
nftInstructionsModal?.addEventListener("click", (event) => {
if (event.target === nftInstructionsModal) {
toggleNftInstructionsModal(false);
}
});
document.querySelectorAll(".nft-hosting-links a").forEach((link) => {
link.addEventListener("click", async (event) => {
event.preventDefault();
const url = link.href;
const invoke = window.__TAURI__?.core?.invoke;
if (invoke) {
try {
await invoke("open_external_url", { url });
return;
} catch (error) {
console.error(error);
}
}
window.open(url, "_blank", "noopener,noreferrer");
});
});
document.addEventListener("keydown", (event) => {
if (event.key === "Escape") {
toggleNodeModal(false);
toggleNftInstructionsModal(false);
if (!walletSwitchModal?.classList.contains("hidden")) {
closeWalletSwitchModal();
}
if (!historyExportModal?.classList.contains("hidden")) {
toggleHistoryExportModal(false);
}
if (!backupKeyModal?.classList.contains("hidden")) {
closeBackupKeyModal(null);
}
}
});
topWalletListSelect?.addEventListener("change", () => {
const selectedWalletPath = topWalletListSelect.value;
if (!selectedWalletPath || selectedWalletPath === activeWalletPath) {
restoreActiveWalletSelection();
return;
}
openWalletSwitchModal(selectedWalletPath);
});
walletSwitchForm?.addEventListener("submit", async (event) => {
event.preventDefault();
if (!pendingWalletSwitch) {
closeWalletSwitchModal();
return;
}
const walletKey = walletSwitchKeyInput?.value || "";
if (!walletKey.trim()) {
setWalletSwitchMessage("Wallet key cannot be empty.", "error");
walletSwitchKeyInput?.focus();
return;
}
if (walletSwitchSubmit) {
walletSwitchSubmit.disabled = true;
}
setWalletSwitchMessage("Unlocking wallet...");
try {
const wallet = await loadWalletByPath(pendingWalletSwitch.walletPath, walletKey);
updateActiveWallet(wallet);
document.body.classList.add("wallet-open");
closeWalletSwitchModal({ restoreSelection: false });
await populateTopWalletList();
} catch (error) {
setWalletSwitchMessage(String(error), "error");
walletSwitchKeyInput?.focus();
} finally {
if (walletSwitchSubmit) {
walletSwitchSubmit.disabled = false;
}
}
});
walletSwitchCloseButton?.addEventListener("click", () => closeWalletSwitchModal());
walletSwitchCancelButton?.addEventListener("click", () => closeWalletSwitchModal());
walletSwitchModal?.addEventListener("click", (event) => {
if (event.target === walletSwitchModal) {
closeWalletSwitchModal();
}
});
broadcastNodeButton?.addEventListener("change", () => {
if (!walletLoaded) {
return;
}
if (currentView === "send" && !issueTokenForm?.classList.contains("hidden")) {
refreshIssueTokenList();
}
if (registrationRegistered) {
resetLatestDashboardTransactionsMemory();
stopLatestDashboardTransactionsPolling();
refreshReceivePage();
startRegisteredDashboardLoadSequence({ resetTransactions: true });
stopNetworkInfoRefresh();
updateNetworkInfoRefreshState();
if (!nodeModal?.classList.contains("hidden")) {
refreshNetworkInfo({ target: "node", force: true });
}
return;
}
refreshNetworkInfo({ target: "dashboard", force: !nodeModal?.classList.contains("hidden") });
refreshReceivePage();
checkWalletRegistrationOnce();
});
populateBroadcastNodeList();