beeline-cli
Version:
A terminal wallet for the Hive blockchain - type, sign, rule the chain
138 lines • 6.5 kB
JavaScript
"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