0.0.1 • Published 10 months ago

@bananahq/react-native-sdk v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

Banana wallet

this is the react native sdk for Banana Wallet

Installation

Install NPM package

npm install react-native-aa-wallet --save

IOS

cd ios
pod install

Usage

Here's how to create app's deeplink: android, ios

  • Import Banana, Chains from react-native-aa-wallet
  • Use your app's deeplink to initialize bananaInstance
import { Banana, Chains } from 'react-native-aa-wallet';

const APP_DEEPLINK = "<Your app's deeplink>";
const bananaInstance = new Banana(Chains.mumbai, APP_DEEPLINK);
const name = await bananaInstance.getWalletName();

Check if there's an existing wallet in the device before connecting it

const name = await bananaInstance.getWalletName();

if (name) {
  const walletInstance = await bananaInstance.connectWallet(name);
  const walletAddress = await walletInstance.getAddress();
} else {
  // create new wallet
}

Create a new wallet

  • Use bananaInstance to create wallet
const createNewBananaWallet = async () => {
  try {
    const walletInstance = await bananaInstance.createWallet();
    const walletAddress = await walletInstance.getAddress();
    console.log('Created new wallet', walletAddress);
    // setBananaWallet(walletInstance);
  } catch (err) {
    console.log(err);
  }
};

export default Home;

Get signer for connected wallet

const signer = await walletInstance.getSigner();

// get wallet balance
const walletEthBalance = signer.getBalance();

Create a transaction

const createTransaction = async () => {
  try {
    setLoadingStake(true);
    const abi = [
      {
        inputs: [],
        name: 'returnStake',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
      },
      {
        inputs: [],
        name: 'stake',
        outputs: [],
        stateMutability: 'payable',
        type: 'function',
      },
    ];
    const signer = bananaWallet?.getSigner();
    const stakeAddress = '0x8b370128A84bc2Df7fF4813675e294b1ae816178';
    const tx = {
      gasLimit: '0x55555',
      to: stakeAddress,
      value: ethers.utils.parseEther('100'),
      data: new ethers.utils.Interface(abi).encodeFunctionData('stake', []),
    };
    const txn = await signer?.sendTransaction(tx);
    console.log('transaction', txn);
  } catch (error) {}
};

Setup example project

We also have an example react-native app for testing

  • Checkout example directory
  • To setup react native project follow the instructions here or do the following
  • npm install
cd example
npm i
  • Install cocoapods
brew install cocoapods
brew install node
brew install watchman
  • Install Android studio and Xcode for setting up build environment
  • For ios install pods
cd ios
pod install

Wallet SDK will not work in ios simulator or andriod emulator, so connect real device to test the app.

For iOS:

  • Open the ios folder of example app directory in Xcode
  • Connect your iPhone through cable and open Xcode, select your iPhone from the available devices
  • Go to Signing & Capabilities from project navigator and select your icloud account in the team dropdown
  • Create a test build in your device

for Android:

  • Open android folder od example directory in Android Studio
  • Connect your android device
  • Select your device from the dropdown and create a test build