diff --git a/CHANGELOG.md b/CHANGELOG.md index 15dd4c31c..7506aa0ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,6 +102,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Improvements +- [#135](https://github.com/alleslabs/celatone-frontend/pull/135) Invalidate queries after update/clear admin tx - [#123](https://github.com/alleslabs/celatone-frontend/pull/123) Refactor tables to use custom components - [#128](https://github.com/alleslabs/celatone-frontend/pull/128) Rewrite add to other list state and add default list to save to - [#114](https://github.com/alleslabs/celatone-frontend/pull/114) Handle wallet connection cases in instantiate button diff --git a/src/lib/app-fns/tx/clearAdmin.tsx b/src/lib/app-fns/tx/clearAdmin.tsx index 52e0a156a..8eb485014 100644 --- a/src/lib/app-fns/tx/clearAdmin.tsx +++ b/src/lib/app-fns/tx/clearAdmin.tsx @@ -23,7 +23,7 @@ interface ClearAdminTxParams { fee: StdFee; memo?: string; client: SigningCosmWasmClient; - onTxSucceed?: (txHash: string) => void; + onTxSucceed?: () => void; } export const clearAdminTx = ({ @@ -40,7 +40,7 @@ export const clearAdminTx = ({ postFn: () => client.clearAdmin(address, contractAddress, fee, memo), }), ({ value: txInfo }) => { - onTxSucceed?.(txInfo.transactionHash); + onTxSucceed?.(); return { value: null, phase: TxStreamPhase.SUCCEED, diff --git a/src/lib/app-provider/tx/clearAdmin.ts b/src/lib/app-provider/tx/clearAdmin.ts index 601538350..a9828f79b 100644 --- a/src/lib/app-provider/tx/clearAdmin.ts +++ b/src/lib/app-provider/tx/clearAdmin.ts @@ -1,4 +1,5 @@ import { useWallet } from "@cosmos-kit/react"; +import { useQueryClient } from "@tanstack/react-query"; import { useCallback } from "react"; import { useFabricateFee } from "../hooks"; @@ -7,11 +8,12 @@ import { CLEAR_ADMIN_GAS } from "lib/data"; import type { ContractAddr } from "lib/types"; export interface ClearAdminStreamParams { - onTxSucceed?: (txHash: string) => void; + onTxSucceed?: () => void; } export const useClearAdminTx = (contractAddress: ContractAddr) => { const { address, getCosmWasmClient } = useWallet(); + const queryClient = useQueryClient(); const fabricateFee = useFabricateFee(); const clearAdminFee = fabricateFee(CLEAR_ADMIN_GAS); @@ -26,9 +28,19 @@ export const useClearAdminTx = (contractAddress: ContractAddr) => { contractAddress, fee: clearAdminFee, client, - onTxSucceed, + onTxSucceed: () => { + onTxSucceed?.(); + Promise.all([ + queryClient.invalidateQueries({ + queryKey: ["admin_by_contracts"], + }), + queryClient.invalidateQueries({ + queryKey: ["query", "instantiate_info"], + }), + ]); + }, }); }, - [address, clearAdminFee, contractAddress, getCosmWasmClient] + [address, clearAdminFee, queryClient, contractAddress, getCosmWasmClient] ); }; diff --git a/src/lib/components/ContractSelectSection.tsx b/src/lib/components/ContractSelectSection.tsx index 990e6b075..7a8d895da 100644 --- a/src/lib/components/ContractSelectSection.tsx +++ b/src/lib/components/ContractSelectSection.tsx @@ -123,7 +123,7 @@ export const ContractSelectSection = observer( }); const { refetch } = useQuery( - ["query", "instantiateInfo", endpoint, contractAddress], + ["query", "instantiate_info", endpoint, contractAddress], async () => queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), { diff --git a/src/lib/components/modal/contract/ClearAdminContract.tsx b/src/lib/components/modal/contract/ClearAdminContract.tsx index 1644d903d..feb7b080d 100644 --- a/src/lib/components/modal/contract/ClearAdminContract.tsx +++ b/src/lib/components/modal/contract/ClearAdminContract.tsx @@ -20,7 +20,7 @@ export const ClearAdminContract = ({ const clearAdminTx = useClearAdminTx(contractAddress); const proceed = useCallback(async () => { - const stream = await clearAdminTx({ onTxSucceed: () => {} }); + const stream = await clearAdminTx({}); if (stream) broadcast(stream); }, [broadcast, clearAdminTx]); diff --git a/src/lib/components/modal/contract/SaveNewContract.tsx b/src/lib/components/modal/contract/SaveNewContract.tsx index aabff1be3..240c6812a 100644 --- a/src/lib/components/modal/contract/SaveNewContract.tsx +++ b/src/lib/components/modal/contract/SaveNewContract.tsx @@ -95,7 +95,7 @@ export function SaveNewContract({ list, buttonProps }: SaveNewContractProps) { // TODO: Abstract query const { refetch } = useQuery( - ["query", "instantiateInfo", endpoint, contractAddressState], + ["query", "instantiate_info", endpoint, contractAddressState], async () => queryInstantiateInfo( endpoint, diff --git a/src/lib/model/contract.ts b/src/lib/model/contract.ts index 773eaf1a2..acf17f8c1 100644 --- a/src/lib/model/contract.ts +++ b/src/lib/model/contract.ts @@ -107,7 +107,7 @@ export const useContractData = ( const { data: publicInfoBySlug } = usePublicProjectBySlug(publicInfo?.slug); const { data: instantiateInfo } = useQuery( - ["query", "instantiateInfo", endpoint, contractAddress], + ["query", "instantiate_info", endpoint, contractAddress], async () => queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), { enabled: !!currentChainRecord } diff --git a/src/lib/pages/admin/index.tsx b/src/lib/pages/admin/index.tsx index d50f17ba6..904eb583b 100644 --- a/src/lib/pages/admin/index.tsx +++ b/src/lib/pages/admin/index.tsx @@ -109,7 +109,7 @@ const UpdateAdmin = () => { * @remarks Contract admin validation */ useQuery( - ["query", "instantiateInfo", endpoint, contractAddressParam], + ["query", "instantiate_info", endpoint, contractAddressParam], async () => queryInstantiateInfo(endpoint, indexerGraphClient, contractAddressParam), { diff --git a/src/lib/pages/migrate/index.tsx b/src/lib/pages/migrate/index.tsx index d7a62f35b..04a109808 100644 --- a/src/lib/pages/migrate/index.tsx +++ b/src/lib/pages/migrate/index.tsx @@ -62,7 +62,7 @@ const Migrate = () => { ); useQuery( - ["query", "instantiateInfo", endpoint, contractAddress], + ["query", "instantiate_info", endpoint, contractAddress], async () => queryInstantiateInfo(endpoint, indexerGraphClient, contractAddress), {