Кастомный React-хук, который управляет созданием и отзывом сессионных токенов, а также предоставляет основные методы для безопасной и удобной подписи и отправки транзакций.
useSessionKeyManager — это кастомный хук, который принимает AnchorWallet, Connection и Cluster в качестве аргументов и возвращает SessionWalletInterface. Этот хук управляет сессионными ключами и токенами, а также предоставляет методы для подписи и отправки транзакций.SessionWalletInterface состоит из следующих свойств и методов:
interface SessionWalletInterface { publicKey: PublicKey | null; // Public key associated with the session wallet ownerPublicKey: PublicKey | null; // The Publickey of the session token authority(The creator of the session token) isLoading: boolean; // Indicates whether the session wallet is loading error: string | null; // An error message, if any sessionToken: string | null; // Session token for the current session signTransaction: | (<T extends Transaction>( transaction: T, connection?: Connection, sendOptions?: SendTransactionOptions ) => Promise<T>) | undefined; // Sign a single transaction signAllTransactions: | (<T extends Transaction>( transactions: T[], connection?: Connection, sendOptions?: SendTransactionOptions ) => Promise<T[]>) | undefined; // Sign multiple transactions signMessage: ((message: Uint8Array) => Promise<Uint8Array>) | undefined; // Sign a message sendTransaction: | (<T extends Transaction>( transaction: T, connection?: Connection, options?: SendTransactionOptions ) => Promise<string>) | undefined; // Send a signed transaction signAndSendTransaction: | (<T extends Transaction>( transactions: T | T[], connection?: Connection, options?: SendTransactionOptions ) => Promise<string[]>) | undefined; // Sign and send transactions createSession: ( targetProgram: PublicKey, // Target Solana program topUpLamports?: number, // Top up session wallet with lamports or not validUntil?: number, // Duration of session token before expiration sessionCreatedCallback?: (sessionInfo: { sessionToken: string; publicKey: string; }) => void ) => Promise<SessionWalletInterface | undefined>; // Create a new session revokeSession: () => Promise<void>; // Revoke the current session getSessionToken: () => Promise<string | null>; // Retrieve the current session token}
Пример использования useSessionKeyManager:
import { useAnchorWallet, useConnection } from '@solana/wallet-adapter-react';import { useSessionKeyManager } from '@gumhq/react-sdk';function YourComponent() { const wallet = useAnchorWallet(); const connection = useConnection(); const cluster = "devnet"; // or "mainnet-beta", "testnet", "localnet" const sessionWallet = useSessionKeyManager(wallet, connection, cluster); // Access session wallet properties and methods here // Example: sessionWallet.publicKey // Example: sessionWallet.createSession return ( // Your component JSX );}
Чтобы использовать Session Key Manager в нескольких компонентах, вы можете настроить компонент-провайдер и контекст в вашем приложении следующим образом.