vega-frontend-monorepo/libs/web3/src/lib/use-bridge-contract.ts
Art 484d7888cf
feat(web3): ready to withdraw toast (#4142)
Co-authored-by: Bartłomiej Głownia <bglownia@gmail.com>
2023-06-26 16:28:14 +02:00

42 lines
1.4 KiB
TypeScript

import { CollateralBridge } from '@vegaprotocol/smart-contracts';
import { useWeb3React } from '@web3-react/core';
import { useMemo } from 'react';
import { useEthereumConfig } from './use-ethereum-config';
import { useDefaultWeb3Provider } from './default-web3-provider';
import { localLoggerFactory } from '@vegaprotocol/logger';
export const useBridgeContract = (allowDefaultProvider = false) => {
const { provider: activeProvider } = useWeb3React();
const { provider: defaultProvider } = useDefaultWeb3Provider();
const { config } = useEthereumConfig();
const logger = localLoggerFactory({ application: 'web3' });
const provider = useMemo(() => {
if (!activeProvider && allowDefaultProvider) {
logger.info('will use default web3 provider');
return defaultProvider;
}
return activeProvider;
}, [activeProvider, allowDefaultProvider, defaultProvider, logger]);
// this has to be memoized, otherwise it ticks like crazy
const signer = useMemo(() => {
return !activeProvider && allowDefaultProvider
? undefined
: activeProvider?.getSigner();
}, [activeProvider, allowDefaultProvider]);
const contract = useMemo(() => {
if (!provider || !config) {
return null;
}
return new CollateralBridge(
config.collateral_bridge_contract.address,
signer || provider
);
}, [provider, signer, config]);
return contract;
};