sui-explorer-local
Version:
Local Sui Explorer
45 lines (32 loc) • 1.38 kB
text/typescript
// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
import { createContext, useContext, useMemo } from "react";
// eslint-disable-next-line no-restricted-imports
import { useSearchParams } from 'react-router-dom';
import { Network } from "./utils/api/DefaultRpcClient";
import { queryClient } from './utils/queryClient';
export const DEFAULT_NETWORK =
import.meta.env.VITE_NETWORK || (import.meta.env.DEV ? Network.LOCAL : Network.MAINNET);
export const NetworkContext = createContext<
[Network | string, (network: Network | string) => void]
>(['', () => null]);
export function useNetworkContext() {
return useContext(NetworkContext);
}
export function useNetwork(): [string, (network: Network | string) => void] {
const [searchParams, setSearchParams] = useSearchParams();
const network = useMemo(() => {
const networkParam = searchParams.get('network');
if (networkParam && (Object.values(Network) as string[]).includes(networkParam.toUpperCase())) {
return networkParam.toUpperCase();
}
return networkParam ?? DEFAULT_NETWORK;
}, [searchParams]);
const setNetwork = (network: Network | string) => {
// When resetting the network, we reset the query client at the same time:
queryClient.cancelQueries();
queryClient.clear();
setSearchParams({ network: network.toLowerCase() });
};
return [network, setNetwork];
}