Skip to main content

Integrate Tiplink Wallet Adapter

Introduction​

The Tiplink Wallet Adapter is a wallet adapter that allows you to sign up/log in to dApps using your Google account. This guide will show you how to use the Tiplink Wallet Adapter with Honeycomb Protocol.

Prerequisites​

You will need a valid Client ID from TipLink. You can get this by contacting the TipLink team through their officially-listed channels on the TipLink website.

Also, before starting this guide, make sure to setup your development environment.

Step by step guide​

note

This is just a sample integration of the TipLink Wallet Adapter. You can find more detailed and latest instructions in the official guide from TipLink.

1. Installing required packages​

To get started with the TipLink Wallet Adapter, you need to install the required packages from TipLink. You can do so using NPM or Yarn.

npm i @tiplink/wallet-adapter @tiplink/wallet-adapter-react-ui

Then, in the setup of your frontend application, add the TipLink Wallet Adapter like so.

// previous imports
import { TipLinkWalletAdapter } from "@tiplink/wallet-adapter";

// remaining code

const wallets = useMemo(
() => [
new TipLinkWalletAdapter({
title: "Name of Dapp",
clientId: "694bf97c-d2ac-4dfc-a786-a001812658df", // This is the client ID you get from TipLink
theme: "dark", // pick between "dark"/"light"/"system"
}),
],
[network]
);
// ...

Lastly, wrap your app in the TipLinkWalletAutoConnectV2 component and provide it the required props.

const [searchParams, setSearchParams] = useSearchParams();

return (
<ConnectionProvider endpoint={endpoint}>
<WalletProvider wallets={wallets} autoConnect>
// The TipLink provider component
<TipLinkWalletAutoConnectV2 isReady={true} query={searchParams}>
<WalletModalProvider>
<WalletMultiButton />
<h1>Hello Solana</h1>
</WalletModalProvider>
</TipLinkWalletAutoConnectV2>
</WalletProvider>
</ConnectionProvider>
);

The overall setup should like like this.

import { useMemo } from "react";
import { useSearchParams } from "react-router-dom";
import {
ConnectionProvider,
WalletProvider,
} from "@solana/wallet-adapter-react";
import {
PhantomWalletAdapter,
SolflareWalletAdapter,
} from "@solana/wallet-adapter-wallets";
import {
WalletModalProvider,
WalletMultiButton,
} from "@solana/wallet-adapter-react-ui";
import { TipLinkWalletAdapter } from "@tiplink/wallet-adapter";
import { TipLinkWalletAutoConnectV2 } from "@tiplink/wallet-adapter-react-ui";
import "./App.css";

// Default styles that can be overridden by your app
import "@solana/wallet-adapter-react-ui/styles.css";

function App() {
// The network can be set to 'devnet', 'testnet', or 'mainnet-beta'.
const network = "https://rpc.test.honeycombprotocol.com";
// You can also provide a custom RPC endpoint.
const endpoint = useMemo(() => network, [network]);

const wallets = useMemo(
() => [
// Manually define specific/custom wallets here
new PhantomWalletAdapter(),
new SolflareWalletAdapter(),
// Add the TipLink Wallet Adapter
new TipLinkWalletAdapter({
title: "Name of Dapp",
clientId: "694bf97c-d2ac-4dfc-a786-a001812658df", // This is the client ID you get from TipLink
theme: "dark", // pick between "dark"/"light"/"system"
}),
],
[network]
);

const [searchParams, setSearchParams] = useSearchParams();

return (
<ConnectionProvider endpoint={endpoint}>
<WalletProvider wallets={wallets} autoConnect>
<TipLinkWalletAutoConnectV2 isReady={true} query={searchParams}>
<WalletModalProvider>
<WalletMultiButton />
<h1>Hello Solana</h1>
</WalletModalProvider>
</TipLinkWalletAutoConnectV2>
</WalletProvider>
</ConnectionProvider>
);
}

export default App;

That's it! You have successfully integrated the TipLink Wallet Adapter with Honeycomb Protocol.

You can get the wallet object using the useWallet hook and use it to sign and send transactions.