mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* redesign "add chain" button * fix wallet detection * [skip ci] update default value for ENV * fix tests * return button to the footer and add source to mixpanel event * regcred from helmfile for review * [skip ci] remove wallets env from values for demo stand * use react-query to cache detection result * add cookie to hide button in the topbar * add prefix to svg ids to fix rabby icon * update screenshot * remove unnecessary comment --------- Co-authored-by: Nick Zenchik <[email protected]>
36 lines
998 B
TypeScript
36 lines
998 B
TypeScript
import { get } from 'es-toolkit/compat';
|
|
import React from 'react';
|
|
|
|
import getErrorObj from 'lib/errors/getErrorObj';
|
|
|
|
import useAddChain from './useAddChain';
|
|
import useProvider from './useProvider';
|
|
import useSwitchChain from './useSwitchChain';
|
|
|
|
export default function useSwitchOrAddChain() {
|
|
const { data: { wallet, provider } = {} } = useProvider();
|
|
const addChain = useAddChain();
|
|
const switchChain = useSwitchChain();
|
|
|
|
return React.useCallback(async() => {
|
|
if (!wallet || !provider) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
return switchChain();
|
|
} catch (error) {
|
|
const errorObj = getErrorObj(error);
|
|
const code = get(errorObj, 'code');
|
|
const originalErrorCode = get(errorObj, 'data.originalError.code');
|
|
|
|
// This error code indicates that the chain has not been added to Wallet.
|
|
if (code === 4902 || originalErrorCode === 4902) {
|
|
return addChain();
|
|
}
|
|
|
|
throw error;
|
|
}
|
|
}, [ addChain, provider, wallet, switchChain ]);
|
|
}
|