UNPKG

beeline-cli

Version:

A terminal wallet for the Hive blockchain - type, sign, rule the chain

138 lines 6.5 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.WalletUI = WalletUI; const react_1 = __importStar(require("react")); const ink_1 = require("ink"); const Dashboard_js_1 = require("./screens/Dashboard.js"); const BalanceScreen_js_1 = require("./screens/BalanceScreen.js"); const TransferScreen_js_1 = require("./screens/TransferScreen.js"); const AccountsScreen_js_1 = require("./screens/AccountsScreen.js"); const Header_js_1 = require("./components/Header.js"); const Footer_js_1 = require("./components/Footer.js"); const crypto_js_1 = require("../utils/crypto.js"); function WalletUI({ mock = false, node }) { const [currentScreen, setCurrentScreen] = (0, react_1.useState)('dashboard'); const [keyManager, setKeyManager] = (0, react_1.useState)(null); const [isLoading, setIsLoading] = (0, react_1.useState)(true); const [error, setError] = (0, react_1.useState)(null); const { exit } = (0, ink_1.useApp)(); // Initialize KeyManager (0, react_1.useEffect)(() => { const initKeyManager = async () => { try { const km = new crypto_js_1.KeyManager(); await km.initialize(); setKeyManager(km); setIsLoading(false); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to initialize key manager'); setIsLoading(false); } }; initKeyManager(); }, []); // Global keyboard shortcuts (0, ink_1.useInput)((input, key) => { if (key.escape || (key.ctrl && input === 'c')) { exit(); return; } // Global navigation shortcuts if (key.ctrl) { switch (input) { case 'd': setCurrentScreen('dashboard'); break; case 'b': setCurrentScreen('balance'); break; case 't': setCurrentScreen('transfer'); break; case 'a': setCurrentScreen('accounts'); break; case 'q': exit(); break; } } }); if (isLoading) { return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", height: 24 }, react_1.default.createElement(Header_js_1.Header, { title: "BEELINE WALLET" }), react_1.default.createElement(ink_1.Box, { flexGrow: 1, justifyContent: "center", alignItems: "center" }, react_1.default.createElement(ink_1.Text, { color: "cyan" }, "\u280B Initializing wallet...")), react_1.default.createElement(Footer_js_1.Footer, null))); } if (error) { return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", height: 24 }, react_1.default.createElement(Header_js_1.Header, { title: "BEELINE WALLET" }), react_1.default.createElement(ink_1.Box, { flexGrow: 1, justifyContent: "center", alignItems: "center" }, react_1.default.createElement(ink_1.Text, { color: "red" }, "\u2716 Error: ", error)), react_1.default.createElement(Footer_js_1.Footer, null))); } if (!keyManager) { return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", height: 24 }, react_1.default.createElement(Header_js_1.Header, { title: "BEELINE WALLET" }), react_1.default.createElement(ink_1.Box, { flexGrow: 1, justifyContent: "center", alignItems: "center" }, react_1.default.createElement(ink_1.Text, { color: "yellow" }, "\u26A0 Key manager not available")), react_1.default.createElement(Footer_js_1.Footer, null))); } const renderScreen = () => { const commonProps = { keyManager, mock, node, setCurrentScreen }; switch (currentScreen) { case 'dashboard': return react_1.default.createElement(Dashboard_js_1.Dashboard, { ...commonProps }); case 'balance': return react_1.default.createElement(BalanceScreen_js_1.BalanceScreen, { ...commonProps }); case 'transfer': return react_1.default.createElement(TransferScreen_js_1.TransferScreen, { ...commonProps }); case 'accounts': return react_1.default.createElement(AccountsScreen_js_1.AccountsScreen, { ...commonProps }); default: return react_1.default.createElement(Dashboard_js_1.Dashboard, { ...commonProps }); } }; return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", height: 24 }, react_1.default.createElement(Header_js_1.Header, { title: "BEELINE WALLET", currentScreen: currentScreen }), react_1.default.createElement(ink_1.Box, { flexGrow: 1 }, renderScreen()), react_1.default.createElement(Footer_js_1.Footer, { currentScreen: currentScreen }))); } //# sourceMappingURL=WalletUI.js.map