@macalinao/wallet-adapter-compat
Version:
Compatibility layer that bridges @solana/wallet-adapter with @solana/kit and grill
33 lines • 1.36 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { WalletProvider } from "@macalinao/grill";
import { useConnection, useWallet } from "@solana/wallet-adapter-react";
import { install } from "@solana/webcrypto-ed25519-polyfill";
import { useMemo } from "react";
import { createWalletTransactionSendingSigner } from "./walletTransactionSendingSigner.js";
// Install the polyfill
install();
/**
* A compatibility provider that creates a TransactionSendingSigner from
* wallet-adapter and provides it through grill's WalletProvider.
*
* This bridges the gap between @solana/wallet-adapter and @solana/kit.
*/
export const WalletAdapterCompatProvider = ({ children }) => {
const { connection } = useConnection();
const wallet = useWallet();
// Create the signer when wallet is connected
const signer = useMemo(() => {
if (!(wallet.connected && wallet.publicKey && wallet.signTransaction)) {
return null;
}
try {
return createWalletTransactionSendingSigner(wallet, connection);
}
catch (error) {
console.error("Failed to create transaction sending signer:", error);
return null;
}
}, [wallet, connection]);
return _jsx(WalletProvider, { signer: signer, children: children });
};
//# sourceMappingURL=WalletAdapterCompatProvider.js.map