diff --git a/CHANGELOG.md b/CHANGELOG.md index 63f15eb46..dd8114b1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +- [#333](https://github.com/alleslabs/celatone-frontend/pull/333) Update endpoints including LCD, RPC, Graphql - [#268](https://github.com/alleslabs/celatone-frontend/pull/268) Wireup create proposal to whitelisting - [#266](https://github.com/alleslabs/celatone-frontend/pull/250) Add proposal whitelisting page - [#286](https://github.com/alleslabs/celatone-frontend/pull/286) Add block proposer diff --git a/codegen.ts b/codegen.ts index 41900b584..3dfe44af9 100644 --- a/codegen.ts +++ b/codegen.ts @@ -1,5 +1,8 @@ import type { CodegenConfig } from "@graphql-codegen/cli"; +/** + * @remarks Update schema when it is needed + */ const config: CodegenConfig = { schema: "https://osmosis-testnet-graphql.alleslabs.dev/v1/graphql", documents: ["src/**/*.tsx", "src/**/*.ts"], diff --git a/src/env.ts b/src/env.ts index 4f4220cbc..891854184 100644 --- a/src/env.ts +++ b/src/env.ts @@ -18,14 +18,6 @@ export const DEFAULT_SUPPORTED_CHAIN_ID = SUPPORTED_CHAIN_IDS[0]; export const DUMMY_MNEMONIC = process.env.NEXT_PUBLIC_DUMMY_MNEMONIC; -// TODO: Below are deprecated. Remove them later -export const FALLBACK_LCD_ENDPOINT: Record = { - osmosis: "https://lcd.osmosis.zone/", - osmosistestnet: "https://lcd-test.osmosis.zone/", - terra2: "https://phoenix-lcd.terra.dev/", - terra2testnet: "https://pisco-lcd.terra.dev/", -}; - export const SELECTED_CHAIN = process.env .NEXT_PUBLIC_SELECTED_CHAIN as SupportedChain; diff --git a/src/lib/app-provider/hooks/index.ts b/src/lib/app-provider/hooks/index.ts index 973f957ea..38e2212c1 100644 --- a/src/lib/app-provider/hooks/index.ts +++ b/src/lib/app-provider/hooks/index.ts @@ -12,3 +12,4 @@ export * from "./useSelectChain"; export * from "./useSimulateFee"; export * from "./useTokensInfo"; export * from "./useCurrentNetwork"; +export * from "./useRPCEndpoint"; diff --git a/src/lib/app-provider/hooks/useLCDEndpoint.ts b/src/lib/app-provider/hooks/useLCDEndpoint.ts index 4eb9f1442..a620c19f8 100644 --- a/src/lib/app-provider/hooks/useLCDEndpoint.ts +++ b/src/lib/app-provider/hooks/useLCDEndpoint.ts @@ -1,12 +1,10 @@ import { useWallet } from "@cosmos-kit/react"; -import { FALLBACK_LCD_ENDPOINT } from "env"; +import { useCelatoneApp } from "../contexts"; export const useLCDEndpoint = () => { - const { currentChainRecord, currentChainName } = useWallet(); + const { currentChainRecord } = useWallet(); + const { chainConfig } = useCelatoneApp(); - return ( - currentChainRecord?.preferredEndpoints?.rest?.[0] ?? - FALLBACK_LCD_ENDPOINT[currentChainName] - ); + return currentChainRecord?.preferredEndpoints?.rest?.[0] ?? chainConfig.lcd; }; diff --git a/src/lib/app-provider/hooks/useRPCEndpoint.ts b/src/lib/app-provider/hooks/useRPCEndpoint.ts new file mode 100644 index 000000000..97d81f39c --- /dev/null +++ b/src/lib/app-provider/hooks/useRPCEndpoint.ts @@ -0,0 +1,10 @@ +import { useWallet } from "@cosmos-kit/react"; + +import { useCelatoneApp } from "../contexts"; + +export const useRPCEndpoint = () => { + const { currentChainRecord } = useWallet(); + const { chainConfig } = useCelatoneApp(); + + return currentChainRecord?.preferredEndpoints?.rpc?.[0] ?? chainConfig.rpc; +}; diff --git a/src/lib/app-provider/queries/simulateFee.ts b/src/lib/app-provider/queries/simulateFee.ts index a7980b551..94b7e7d84 100644 --- a/src/lib/app-provider/queries/simulateFee.ts +++ b/src/lib/app-provider/queries/simulateFee.ts @@ -2,7 +2,7 @@ import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import { useWallet } from "@cosmos-kit/react"; import { useQuery } from "@tanstack/react-query"; -import { useDummyWallet } from "../hooks"; +import { useDummyWallet, useRPCEndpoint } from "../hooks"; import type { ComposedMsg, Gas } from "lib/types"; interface SimulateQueryParams { @@ -20,22 +20,21 @@ export const useSimulateFeeQuery = ({ onSuccess, onError, }: SimulateQueryParams) => { - const { address, getCosmWasmClient, currentChainName, currentChainRecord } = - useWallet(); + const { address, getCosmWasmClient, currentChainName } = useWallet(); const { dummyWallet, dummyAddress } = useDummyWallet(); - + const rpcEndpoint = useRPCEndpoint(); const userAddress = isDummyUser ? dummyAddress : address || dummyAddress; const simulateFn = async (msgs: ComposedMsg[]) => { // TODO: revisit this logic - if (!currentChainRecord?.preferredEndpoints?.rpc?.[0] || !userAddress) { - throw new Error("No RPC endpoint or user address"); + if (!userAddress) { + throw new Error("No user address"); } const client = dummyWallet && (isDummyUser || !address) ? await SigningCosmWasmClient.connectWithSigner( - currentChainRecord.preferredEndpoints.rpc[0], + rpcEndpoint, dummyWallet ) : await getCosmWasmClient(); @@ -48,7 +47,13 @@ export const useSimulateFeeQuery = ({ }; return useQuery({ - queryKey: ["simulate", currentChainName, userAddress, messages], + queryKey: [ + "simulate", + currentChainName, + userAddress, + messages, + rpcEndpoint, + ], queryFn: async ({ queryKey }) => simulateFn(queryKey[3] as ComposedMsg[]), enabled, keepPreviousData: true, diff --git a/src/lib/app-provider/query-client/index.ts b/src/lib/app-provider/query-client/index.ts deleted file mode 100644 index 91d1b7b32..000000000 --- a/src/lib/app-provider/query-client/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { GraphQLClient } from "graphql-request"; - -export const GRAPH_URL: Record = { - /** - * Revisit graphql for terra2 mainnet and osmosis mainnet - */ - osmosis: "https://osmosis-mainnet-graphql.alleslabs.dev/v1/graphql", - osmosistestnet: "https://osmosis-testnet-graphql.alleslabs.dev/v1/graphql", - terra2testnet: "https://terra-testnet-graphql.alleslabs.dev/v1/graphql", -}; - -export const getIndexerGraphClient = (currentChainName: string) => - new GraphQLClient(GRAPH_URL[currentChainName]); diff --git a/src/lib/components/ContractSelectSection.tsx b/src/lib/components/ContractSelectSection.tsx index 3def8dcec..01d7e26de 100644 --- a/src/lib/components/ContractSelectSection.tsx +++ b/src/lib/components/ContractSelectSection.tsx @@ -136,7 +136,7 @@ export const ContractSelectSection = observer( const { getContractLocalInfo } = useContractStore(); const { indexerGraphClient } = useCelatoneApp(); const isMobile = useMobile(); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const contractLocalInfo = getContractLocalInfo(contractAddress); const { @@ -156,12 +156,12 @@ export const ContractSelectSection = observer( [ "query", "instantiate_info", - endpoint, + lcdEndpoint, indexerGraphClient, contractAddress, ], async () => - queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), + queryInstantiateInfo(lcdEndpoint, indexerGraphClient, contractAddress), { enabled: false, retry: false, @@ -188,7 +188,7 @@ export const ContractSelectSection = observer( label: contractLocalInfo.label, }); } - }, [contractAddress, contractLocalInfo, endpoint, reset, refetch]); + }, [contractAddress, contractLocalInfo, lcdEndpoint, reset, refetch]); const contractState = watch(); const notSelected = contractAddress.length === 0; diff --git a/src/lib/components/modal/CodeSnippet.tsx b/src/lib/components/modal/CodeSnippet.tsx index bd890bf68..27ac1f88c 100644 --- a/src/lib/components/modal/CodeSnippet.tsx +++ b/src/lib/components/modal/CodeSnippet.tsx @@ -19,10 +19,10 @@ import AceEditor from "react-ace"; import { CopyButton } from "../copy"; import { CustomIcon } from "../icon"; -import { useLCDEndpoint } from "lib/app-provider"; +import { useLCDEndpoint, useRPCEndpoint } from "lib/app-provider"; import { CustomTab } from "lib/components/CustomTab"; import { AmpEvent, AmpTrack } from "lib/services/amplitude"; -import type { ContractAddr, Option } from "lib/types"; +import type { ContractAddr } from "lib/types"; import "ace-builds/src-noconflict/ace"; import "ace-builds/src-noconflict/mode-sh"; @@ -36,21 +36,6 @@ interface CodeSnippetProps { type: "query" | "execute"; } -/** - * - * @todo: This is a temporary solution to get the full RPC URL for Osmosis. - */ -const getFullRpcUrl = (rpcUrl: Option, chainId: Option) => { - const baseUrl = rpcUrl?.slice(0, rpcUrl.length - 1); - switch (chainId) { - case "osmosis-1": - case "osmo-test-4": - return `${baseUrl}:443`; - default: - return `${baseUrl}:26657`; - } -}; - const CodeSnippet = ({ contractAddress, message, @@ -59,10 +44,9 @@ const CodeSnippet = ({ const { isOpen, onClose, onOpen } = useDisclosure(); const { currentChainRecord, currentChainName } = useWallet(); const isDisabled = !contractAddress || !message.length; - - const endpoint = useLCDEndpoint(); const client = currentChainRecord?.chain.daemon_name; - const rpcUrl = currentChainRecord?.preferredEndpoints?.rpc?.[0]; + const lcdEndpoint = useLCDEndpoint(); + const rpcEndpoint = useRPCEndpoint(); const chainId = currentChainRecord?.chain.chain_id; const codeSnippets: Record< string, @@ -75,7 +59,7 @@ const CodeSnippet = ({ snippet: `export CHAIN_ID='${chainId}'\n export CONTRACT_ADDRESS='${contractAddress}'\n export QUERY_MSG='${message}'\n -export RPC_URL='${getFullRpcUrl(rpcUrl, chainId)}'\n +export RPC_URL='${rpcEndpoint}'\n ${client} query wasm contract-state smart $CONTRACT_ADDRESS $QUERY_MSG \\ --chain-id $CHAIN_ID \\ --node $RPC_URL`, @@ -86,7 +70,7 @@ ${client} query wasm contract-state smart $CONTRACT_ADDRESS $QUERY_MSG \\ snippet: `import base64 import requests\n CONTRACT_ADDRESS = "${contractAddress}" -LCD_URL = "${endpoint}" +LCD_URL = "${lcdEndpoint}" QUERY_MSG = b'''${message}'''\n query_b64encoded = base64.b64encode(QUERY_MSG).decode("ascii") res = requests.get( @@ -98,7 +82,7 @@ print(res)`, name: "CosmJS", mode: "javascript", snippet: `const { SigningCosmWasmClient } = require("@cosmjs/cosmwasm-stargate"); -const rpcURL = "${rpcUrl}"; +const rpcURL = "${rpcEndpoint}"; const contractAddress = "${contractAddress}"; const queryMsg = \`${message}\`;\n @@ -116,7 +100,7 @@ queryContract(rpcURL, contractAddress, queryMsg);`, name: "Axios", mode: "javascript", snippet: `const axios = require('axios');\n -const lcdURL = '${endpoint}'; +const lcdURL = '${lcdEndpoint}'; const contractAddress = "${contractAddress}"; const queryMsg = ${message};\n @@ -134,7 +118,7 @@ queryContract();`, mode: "sh", snippet: `${client} keys add --recover celatone\n export CHAIN_ID='${chainId}'\n -export RPC_URL='${getFullRpcUrl(rpcUrl, chainId)}'\n +export RPC_URL='${rpcEndpoint}'\n export CONTRACT_ADDRESS='${contractAddress}'\n export EXECUTE_MSG='${message}'\n ${client} tx wasm execute $CONTRACT_ADDRESS $EXECUTE_MSG \\ @@ -158,7 +142,7 @@ const contractAddress = '${contractAddress}'; const execute = async () => { - const rpcEndpoint = '${rpcUrl}'; + const rpcEndpoint = '${rpcEndpoint}'; const signer = await getOfflineSignerAmino({ mnemonic, chain }); const client = await SigningCosmWasmClient.connectWithSigner( rpcEndpoint, diff --git a/src/lib/components/modal/code/SaveNewCode.tsx b/src/lib/components/modal/code/SaveNewCode.tsx index ac7e006bd..2eb5bf16b 100644 --- a/src/lib/components/modal/code/SaveNewCode.tsx +++ b/src/lib/components/modal/code/SaveNewCode.tsx @@ -53,11 +53,11 @@ export function SaveNewCodeModal({ buttonProps }: SaveNewCodeModalProps) { const toast = useToast(); const { isCodeIdSaved, saveNewCode, updateCodeInfo, getCodeLocalInfo } = useCodeStore(); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const { refetch, isFetching, isRefetching } = useQuery( - ["query", endpoint, codeId], - async () => getCodeIdInfo(endpoint, Number(codeId)), + ["query", lcdEndpoint, codeId], + async () => getCodeIdInfo(lcdEndpoint, Number(codeId)), { enabled: false, retry: false, diff --git a/src/lib/components/modal/contract/SaveNewContract.tsx b/src/lib/components/modal/contract/SaveNewContract.tsx index 76c1f70fa..a0764aeae 100644 --- a/src/lib/components/modal/contract/SaveNewContract.tsx +++ b/src/lib/components/modal/contract/SaveNewContract.tsx @@ -41,7 +41,8 @@ export function SaveNewContractModal({ list, buttonProps, }: SaveNewContractModalProps) { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); + const { indexerGraphClient } = useCelatoneApp(); const { getContractLocalInfo } = useContractStore(); const { validateContractAddress } = useValidateAddress(); @@ -102,10 +103,10 @@ export function SaveNewContractModal({ // TODO: Abstract query const { refetch } = useQuery( - ["query", "instantiate_info", endpoint, contractAddressState], + ["query", "instantiate_info", lcdEndpoint, contractAddressState], async () => queryInstantiateInfo( - endpoint, + lcdEndpoint, indexerGraphClient, contractAddressState as ContractAddr ), diff --git a/src/lib/components/select-contract/SelectContractInstantiator.tsx b/src/lib/components/select-contract/SelectContractInstantiator.tsx index 719de8025..d0acdea20 100644 --- a/src/lib/components/select-contract/SelectContractInstantiator.tsx +++ b/src/lib/components/select-contract/SelectContractInstantiator.tsx @@ -63,7 +63,7 @@ export const SelectContractInstantiator = ({ const contractLists = [instantiatedListInfo, ...getContractLists()]; const contractList = contractLists.find((item) => item.slug === listSlug); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const resetOnClose = () => { setListSlug(""); @@ -80,8 +80,8 @@ export const SelectContractInstantiator = ({ // TODO: Abstract query const { refetch, isFetching, isRefetching } = useQuery( - ["query", "contract", searchContract, endpoint], - async () => queryContract(endpoint, searchContract as ContractAddr), + ["query", "contract", searchContract, lcdEndpoint], + async () => queryContract(lcdEndpoint, searchContract as ContractAddr), { enabled: false, retry: false, diff --git a/src/lib/hooks/useQueryCmds.ts b/src/lib/hooks/useQueryCmds.ts index 7286a7229..13b252782 100644 --- a/src/lib/hooks/useQueryCmds.ts +++ b/src/lib/hooks/useQueryCmds.ts @@ -8,12 +8,12 @@ import type { ContractAddr, RpcQueryError } from "lib/types"; export const useQueryCmds = (contractAddress: ContractAddr) => { const [queryCmds, setQueryCmds] = useState<[string, string][]>([]); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const { isFetching } = useQuery( - ["query", "cmds", endpoint, contractAddress, '{"": {}}'], + ["query", "cmds", lcdEndpoint, contractAddress, '{"": {}}'], async () => - queryData(endpoint, contractAddress as ContractAddr, '{"": {}}'), + queryData(lcdEndpoint, contractAddress as ContractAddr, '{"": {}}'), { enabled: !!contractAddress, retry: false, diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index e213085b1..692a2f307 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -95,7 +95,8 @@ export const useContractData = ( const { currentChainRecord } = useWallet(); const { getCodeLocalInfo } = useCodeStore(); const { getContractLocalInfo } = useContractStore(); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); + const { assetInfos } = useAssetInfos(); const { data: publicInfo } = usePublicProjectByContractAddress(contractAddress); @@ -104,16 +105,16 @@ export const useContractData = ( const { data: instantiateInfo, isLoading: isInstantiateInfoLoading } = useQuery( - ["query", "instantiate_info", endpoint, contractAddress], + ["query", "instantiate_info", lcdEndpoint, contractAddress], async () => - queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), + queryInstantiateInfo(lcdEndpoint, indexerGraphClient, contractAddress), { enabled: !!currentChainRecord && !!contractAddress, retry: false } ); const { data: contractCw2Info, isLoading: isContractCw2InfoLoading } = useQuery( - ["query", "contract_cw2_info", endpoint, contractAddress], - async () => queryContractCw2Info(endpoint, contractAddress), + ["query", "contract_cw2_info", lcdEndpoint, contractAddress], + async () => queryContractCw2Info(lcdEndpoint, contractAddress), { enabled: !!currentChainRecord && !!contractAddress, retry: false } ); diff --git a/src/lib/pages/admin/index.tsx b/src/lib/pages/admin/index.tsx index 386958a34..5a2536313 100644 --- a/src/lib/pages/admin/index.tsx +++ b/src/lib/pages/admin/index.tsx @@ -42,7 +42,8 @@ const UpdateAdmin = () => { const fabricateFee = useFabricateFee(); const updateAdminTx = useUpdateAdminTx(); const { broadcast } = useTxBroadcast(); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); + const { indexerGraphClient } = useCelatoneApp(); const [adminAddress, setAdminAddress] = useState(""); @@ -115,12 +116,16 @@ const UpdateAdmin = () => { [ "query", "instantiate_info", - endpoint, + lcdEndpoint, indexerGraphClient, contractAddressParam, ], async () => - queryInstantiateInfo(endpoint, indexerGraphClient, contractAddressParam), + queryInstantiateInfo( + lcdEndpoint, + indexerGraphClient, + contractAddressParam + ), { enabled: !!contractAddressParam, refetchOnWindowFocus: false, diff --git a/src/lib/pages/instantiate/instantiate.tsx b/src/lib/pages/instantiate/instantiate.tsx index 7a8da7a51..ef97a687f 100644 --- a/src/lib/pages/instantiate/instantiate.tsx +++ b/src/lib/pages/instantiate/instantiate.tsx @@ -71,7 +71,8 @@ const Instantiate = ({ onComplete }: InstantiatePageProps) => { }, } = useCelatoneApp(); const { address = "" } = useWallet(); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); + const postInstantiateTx = useInstantiateTx(); const { simulate } = useSimulateFee(); const fabricateFee = useFabricateFee(); @@ -145,8 +146,8 @@ const Instantiate = ({ onComplete }: InstantiatePageProps) => { }); const { refetch } = useQuery( - ["query", endpoint, codeId], - async () => getCodeIdInfo(endpoint, Number(codeId)), + ["query", lcdEndpoint, codeId], + async () => getCodeIdInfo(lcdEndpoint, Number(codeId)), { enabled: !!address && !!codeId.length, retry: false, diff --git a/src/lib/pages/migrate/components/MigrateContract.tsx b/src/lib/pages/migrate/components/MigrateContract.tsx index 354a7444c..0ddfe1053 100644 --- a/src/lib/pages/migrate/components/MigrateContract.tsx +++ b/src/lib/pages/migrate/components/MigrateContract.tsx @@ -37,7 +37,8 @@ export const MigrateContract = ({ }: MigrateContractProps) => { const { address } = useWallet(); const { broadcast } = useTxBroadcast(); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); + const migrateTx = useMigrateTx(); const fabricateFee = useFabricateFee(); @@ -79,8 +80,8 @@ export const MigrateContract = ({ }); const { refetch } = useQuery( - ["query", endpoint, codeId], - async () => getCodeIdInfo(endpoint, Number(codeId)), + ["query", lcdEndpoint, codeId], + async () => getCodeIdInfo(lcdEndpoint, Number(codeId)), { enabled: !!address && !!codeId.length, retry: false, diff --git a/src/lib/pages/migrate/index.tsx b/src/lib/pages/migrate/index.tsx index a72b8fff7..1b7a1146e 100644 --- a/src/lib/pages/migrate/index.tsx +++ b/src/lib/pages/migrate/index.tsx @@ -35,7 +35,8 @@ const Migrate = () => { const { indexerGraphClient } = useCelatoneApp(); const router = useRouter(); const navigate = useInternalNavigate(); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); + const { address = "" } = useWallet(); const { setValue, watch } = useForm({ @@ -67,9 +68,9 @@ const Migrate = () => { ); useQuery( - ["query", "instantiate_info", endpoint, contractAddress], + ["query", "instantiate_info", lcdEndpoint, contractAddress], async () => - queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), + queryInstantiateInfo(lcdEndpoint, indexerGraphClient, contractAddress), { enabled: !!contractAddress, retry: 0, diff --git a/src/lib/pages/query/components/QueryArea.tsx b/src/lib/pages/query/components/QueryArea.tsx index 95fdd4516..4d3d77889 100644 --- a/src/lib/pages/query/components/QueryArea.tsx +++ b/src/lib/pages/query/components/QueryArea.tsx @@ -40,7 +40,8 @@ export const QueryArea = ({ initialMsg, cmds, }: QueryAreaProps) => { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); + const userKey = useUserKey(); const { addActivity } = useContractStore(); const { address } = useWallet(); @@ -50,8 +51,8 @@ export const QueryArea = ({ // TODO: Abstract query const { refetch, isFetching, isRefetching } = useQuery( - ["query", endpoint, contractAddress, msg], - async () => queryData(endpoint, contractAddress, msg), + ["query", lcdEndpoint, contractAddress, msg], + async () => queryData(lcdEndpoint, contractAddress, msg), { enabled: false, retry: false, diff --git a/src/lib/pages/query/index.tsx b/src/lib/pages/query/index.tsx index 14e5861c9..cf04175ad 100644 --- a/src/lib/pages/query/index.tsx +++ b/src/lib/pages/query/index.tsx @@ -25,7 +25,7 @@ import { QueryArea } from "./components/QueryArea"; const Query = () => { const router = useRouter(); const navigate = useInternalNavigate(); - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const [contractAddress, setContractAddress] = useState("" as ContractAddr); const [initialMsg, setInitialMsg] = useState(""); @@ -51,8 +51,8 @@ const Query = () => { // TODO: Abstract query and make query key const { isFetching } = useQuery( - ["query", "cmds", endpoint, contractAddress, '{"": {}}'], - async () => queryData(endpoint, contractAddress, '{"": {}}'), + ["query", "cmds", lcdEndpoint, contractAddress, '{"": {}}'], + async () => queryData(lcdEndpoint, contractAddress, '{"": {}}'), { enabled: !!contractAddress, retry: false, diff --git a/src/lib/services/code.ts b/src/lib/services/code.ts index db6075bcc..d0da1e638 100644 --- a/src/lib/services/code.ts +++ b/src/lib/services/code.ts @@ -21,7 +21,7 @@ export const getCodeIdInfo = async ( id: number ): Promise => { const { data } = await axios.get( - `${endpoint}cosmwasm/wasm/v1/code/${id}` + `${endpoint}/cosmwasm/wasm/v1/code/${id}` ); return data; }; diff --git a/src/lib/services/contract.ts b/src/lib/services/contract.ts index b77c59d50..2007b5e0e 100644 --- a/src/lib/services/contract.ts +++ b/src/lib/services/contract.ts @@ -64,7 +64,7 @@ export const queryData = async ( ) => { const b64 = encode(msg); const { data } = await axios.get( - `${endpoint}cosmwasm/wasm/v1/contract/${contractAddress}/smart/${b64}` + `${endpoint}/cosmwasm/wasm/v1/contract/${contractAddress}/smart/${b64}` ); return data; }; @@ -74,7 +74,7 @@ export const queryContract = async ( contractAddress: ContractAddr ) => { const { data } = await axios.get( - `${endpoint}cosmwasm/wasm/v1/contract/${contractAddress}` + `${endpoint}/cosmwasm/wasm/v1/contract/${contractAddress}` ); return data; }; @@ -84,7 +84,7 @@ export const queryContractCw2Info = async ( contractAddress: ContractAddr ) => { const { data } = await axios.get( - `${endpoint}cosmwasm/wasm/v1/contract/${contractAddress}/raw/Y29udHJhY3RfaW5mbw%3D%3D` + `${endpoint}/cosmwasm/wasm/v1/contract/${contractAddress}/raw/Y29udHJhY3RfaW5mbw%3D%3D` ); return JSON.parse(libDecode(data.data)) as ContractCw2Info; }; diff --git a/src/lib/services/delegationService.ts b/src/lib/services/delegationService.ts index 82dd523c0..f334009ac 100644 --- a/src/lib/services/delegationService.ts +++ b/src/lib/services/delegationService.ts @@ -23,77 +23,80 @@ import { } from "./delegation"; export const useStakingParams = (): UseQueryResult => { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const queryFn = useCallback( - async () => getStakingParams(endpoint), - [endpoint] + async () => getStakingParams(lcdEndpoint), + [lcdEndpoint] ); - return useQuery(["query", "staking_params", endpoint], queryFn); + return useQuery(["query", "staking_params", lcdEndpoint], queryFn); }; export const useDelegations = ( address: Addr ): UseQueryResult => { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const queryFn = useCallback( - async () => getDelegations(endpoint, address), - [address, endpoint] + async () => getDelegations(lcdEndpoint, address), + [address, lcdEndpoint] ); - return useQuery(["query", "delegations", endpoint, address], queryFn); + return useQuery(["query", "delegations", lcdEndpoint, address], queryFn); }; export const useUnbondings = ( address: Addr ): UseQueryResult => { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const queryFn = useCallback( - async () => getUnbondings(endpoint, address), - [address, endpoint] + async () => getUnbondings(lcdEndpoint, address), + [address, lcdEndpoint] ); - return useQuery(["query", "unbondings", endpoint, address], queryFn); + return useQuery(["query", "unbondings", lcdEndpoint, address], queryFn); }; export const useDelegationRewards = ( address: Addr ): UseQueryResult => { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const queryFn = useCallback( - async () => getDelegationRewards(endpoint, address), - [address, endpoint] + async () => getDelegationRewards(lcdEndpoint, address), + [address, lcdEndpoint] ); - return useQuery(["query", "delegation_rewards", endpoint, address], queryFn); + return useQuery( + ["query", "delegation_rewards", lcdEndpoint, address], + queryFn + ); }; export const useRedelegations = ( address: Addr ): UseQueryResult => { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const queryFn = useCallback( - async () => getRedelegations(endpoint, address), - [address, endpoint] + async () => getRedelegations(lcdEndpoint, address), + [address, lcdEndpoint] ); - return useQuery(["query", "redelegations", endpoint, address], queryFn); + return useQuery(["query", "redelegations", lcdEndpoint, address], queryFn); }; export const useCommission = ( address: ValidatorAddr ): UseQueryResult => { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); const queryFn = useCallback( - async () => getCommission(endpoint, address), - [address, endpoint] + async () => getCommission(lcdEndpoint, address), + [address, lcdEndpoint] ); - return useQuery(["query", "commission", endpoint, address], queryFn); + return useQuery(["query", "commission", lcdEndpoint, address], queryFn); }; diff --git a/src/lib/services/validatorService.ts b/src/lib/services/validatorService.ts index 6fd7f67df..87a707622 100644 --- a/src/lib/services/validatorService.ts +++ b/src/lib/services/validatorService.ts @@ -10,9 +10,12 @@ import { getValidators } from "./validator"; export const useValidators = (): UseQueryResult< Record > => { - const endpoint = useLCDEndpoint(); + const lcdEndpoint = useLCDEndpoint(); - const queryFn = useCallback(async () => getValidators(endpoint), [endpoint]); + const queryFn = useCallback( + async () => getValidators(lcdEndpoint), + [lcdEndpoint] + ); - return useQuery(["query", "validators", endpoint], queryFn); + return useQuery(["query", "validators", lcdEndpoint], queryFn); };