Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@sushiswap/wagmi / package / hooks / useWalletState.ts
Size: Mime:
import { useEffect, useState } from 'react'
import { useAccount } from 'wagmi'

type UseWalletStateReturn = {
  isConnected: boolean
  isDisconnected: boolean
  connecting: boolean
  notConnected: boolean
  pendingConnection: boolean
  reconnecting: boolean
}

type UseWalletState = (pendingConnector: boolean) => UseWalletStateReturn

// Mutually exclusive states
// TODO ramin: remove pendingConnector param when wagmi adds onConnecting callback to useAccount
export const useWalletState: UseWalletState = (pendingConnector) => {
  const [initialDc, setInitialDc] = useState(true)

  const { address, isConnecting, isReconnecting, isConnected, isDisconnected } = useAccount()

  // Trying to see if wallet is connected
  const connecting = Boolean(isConnecting && !isReconnecting && !pendingConnector && !address) || initialDc

  // No wallet connected
  const notConnected = Boolean(!isConnecting && !isReconnecting && !pendingConnector && !address)

  // pending wallet confirmation
  const pendingConnection = Boolean(isConnecting && !isReconnecting && pendingConnector && !address)

  // We are reconnecting
  const reconnecting = Boolean(isReconnecting && address)

  useEffect(() => {
    if (initialDc && connecting) {
      setInitialDc(false)
    }
  }, [connecting, initialDc])

  return {
    isConnected,
    isDisconnected,
    connecting,
    notConnected,
    pendingConnection,
    reconnecting,
  }
}