olehmell/subsocial-sdk

View on GitHub
packages/api/src/connections/index.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { ApiPromise, WsProvider } from '@polkadot/api';
import { formatBalance } from '@polkadot/util';
import '@subsocial/definitions/interfaces/types-lookup'
import '@subsocial/definitions/interfaces/augment-api'

let api: ApiPromise | undefined = undefined

/** Get the current open connection to Substrate node. */
export const getSubstrateApi = async (nodeUrl?: string) => {
  if (api) return api

  const rpcEndpoint = nodeUrl || 'ws://127.0.0.1:9944/';
  const provider = new WsProvider(rpcEndpoint);

  api = await ApiPromise.create({ provider })

  formatBalance.setDefaults({
    decimals: api.registry.chainDecimals,
    unit: api.registry.chainTokens
  });

  return api
}