UNPKG

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
"use strict"; 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 }; }