0.0.2-alpha.3 • Published 2 years ago

vip-solana-mobile-wallet-adapter v0.0.2-alpha.3

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
2 years ago

@solana-mobile/wallet-adapter-mobile

This is a plugin for use with @solana/wallet-adapter. It enables apps to use a native wallet app on a mobile device to sign messages and transactions, and to send transactions if the wallet offers support for sending transactions.

A screenshot showing the Solana Mobile wallet adapter in use with the wallet adapter dialog

Usage

Create an instance of the mobile wallet adapter like this.

new SolanaMobileWalletAdapter({
    addressSelector: createDefaultAddressSelector(),
    appIdentity: {
        name: 'My app',
        uri: 'https://myapp.io',
        icon: 'relative/path/to/icon.png',
    },
    authorizationResultCache: createDefaultAuthorizationResultCache(),
});

Use that adapter instance alongside the other adapters used by your app.

const wallets = useMemo(() => [
    new SolanaMobileWalletAdapter({
        addressSelector: createDefaultAddressSelector(),
        appIdentity: {
            name: 'My app',
            uri: 'https://myapp.io',
            icon: 'relative/path/to/icon.png',
       },
        authorizationResultCache: createDefaultAuthorizationResultCache(),
    });
    new PhantomWalletAdapter(),
    /* ... other wallets ... */
]);

return (
    <ConnectionProvider endpoint={clusterApiUrl(WalletAdapterNetwork.Devnet)}>
        <WalletProvider wallets={wallets}>
            <MyApp />
        </WalletProvider>
    </ConnectionProvider>
)

For more information about how to use wallet adapter plugins, visit https://github.com/solana-labs/wallet-adapter

Configuration

App identity

The AppIdentity config identifies your app to a native mobile wallet. When someone connects to a wallet for the first time, the wallet may present this information in the on-screen prompt where the ask if the visitor would like to authorize your app for use with their account.

  • name The plain-language name of your application.
  • uri The uri of your application. This uri may be required to participate in dApp identity verification as part of the mobile wallet adapter protocol specification.
  • icon An icon file path, relative to the uri.

Authorization result cache

The first time that someone authorizes a native wallet app for use with your application, you should cache that authorization for future use. You can supply your own implementation that conforms to the AuthorizationResultCache interface.

export interface AuthorizationResultCache {
    clear(): Promise<void>;
    get(): Promise<AuthorizationResult | undefined>;
    set(authorizationResult: AuthorizationResult): Promise<void>;
}

Alternatively, you can use the included createDefaultAuthorizationResultCache() method to create a cache that reads and writes the adapter's last-obtained AuthorizationResult to your browser's local storage, if available.