Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@solana-mobile/wallet-adapter-mobile

Package Overview
Dependencies
Maintainers
1
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@solana-mobile/wallet-adapter-mobile

An adapter for mobile wallet apps that conform to the Solana Mobile Wallet Adapter protocol

  • 0.9.5
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
47K
increased by4.31%
Maintainers
1
Weekly downloads
 
Created
Source

@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(),
    cluster: WalletAdapterNetwork.Devnet,
    onWalletNotFound: createDefaultWalletNotFoundHandler(),
});

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(),
        cluster: WalletAdapterNetwork.Devnet,
        onWalletNotFound: createDefaultWalletNotFoundHandler(),
    });
    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.

Address selector

The Mobile Wallet Adapter specification allows a wallet to authorize a dApp to use one or more addresses. dApps must supply code to select a single address for use in the adapter. That code must conform to the AddressSelector interface.

export interface AddressSelector {
    select(addresses: Base64EncodedAddress[]): Promise<Base64EncodedAddress>;
}

Alternatively, you can use the included createDefaultAddressSelector() method to create a selector that always chooses the first address in the list.

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.

Cluster

Each authorization a dApp makes with a wallet is tied to a particular Solana cluster. If a dApp wants to change the cluster on which to transact, it must seek an authorization for that cluster.

Wallet-not-found handler

When you call connect() but no wallet responds within a reasonable amount of time, it is presumed that no compatible wallet is installed. You must supply an onWalletNotFound function to handle this case.

Alternatively, you can use the included createDefaultWalletNotFoundHandler() method to create a function that opens the Solana Mobile ecosystem wallets webpage.

FAQs

Package last updated on 15 Oct 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc