UNPKG

sui-explorer-local

Version:
52 lines (44 loc) 1.4 kB
// Copyright (c) Mysten Labs, Inc. // SPDX-License-Identifier: Apache-2.0 import { useSuiClientContext } from "@mysten/dapp-kit"; import { useQuery } from "@tanstack/react-query"; import { Network } from "~/utils/api/DefaultRpcClient"; type UseVerifiedSourceCodeArgs = { packageId: string; moduleName: string; }; type UseVerifiedSourceCodeResponse = { source?: string; error?: string; }; const networksWithSourceCodeVerification: Network[] = [ Network.DEVNET, Network.TESTNET, Network.MAINNET, ]; /** * Hook that retrieves the source code for verified modules. */ export function useVerifiedSourceCode({ packageId, moduleName, }: UseVerifiedSourceCodeArgs) { const { network } = useSuiClientContext(); const isEnabled = true; return useQuery({ queryKey: ["verified-source-code", packageId, moduleName, network], queryFn: async () => { const response = await fetch( `https://source.mystenlabs.com/api?network=${network.toLowerCase()}&address=${packageId}&module=${moduleName}` ); if (!response.ok) { throw new Error(`Encountered unexpected response: ${response.status}`); } const jsonResponse: UseVerifiedSourceCodeResponse = await response.json(); return jsonResponse.source || null; }, enabled: isEnabled && networksWithSourceCodeVerification.includes(network as Network), }); }