484d7888cf
Co-authored-by: Bartłomiej Głownia <bglownia@gmail.com>
42 lines
1.4 KiB
TypeScript
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;
|
|
};
|