UNPKG

@snowflake-so/safe-saber-walletkit

Version:

Snowflake Safe forked version of @saberhq/use-solana package. Used for integration purpose.

125 lines (90 loc) 3.7 kB
# Safe Saber Walletkit ## Supported Library: @saberhq/use-solana Snowflake Safe-integrated version of @saberhq/use-solana ## Installation [![npm](https://img.shields.io/npm/v/@snowflake-so/safe-saber-walletkit)](https://www.npmjs.com/package/@snowflake-so/safe-saber-walletkit) ``` npm install @snowflake-so/safe-saber-walletkit yarn add @snowflake-so/safe-saber-walletkit ``` ## Disclaimer This package is a **forked versio**n of `@saberhq/use-solana` package. The purpose of this is to provide more React hooks and Context API for the use of Snowflake Safe integration. Original source code can be found here: [@saberhq/use-solana](https://github.com/saber-hq/saber-common/tree/d50ce9594e01e1eff4a7c1073915413f9330125f/packages/use-solana) Tribute to the **Saber** team for an amazing open-sourced project ### @saberhq/use-solana Solana frontend library and TypeScript SDK. This SDK features: - React hooks and providers for adding a Solana connection to your app - Integrations with several popular wallets (full list [here](https://github.com/saber-hq/use-solana/blob/master/packages/use-solana/src/providers.tsx)) - Helpers for fetching token account balances and performing mathematical operations on tokens ### Changelog #### useConnectedSafeWallet Extends useConnectedWallet ```tsx export const useConnectedSafeWallet = () => { const wallet = useConnectedWallet(); const { safe } = useSafe(); const [returnWallet, setReturnWallet] = useState<ConnectedSafeWallet>(); useEffect(() => { if ( safe.connected && safe.safeInfo.vaultAddress && safe.safeInfo.walletPublicKey ) { setReturnWallet({ ...(wallet as ConnectedWallet), publicKey: new PublicKey(safe.safeInfo.vaultAddress), autoApprove: wallet?.autoApprove ?? false, connected: true, isSafeApp: true, walletPublicKey: new PublicKey(safe.safeInfo.walletPublicKey), }); } else if (wallet !== null) { setReturnWallet(wallet); } }, [wallet, safe]); return returnWallet; }; ``` #### useSnowflakeSolana Extends useSolana ```tsx export const useSnowflakeSolana = (): UseSolana< WalletTypeEnum<any>, boolean > => { const walletSolana = useSolana(); const connectedWallet = useConnectedSafeWallet(); const [snowflakeSolana, setSnowflakeSolana] = useState<UseSolana<WalletTypeEnum<any>, boolean>>(walletSolana); useEffect(() => { if (connectedWallet?.isSafeApp) { setSnowflakeSolana({ ...(walletSolana as UseSolana<WalletTypeEnum<any>, boolean>), wallet: connectedWallet, connected: true, publicKey: connectedWallet.publicKey, providerMut: new SolanaAugmentedProvider( WalletAdapterProvider.init({ connection: walletSolana.connection, wallet: connectedWallet, }) ), }); } else { setSnowflakeSolana(walletSolana); } }, [walletSolana, connectedWallet]); return snowflakeSolana; }; ``` ### Documentation Detailed information on how to build on Saber can be found on the [Saber developer documentation website](https://docs.saber.so/docs/developing/overview). Automatically generated TypeScript documentation can be found [on GitHub pages](https://saber-hq.github.io/saber-common/). ## Support ### Struggle with the SDK integration? If you have any problem with using the SDK in your system, drop a question our Snowflake Discord #sdk to receive a support from our engineers. ### Find a bug or want to contribute to Snowflake? If you find a bug or have any problem and idea while using the SDK, you can create an issue on SDK Github. License MIT ## License Apache 2.0