sui-explorer-local
Version:
Local Sui Explorer
52 lines (44 loc) • 1.4 kB
text/typescript
// 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),
});
}