Ce contenu n’est pas encore disponible dans votre langue.
Installation via Package Manager
Section titled “Installation via Package Manager”This guide will walk you through the process of integrating the Wallet SDK into your JavaScript / Typescript application. By the end, you’ll have a basic setup that allows users to connect their Frak Wallet and perform interactions.
Prerequisites
Section titled “Prerequisites”Before you begin, ensure that:
- You have a package manager set up on your project (npm / bun / pnpm or yarn).
- You have a merchant account on the Frak business dashboard with your storefront’s domain registered. The main domain is registered automatically at sign-up; for subdomains, add them under Allowed Domains on the dashboard.
If you haven’t completed these steps, please refer to the Getting Started guide.
Step 1: Install Dependencies
Section titled “Step 1: Install Dependencies”npm install @frak-labs/core-sdkyarn install @frak-labs/core-sdkpnpm install @frak-labs/core-sdkbun install @frak-labs/core-sdkStep 2: Set Up the Frak Client
Section titled “Step 2: Set Up the Frak Client”Create a new TypeScript file (e.g., frak-setup.ts) to set up the Frak client:
import { setupClient, type FrakWalletSdkConfig } from '@frak-labs/core-sdk';
const frakConfig: FrakWalletSdkConfig = { metadata: { name: 'Your App Name', },};
export async function setupFrakClient() { const client = await setupClient({ config: frakConfig }); if (!client) { console.error('Failed to create Frak client'); return null; }
return client;}
export { frakConfig };For more detailed configuration options, see FrakWalletSdkConfig.
Step 3: Check Wallet Status
Section titled “Step 3: Check Wallet Status”Create a function to check and display the wallet status, using the watchWalletStatus action:
import { watchWalletStatus } from '@frak-labs/core-sdk/actions';import { setupFrakClient } from './frak-setup';
export async function displayWalletStatus() { const client = await setupFrakClient(); if (!client) { console.error('Frak client not initialized'); return; }
const statusElement = document.getElementById('wallet-status'); if (!statusElement) return;
statusElement.textContent = 'Checking wallet status...';
try { await watchWalletStatus(client, (status) => { if (!statusElement) return; statusElement.textContent = `Wallet status: ${status.key === 'connected' ? 'Connected' : 'Not connected'}`; }); } catch (error) { statusElement.textContent = `Error: ${error instanceof Error ? error.message : 'Unknown error'}`; }}
// Call this function when the page loadswindow.addEventListener('load', displayWalletStatus);Step 4: Implement Login Modal
Section titled “Step 4: Implement Login Modal”Create a function to handle the login process, using the displayModal action:
import { displayModal } from '@frak-labs/core-sdk/actions';import { setupFrakClient } from './frak-setup';
export async function handleLogin() { const client = await setupFrakClient(); if (!client) { console.error('Frak client not initialized'); return; }
const loginButton = document.getElementById('login-button') as HTMLButtonElement | null; if (!loginButton) return;
loginButton.disabled = true; loginButton.textContent = 'Logging in...';
try { await displayModal(client, { steps: { login: {}, final: { action: { key: "sharing" }, } } }); loginButton.textContent = 'Logged In'; } catch (error) { console.error('Login error:', error); loginButton.textContent = 'Login Failed'; } finally { loginButton.disabled = false; }}
// Attach the login handler to the buttonwindow.addEventListener('load', () => { const loginButton = document.getElementById('login-button'); loginButton?.addEventListener('click', handleLogin);});Step 5: Put It All Together
Section titled “Step 5: Put It All Together”Create an HTML file that includes your bundled JavaScript:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>My Frak-Enabled App</title> <!-- Your bundled JS file --> <script src="dist/bundle.js"></script></head><body> <h1>My Frak-Enabled App</h1> <div id="wallet-status">Initializing...</div> <button id="login-button">Login with Frak</button></body></html>Note: Make sure your bundler (webpack, vite, etc.) is properly configured to handle TypeScript files and generate the bundle.js file.
Next Steps
Section titled “Next Steps”With this setup, you have a basic TypeScript application integrated with the Wallet SDK. Users can now connect their Frak Wallet and log in. From here, you can start implementing more advanced features such as:
- Sending interactions
- Implementing referral systems
- Creating reward campaigns
Refer to the specific action documentation for details on implementing these features using the SDK’s TypeScript interfaces and types.