@lifi/wallet-management
Version:
LI.FI Wallet Management solution.
64 lines (58 loc) • 1.63 kB
text/typescript
import type { CombinedWallet } from '../hooks/useCombinedWallets.js'
import { WalletTagType } from '../types/walletTagType.js'
import { getConnectorId } from './getConnectorId.js'
export const getConnectorTagType = (
connectorId: string,
isConnected: boolean
) => {
if (isConnected) {
return WalletTagType.Connected
}
if (connectorId === 'walletConnect') {
return WalletTagType.QrCode
}
if (
connectorId === 'metaMaskSDK' ||
connectorId === 'coinbaseWalletSDK' ||
connectorId === 'baseAccount' ||
connectorId === 'xyz.ithaca.porto'
) {
return WalletTagType.GetStarted
}
return WalletTagType.Installed
}
export const getWalletTagType = (
wallet: CombinedWallet,
connectedConnectorIds: string[]
) => {
let walletTagType: WalletTagType | undefined
if (wallet.connectors.length > 1) {
walletTagType = wallet.connectors.some((connector) => {
const connectorId = getConnectorId(
connector.connector,
connector.chainType
)
return (
connectorId &&
getConnectorTagType(
connectorId,
connectedConnectorIds.includes(connectorId)
) === WalletTagType.Connected
)
})
? WalletTagType.Connected
: WalletTagType.Multichain
} else if (wallet.connectors.length === 1) {
const connectorId = getConnectorId(
wallet.connectors[0].connector,
wallet.connectors[0].chainType
)
walletTagType = connectorId
? getConnectorTagType(
connectorId,
connectedConnectorIds.includes(connectorId)
)
: undefined
}
return walletTagType
}