@macalinao/wallet-adapter-compat
Version:
Compatibility layer that bridges @solana/wallet-adapter with @solana/kit and grill
33 lines • 1.42 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 "./wallet-transaction-sending-signer.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 { publicKey, sendTransaction, connected } = useWallet();
// Create the signer when wallet is connected
const signer = useMemo(() => {
if (!(connected && publicKey)) {
return null;
}
try {
return createWalletTransactionSendingSigner({ publicKey, sendTransaction }, connection);
}
catch (error) {
console.error("Failed to create transaction sending signer:", error);
return null;
}
}, [connected, publicKey, sendTransaction, connection]);
return _jsx(WalletProvider, { signer: signer, children: children });
};
//# sourceMappingURL=wallet-adapter-compat-provider.js.map