dydx-v4-web/src/hooks/useSelectedNetwork.ts

37 lines
1.1 KiB
TypeScript

import { useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { LocalStorageKey } from '@/constants/localStorage';
import { DEFAULT_APP_ENVIRONMENT, DydxNetwork } from '@/constants/networks';
import { useAccounts, useLocalStorage } from '@/hooks';
import { setSelectedNetwork } from '@/state/app';
import { getSelectedNetwork } from '@/state/appSelectors';
export const useSelectedNetwork = (): {
switchNetwork: (network: DydxNetwork) => void;
selectedNetwork: DydxNetwork;
} => {
const dispatch = useDispatch();
const { disconnect } = useAccounts();
const selectedNetwork = useSelector(getSelectedNetwork);
const [, setLocalStorageNetwork] = useLocalStorage<DydxNetwork>({
key: LocalStorageKey.SelectedNetwork,
defaultValue: DEFAULT_APP_ENVIRONMENT,
});
const switchNetwork = useCallback(
(network: DydxNetwork) => {
disconnect();
setLocalStorageNetwork(network);
dispatch(setSelectedNetwork(network));
},
[dispatch, disconnect, setLocalStorageNetwork]
);
return { switchNetwork, selectedNetwork };
};