openraas
Version:
Open Robot-as-a-Service Protocol - A comprehensive TypeScript library for building and consuming RaaS applications with X402 payment support on Solana
45 lines (44 loc) • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useWallet = useWallet;
exports.useRobot = useRobot;
const react_1 = require("react");
const client_1 = require("../client");
const wallet_1 = require("../client/wallet");
const web3_js_1 = require("@solana/web3.js");
function useWallet() {
const [wallet, setWallet] = (0, react_1.useState)(null);
const [publicKey, setPublicKey] = (0, react_1.useState)(null);
const connect = (0, react_1.useCallback)(async () => {
if (typeof window !== 'undefined' && window.solana) {
const solanaWallet = window.solana;
await solanaWallet.connect();
const pubKey = solanaWallet.publicKey.toString();
const keypair = web3_js_1.Keypair.generate();
const manager = new wallet_1.WalletManager(keypair);
setWallet(manager);
setPublicKey(pubKey);
}
else {
console.error('No Solana wallet found');
}
}, []);
return { wallet, publicKey, connect };
}
function useRobot(url, wallet) {
const [client, setClient] = (0, react_1.useState)(null);
const [connected, setConnected] = (0, react_1.useState)(false);
(0, react_1.useEffect)(() => {
if (url && wallet) {
const c = new client_1.RaaSClient(wallet);
c.connect(url).then(() => setConnected(true));
setClient(c);
}
}, [url, wallet]);
const sendCommand = (0, react_1.useCallback)((cmd) => {
if (client) {
client.sendCommand(cmd);
}
}, [client]);
return { client, connected, sendCommand };
}