@reown/appkit-controllers
Version:
The full stack toolkit to build onchain app UX.
76 lines • 3.34 kB
JavaScript
import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';
import { ChainController } from '../controllers/ChainController.js';
import { ConnectorControllerUtil } from './ConnectorControllerUtil.js';
import { ConstantsUtil } from './ConstantsUtil.js';
/**
* Returns the array of chains to disconnect from the connector with the given namespace.
* If no namespace is provided, it returns all chains.
* @param namespace - The namespace of the connector to disconnect from.
* @returns An array of chains to disconnect.
*/
export function getChainsToDisconnect(namespace) {
const namespaces = Array.from(ChainController.state.chains.keys());
let chains = [];
if (namespace) {
chains.push([namespace, ChainController.state.chains.get(namespace)]);
if (ConnectorControllerUtil.checkNamespaceConnectorId(namespace, CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT)) {
namespaces.forEach(ns => {
if (ns !== namespace &&
ConnectorControllerUtil.checkNamespaceConnectorId(ns, CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT)) {
chains.push([ns, ChainController.state.chains.get(ns)]);
}
});
}
else if (ConnectorControllerUtil.checkNamespaceConnectorId(namespace, CommonConstantsUtil.CONNECTOR_ID.AUTH)) {
namespaces.forEach(ns => {
if (ns !== namespace &&
ConnectorControllerUtil.checkNamespaceConnectorId(ns, CommonConstantsUtil.CONNECTOR_ID.AUTH)) {
chains.push([ns, ChainController.state.chains.get(ns)]);
}
});
}
}
else {
chains = Array.from(ChainController.state.chains.entries());
}
return chains;
}
/**
* Get the active network token address
* @returns The active network token address
*/
export function getActiveNetworkTokenAddress() {
const namespace = ChainController.state.activeCaipNetwork?.chainNamespace || 'eip155';
const chainId = ChainController.state.activeCaipNetwork?.id || 1;
const address = ConstantsUtil.NATIVE_TOKEN_ADDRESS[namespace];
return `${namespace}:${chainId}:${address}`;
}
/**
* Get the native token address for a given namespace
* @param namespace - The namespace of the native token
* @returns The native token address
*/
export function getNativeTokenAddress(namespace) {
return ConstantsUtil.NATIVE_TOKEN_ADDRESS[namespace];
}
/**
* Get the preferred account type for a given namespace
* @param namespace - The namespace of the account
* @returns The preferred account type
*/
export function getPreferredAccountType(namespace) {
const preferredAccountType = ChainController.getAccountData(namespace)?.preferredAccountType;
return preferredAccountType;
}
/**
* Get the active CAIP network for a given chain namespace, if no namespace is provided, it returns the active CAIP network
* @param chainNamespace - The chain namespace to get the active CAIP network for
* @returns The active CAIP network
*/
export function getActiveCaipNetwork(chainNamespace) {
if (chainNamespace) {
return ChainController.state.chains.get(chainNamespace)?.networkState?.caipNetwork;
}
return ChainController.state.activeCaipNetwork;
}
//# sourceMappingURL=ChainControllerUtil.js.map