diam-wallet-sdk1 v1.0.1
DIAM Wallet Mobile SDK
The DIAM Wallet Mobile SDK allows developers to seamlessly connect their dApps with both web apps (on Android mobile browsers) and mobile apps (on Android and iOS) through the DIAM Wallet App.
Getting Started
Installation
Install the SDK in your Application:
yarn add diam-wallet-sdk-mobile
npm install --save diam-wallet-sdk-mobile
iOS Setup
Install CocoaPods dependencies:
cd ios && pod install
Setting Up the SDK in Your Application
Note: The SDK does not include a wrapper, so it must be initialized in every file where it is used.
React Native Implementation
Install AsyncStorage for React-Native.
npm i --save @react-native-async-storage/async-storage
import React from 'react';
import DIAMWalletConnectionSDK from 'diam-wallet-sdk-mobile';
const diamWalletSdk = new DIAMWalletConnectionSDK({
platform: 'mobile',
appCallback: 'app-scheme://callback',
appName: 'Demo App',
network: 'testnet', // or "mainnet"
});
React Web Implementation
Install web-vital for web(ReactJS).
npm i --save web-vitals
import React from 'react';
import DIAMWalletConnectionSDK from 'diam-wallet-sdk-mobile';
const diamWalletSdk = new DIAMWalletConnectionSDK({
platform: "web",
appCallback: window.location.origin + "/callback",
appName: "Demo App1",
network: "testnet",
});
SDK Methods
1. Connect Wallet
Establishes connection with DIAM Wallet and returns user's wallet address.
Returns:
{
status: boolean, // Connection status
address: string, // Wallet address if successful
data?: string // Error message if failed
}
React Native
const connectWallet = async () => {
try {
console.log('Connecting wallet...');
const result = await diamWalletSdk.connectWallet();
console.log('Wallet connected!', result);
if (result.status === true) {
setAddress(result.address);
setConnectionStatus(result.status);
} else {
Alert.alert('Errors', result.data, [{text: 'OK'}]);
}
} catch (error) {
console.error('Failed to connect wallet:', error);
setConnectionStatus(false);
Alert.alert(`Failed to connect: \n${error.message}`);
}
};
React Web
const connectWallet = async () => {
try {
console.log("Connecting...");
const result = await sdk.connectWallet();
if (result.status === true) {
setConnectionStatus(result.status);
setWalletAddress(result.address);
let balanceResponse = await sdk.getBalance();
setBalance(balanceResponse.data.balance);
}
} catch (error) {
console.error("Failed to connect wallet:", error);
setConnectionStatus(false);
alert(`Failed to connect: \n${error.message}`);
}
};
2. Fetch Wallet Balance
Retrieves the current balance of the connected wallet.
Returns:
{
status: boolean,
data: {
balance: string
}
}
const fetchBalance = async () => {
let balanceResponse = await diamWalletSdk.getBalance();
console.log(balanceResponse);
};
3. Send Transaction
Sends a new transaction to a specified address.
Parameters:
{
amount: string, // Amount to send
toAddress: string, // Recipient address
signTransaction: false // Must be false for sending
}
Returns:
{
status: boolean,
data: Array<object>; // Array of generic objects
}
const sendTransaction = async () => {
let transactionData = {
amount: "10", // sending amount
toAddress: "GBVKH4ZK6QWETZTQFLQ3JMGXKMRVRK3ZPZ3Z4ACQXY42J6P7F5DRZYNY", // receiver address
signTransaction: false,
};
try {
const result = await diamWalletSdk.sendTransaction(transactionData);
console.log(result);
} catch (error) {
console.error('Failed to send transaction:', error);
}
};
4. Sign Transaction
Signs a transaction without broadcasting it to the network.
Parameters:
{
amount: string, // Amount to send
toAddress: string, // Recipient address
signTransaction: true // Must be true for signing
}
Returns:
{
status: boolean,
data: {
xdr: string // Signed transaction XDR
}
}
const signTransaction = async () => {
let transactionData = {
amount: "10", // sending amount
toAddress: "GBVKH4ZK6QWETZTQFLQ3JMGXKMRVRK3ZPZ3Z4ACQXY42J6P7F5DRZYNY", // receiver address
signTransaction: true,
};
try {
const result = await diamWalletSdk.sendTransaction(transactionData);
console.log(result);
} catch (error) {
console.error('Failed to sign transaction:', error);
}
};
5. Send Signed Transaction
Broadcasts a previously signed XDR transaction.
Parameters:
{
signTransaction: false,
xdr: string // Signed XDR string
}
Returns:
{
status: boolean,
data: Array<object>; // Array of generic objects
}
const sendSignedXDRTransaction = async () => {
let transactionData = {
signTransaction: false,
xdr: selectedXDR,
};
try {
const result = await diamWalletSdk.sendTransaction(transactionData);
console.log(result);
} catch (error) {
console.error("Failed to send transaction:", error);
}
};
6. Validate Public Address
Validates if a given address is formatted correctly.
Parameters:
publicAddress: string // Address to validate
Returns:
{
valid: boolean
}
const addressValidation = async () => {
let valid = await diamWalletSdk.validatePublicAddress(
"GBVKH4ZK6QWETZTQFLQ3JMGXKMRVRK3ZPZ3Z4ACQXY42J6P7F5DRZYNY" // receiver address
);
console.log(valid); // {valid: true/false}
};
7. Disconnect Wallet
Terminates the connection with the DIAM Wallet.
Returns:
{
status: boolean,
message?: string // Optional status message
}
const disconnectWallet = async () => {
try {
await diamWalletSdk.disconnect();
} catch (error) {
console.error("Failed to disconnect wallet:", error);
alert(`Failed to disconnect: \n${error.message}`);
}
};
Configuration Options
Option | Type | Description | Mandatory |
---|---|---|---|
diamWalletOptions.platform | string | Name of your platform | Yes |
diamWalletOptions.appCallback | string | URL of your dApp | Yes |
diamWalletOptions.appName | string | Name of your dApp | Yes |
diamWalletOptions.network | string | Network name ("testnet" or "mainnet") | Yes |
Available Methods
connectWallet()
: Connect to DIAM Wallet ApplicationgetBalance()
: Fetch balance for the connected walletsendTransaction({amount, toAddress, signTransaction: false})
: Send transaction to specified public addresssignTransaction({amount, toAddress, signTransaction: true})
: Sign transaction for specified public addresssendTransaction({signTransaction: false, xdr})
: Send signed XDR transactionvalidatePublicAddress(publicAddress)
: Validate public addressdisconnect()
: Terminate DIAM Wallet connection
Support
For additional support, please open an issue on our GitHub repository.