npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@okxconnect/ui

v1.6.2

Published

In addition to SDK, we also provide a UI interface. If using the UI connection, and the DApp is operating in Telegram, users can choose to open the mobile App Wallet or stay in Telegram and launch the OKX Mini Wallet.

Downloads

15,603

Readme

UI

In addition to SDK, we also provide a UI interface. If using the UI connection, and the DApp is operating in Telegram, users can choose to open the mobile App Wallet or stay in Telegram and launch the OKX Mini Wallet.

Install via npm

npm install @okxconnect/ui

Initialization

Before connecting to the wallet, you need to create an object for subsequent operations such as connecting to the wallet and sending transactions.

OKXUniversalConnectUI.init(dappMetaData, actionsConfiguration, uiPreferences, language, restoreConnection)

Request parameters

  • dappMetaData - object
    • name - string: the name of the application, will not be used as a unique representation.
    • icon - string: URL of the application icon, must be in PNG, ICO, etc. SVG icons are not supported. SVG icons are not supported. It is better to pass a url pointing to a 180x180px PNG icon.
  • actionsConfiguration - object
    • modals - ('before' |'success' |'error')[] |'all' The modes of displaying alerts during transaction, defaults to'before'.
    • returnStrategy -string'none' | ${string}://${string}; For app wallet, specify the return strategy for the deep link when the user signs/rejects the request, or configure tg://resolve if it's in tg;
    • tmaReturnUrl -string'back' |'none' | ${string}://${string}; for Telegram Mini Wallet, specify the return policy for the deep link when the user signs/rejects the request, generally configure back, which means that after signing and closing the wallet, it will automatically display the dapp; none means no processing after signing; the default is back;
  • uiPreferences -object
    • theme - Theme can be: THEME.DARK, THEME.LIGHT,'SYSTEM'.
  • language -'en_US' |'ru_RU' |'zh_CN' |'ar_AE' |'cs_CZ' |'de_DE' |'es_ES' |'es_LAT' |'fr_FR' |'id_ID' |'it_IT' |'nl_NL' |'pl_PL' |'pt_BR' |'pt_PT' |'ro_RO' |'tr_TR' |'uk_UA' |'vi_VN'. , defaults to en_US
  • restoreConnection?: boolean - Whether to automatically restore the previous connection;

Return Value.

  • OKXUniversalConnectUI

Examples

import { OKXUniversalConnectUI } from "@okxconnect/ui";

const universalUi = await OKXUniversalConnectUI.init({
  dappMetaData: {
    icon: "https://static.okx.com/cdn/assets/imgs/247/58E63FEA47A2B7D7.png",
    name: "OKX Connect Demo"
  },
  actionsConfiguration: {
    returnStrategy:'tg://resolve',
    modals:'all',
    tmaReturnUrl:'back'
  },
  language: "en_US",
  uiPreferences: {
    theme: THEME.LIGHT
  },
});

Connecting to a wallet

Connecting to a wallet goes to get the wallet address as an identifier and the necessary parameters used to sign the transaction, the

await universalUi.openModal(connectParams: ConnectParams);

Request Parameters

  • connectParams - ConnectParams
    • namespaces - [namespace: string]: ConnectNamespace; The necessary information for requesting a connection. The key for the EVM system is "eip155". If any chain in the request is not supported by a wallet, the connection will be rejected.
      • chains: string[]; Chain ID information, defined as decimal numbers in EIP155, for example, Ethereum is eip155:1.
      • defaultChain?: string; The default chain.
    • optionalNamespaces - [namespace: string]: ConnectNamespace;Optional information for connection request, the key of EVM system is ‘eip155’, if the corresponding chain information is not supported by the wallet, you can still connect to it; if you need to connect to a custom network, you can add the request for the custom network to this parameter, if there is already a custom network in the wallet, the information of the custom chain will be returned in the request session; if the wallet does not support it, there is no information of the custom chain in the request session, you can call the request method again, with the method set to wallet_addEthereumChain, to add the custom chain. If the wallet doesn't support it, there is no information about the custom chain in the request result session, so you can add the custom chain by calling the request method again with the method set to wallet_addEthereumChain.
      • chains: string[]; Chain ID information.

Return value

  • Promise <SessionTypes.Struct | undefined>
    • topic: string; the session identifier;
    • namespaces: Record<string, Namespace>; namespace information for a successful connection;
      • chains: string[]; Chain information for the connection;
      • accounts: string[]; accounts information for the connection;
      • methods: string[]; methods supported by the wallet under the current namespace;
      • defaultChain?: string; The default chain for the current session.
    • sessionConfig?: SessionConfig
      • dappInfo: object DApp information;
        • name:string
        • dappInfo: object DApp info; name:string

Example

var session = await universalUi.openModal({
  namespaces: {
    eip155: {
            // Please pass in as many chain ids as you need.
            chains: ["eip155:1"],
            defaultChain: "1"
        }
  },
  optionalNamespaces: {
    eip155: {
      chains: ["eip155:43114"]
    }
  }
})

Determine if the wallet is connected

Gets whether the wallet is currently connected.

Return Value

  • boolean

Example

universalUi.connected();

Prepare the transaction

Methods for sending messages to the wallet, supporting signatures, transactions.

universalUi.request(requestArguments, chain, actionConfigurationRequest);

requestArguments

  • requestArguments - object
    • method: string; the name of the requested method.
    • params?: unknown[] | Record<string, unknown> | object | undefined; The parameters corresponding to the requested method;
    • returnStrategy -string'none’ | ${string}://${string}; The return strategy for the deep link in the App wallet when the user signs or rejects the request, if it is a Mini App in Telegram, it can be configured with tg://resolve, and if it's not configured here, the will take the returnStrategy passed by the init method, default is'none’
  • chain: string; the chain in which the requested method will be executed, it is recommended to pass this parameter, if not it will be set to the current defaultChain;
  • actionConfigurationRequest - object
    • modals : ('before' |'success' |'error')[] |'all' The modals of the alert display during the transaction, if request does not have this parameter set, take the parameter added during init, if init does not have this parameter set as well, then take the default value:'before',
    • tmaReturnUrl -string'back' |'none' | ${string}://${string}; Telegram Mini Wallet wallet, when the user signs/rejects the request, the deep link return strategy, generally configure back, that is to say, after signing and closing the wallet, it will show the dapp; none means that after signing and closing the wallet, it will show the dapp automatically. dapp; none means no processing after signing; default is back;

** return value **

return parameter details same as EVM-compatible chain for sending signatures and transactions

Examples

Example same EVM-compatible chain for sending signatures and transactions

let chain ='eip155:1'
var data = {}

data = {
    "method": "personal_sign",
    "params": [
        "0x506c65617365207369676e2074686973206d65737361676520746f20636f6e6669726d20796f7572206964656e746974792e",
        "0x4B0897b0513FdBeEc7C469D9aF4fA6C0752aBea7"
    ]
}
var personalSignResult = await universalUi.request(data, chain,'all')
//personalSignResult:   0xe8d34297c33a61"

Close connection popup

Example

universalUi.closeModal();

Get information about the currently connected session

Get information about whether there is a currently connected wallet, and the connected wallets;

Example

universalUi.session.

Set ui configuration items

Support to change the theme, text language setting, also can add these configurations during initialisation;

example

universalUi.uiOptions = {
  language:'zh_CN',
  uiPreferences: {
    theme: THEME.DARK
  }
};

Setting the default network

In the case of multiple networks, if the developer does not specify the network where the current operation is taking place, the interaction will take place through the default network.

'setDefaultChain(chain)'

Example

universalUi.setDefaultChain('eip155:1')

Disconnect the wallet

Example

universalUi.disconnect();

Event

// Generate universalLink  
okxUniversalProvider.on('display_uri', (uri) => {
  console.log(uri);
}).
        // Session information changes (e.g. adding a custom chain) will trigger this event;
        okxUniversalProvider.on('session_update', (session) => {
  console.log(JSON.stringify(session));
});
// Disconnecting triggers this event;
okxUniversalProvider.on('session_delete', ({topic}) => {
  console.log(topic);
});

Error code

Same details as EVM compatibility chain