Skip to content

Commit

Permalink
Merge pull request #925 from alleslabs/feature/contracts-new-structure
Browse files Browse the repository at this point in the history
Feat(utils): move contracts service into new folder structure wasm
  • Loading branch information
evilpeach committed May 15, 2024
2 parents ea8f779 + 18d3ff1 commit 3493a4a
Show file tree
Hide file tree
Showing 37 changed files with 837 additions and 867 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Features

- [#925](https://github.com/alleslabs/celatone-frontend/pull/925) Move contracts service to new folder structure
- [#926](https://github.com/alleslabs/celatone-frontend/pull/926) Add latest height query
- [#924](https://github.com/alleslabs/celatone-frontend/pull/924) Add Initia initiation-1 & minitia networks
- [#919](https://github.com/alleslabs/celatone-frontend/pull/919) Remove singleStakingDenom config and use from lcd instead
Expand Down
5 changes: 2 additions & 3 deletions src/lib/app-provider/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ export enum CELATONE_QUERY_KEYS {
// CONTRACT,CODE LCD
CODE_INFO = "CELATONE_QUERY_CODE_INFO",
CODE_INFO_LCD = "CELATONE_QUERY_CODE_INFO_LCD",
CONTRACT_DETAIL_BY_CONTRACT_ADDRESS = "CELATONE_QUERY_CONTRACT_DETAIL_BY_CONTRACT_ADDRESS",
CONTRACT_INFO = "CELATONE_QUERY_CONTRACT_INFO",
CONTRACT_LCD = "CELATONE_QUERY_CONTRACT_LCD",
CONTRACT_QUERY_MSGS = "CELATONE_QUERY_CONTRACT_QUERY_MSGS",
CONTRACT_QUERY = "CELATONE_QUERY_CONTRACT_QUERY",
CONTRACT_QUERY_LCD = "CELATONE_QUERY_CONTRACT_QUERY_LCD",
CONTRACT_STATE = "CELATONE_QUERY_CONTRACT_STATE",
CONTRACTS_BY_CODE_ID = "CELATONE_QUERY_CONTRACTS_BY_CODE_ID",
// ACCOUNT
Expand Down
20 changes: 10 additions & 10 deletions src/lib/components/ContractSelectSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { useForm } from "react-hook-form";

import { useMobile } from "lib/app-provider";
import { useContractStore } from "lib/providers/store";
import type { ContractDetail } from "lib/services/contractService";
import { useContractDetailByContractAddress } from "lib/services/contractService";
import type { ContractLcd } from "lib/services/types";
import { useContractLcd } from "lib/services/wasm/contract";
import type { ContractLocalInfo } from "lib/stores/contract";
import type { BechAddr, BechAddr32, Option } from "lib/types";

Expand Down Expand Up @@ -37,7 +37,7 @@ interface ContractSelectSectionProps {
mode: "all-lists" | "only-admin";
contractAddress: BechAddr32;
onContractSelect: (contract: BechAddr32) => void;
successCallback?: (data: ContractDetail) => void;
successCallback?: (data: ContractLcd) => void;
}

const modeStyle = (mode: string) => {
Expand Down Expand Up @@ -157,18 +157,18 @@ export const ContractSelectSection = observer(
mode: "all",
});

const { refetch, isFetching } = useContractDetailByContractAddress(
contractAddress,
(data) => {
const { refetch, isFetching } = useContractLcd(contractAddress, {
enabled: !!contractAddress,
onSuccess: (data) => {
successCallback?.(data);
reset({
isValid: true,
instantiator: data.instantiator,
label: data.label,
instantiator: data.contract.instantiator,
label: data.contract.label,
});
},
() => reset(defaultValues)
);
onError: () => reset(defaultValues),
});

useEffect(() => {
if (!contractLocalInfo) {
Expand Down
21 changes: 10 additions & 11 deletions src/lib/components/modal/contract/SaveNewContract.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { OffChainForm } from "lib/components/OffChainForm";
import { INSTANTIATED_LIST_NAME } from "lib/data";
import { useHandleContractSave } from "lib/hooks";
import { useContractStore } from "lib/providers/store";
import { useContractDetailByContractAddress } from "lib/services/contractService";
import { useContractLcd } from "lib/services/wasm/contract";
import type { BechAddr, BechAddr32, LVPair } from "lib/types";
import {
formatSlugName,
Expand Down Expand Up @@ -88,15 +88,14 @@ export function SaveNewContractModal({
});
};

const { refetch } = useContractDetailByContractAddress(
contractAddressState as BechAddr32,
(data) => {
const { refetch } = useContractLcd(contractAddressState as BechAddr32, {
onSuccess: (data) => {
const contractLocalInfo = getContractLocalInfo(contractAddressState);
reset({
contractAddress: contractAddressState,
instantiator: data.instantiator,
label: data.label,
name: contractLocalInfo?.name ?? data.label,
instantiator: data.contract.instantiator,
label: data.contract.label,
name: contractLocalInfo?.name ?? data.contract.label,
description: getNameAndDescriptionDefault(
contractLocalInfo?.description
),
Expand All @@ -113,14 +112,14 @@ export function SaveNewContractModal({
message: "Valid Contract Address",
});
},
(err) => {
onError: (err) => {
resetForm(false);
setStatus({
state: "error",
message: err.message,
message: (err as Error).message,
});
}
);
},
});

useEffect(() => {
if (contractAddressState.trim().length === 0) {
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/select-contract/ContractListDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { useCurrentChain } from "lib/app-provider";
import { DisconnectedState, EmptyState, ZeroState } from "lib/components/state";
import { TagSelection } from "lib/components/TagSelection";
import { INSTANTIATED_LIST_NAME } from "lib/data";
import { useAdminByContractAddresses } from "lib/services/contractService";
import { useAdminByContractAddresses } from "lib/services/wasm/contract";
import type { ContractListInfo } from "lib/stores/contract";
import type { BechAddr32, ContractInfo } from "lib/types";
import { formatSlugName } from "lib/utils";
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/select-contract/SelectContractAdmin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { useCurrentChain } from "lib/app-provider";
import { CustomIcon } from "lib/components/icon";
import { ADMIN_SPECIAL_SLUG } from "lib/data";
import { useContractStore } from "lib/providers/store";
import { useContractListByAdmin } from "lib/services/contractService";
import { useContractListByAdmin } from "lib/services/wasm/contract";
import type { ContractListInfo, ContractLocalInfo } from "lib/stores/contract";
import type { BechAddr32 } from "lib/types";
import { getCurrentDate } from "lib/utils";
Expand Down
43 changes: 16 additions & 27 deletions src/lib/components/select-contract/SelectContractInstantiator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,21 @@ import {
Text,
useDisclosure,
} from "@chakra-ui/react";
import { useQuery } from "@tanstack/react-query";
import type { AxiosError } from "axios";
import { useState } from "react";
import type { KeyboardEvent } from "react";
import { useState } from "react";

import { CustomIcon } from "../icon";
import { AmpEvent, track } from "lib/amplitude";
import {
CELATONE_QUERY_KEYS,
useBaseApiRoute,
useExampleAddresses,
useMobile,
useValidateAddress,
} from "lib/app-provider";
import { DEFAULT_RPC_ERROR } from "lib/data";
import { useInstantiatedByMe } from "lib/model/contract";
import { useContractStore } from "lib/providers/store";
import { queryContract } from "lib/services/contract";
import { useContractLcd } from "lib/services/wasm/contract";
import type { BechAddr32, RpcQueryError } from "lib/types";

import { AllContractLists } from "./AllContractLists";
Expand All @@ -45,27 +42,24 @@ export const SelectContractInstantiator = ({
notSelected,
onContractSelect,
}: SelectContractInstantiatorProps) => {
const isMobile = useMobile();
const { contract: exampleContractAddress } = useExampleAddresses();
const { isOpen, onOpen, onClose } = useDisclosure();
const [listSlug, setListSlug] = useState("");
const { validateContractAddress } = useValidateAddress();

const [listSlug, setListSlug] = useState("");
const [searchContract, setSearchContract] = useState<BechAddr32>(
"" as BechAddr32
);
const [invalid, setInvalid] = useState("");

const { getContractLists } = useContractStore();

const isMobile = useMobile();

// TODO - Revisit false case
const { instantiatedListInfo, isLoading } = useInstantiatedByMe(true);
const contractLists = [instantiatedListInfo, ...getContractLists()];
const contractList = contractLists.find((item) => item.slug === listSlug);

const lcdEndpoint = useBaseApiRoute("rest");

const resetOnClose = () => {
setListSlug("");
setSearchContract("" as BechAddr32);
Expand All @@ -79,23 +73,18 @@ export const SelectContractInstantiator = ({
resetOnClose();
};

// TODO: Abstract query
const { refetch, isFetching, isRefetching } = useQuery(
[CELATONE_QUERY_KEYS.CONTRACT_INFO, lcdEndpoint, searchContract],
async () => queryContract(lcdEndpoint, searchContract),
{
enabled: false,
retry: false,
cacheTime: 0,
refetchOnReconnect: false,
onSuccess() {
onSelectThenClose(searchContract);
},
onError(err: AxiosError<RpcQueryError>) {
setInvalid(err.response?.data.message || DEFAULT_RPC_ERROR);
},
}
);
const { refetch, isFetching, isRefetching } = useContractLcd(searchContract, {
enabled: false,
retry: false,
cacheTime: 0,
refetchOnReconnect: false,
onSuccess: () => onSelectThenClose(searchContract),
onError: (err) =>
setInvalid(
(err as AxiosError<RpcQueryError>).response?.data.message ||
DEFAULT_RPC_ERROR
),
});

const handleListSelect = (slug: string) => {
setListSlug(slug);
Expand Down
2 changes: 1 addition & 1 deletion src/lib/model/contract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useContractStore } from "lib/providers/store";
import {
useInstantiatedCountByUserQuery,
useInstantiatedListByUserQuery,
} from "lib/services/contractService";
} from "lib/services/wasm/contract";
import type { ContractListInfo } from "lib/stores/contract";
import type { BechAddr, BechAddr32 } from "lib/types";
import { formatSlugName, getCurrentDate, getDefaultDate } from "lib/utils";
Expand Down
4 changes: 2 additions & 2 deletions src/lib/pages/account-details/data.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { useCodeStore, useContractStore } from "lib/providers/store";
import { useAccountTableCounts } from "lib/services/accountService";
import { useBalances } from "lib/services/bank";
import { useCodesByAddress } from "lib/services/wasm/code";
import {
useAdminContractsByAddress,
useInstantiatedContractsByAddress,
} from "lib/services/contractService";
import { useCodesByAddress } from "lib/services/wasm/code";
} from "lib/services/wasm/contract";
import type {
BechAddr,
CodeInfo,
Expand Down
13 changes: 6 additions & 7 deletions src/lib/pages/admin/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import { TextInput } from "lib/components/forms";
import { UserDocsLink } from "lib/components/UserDocsLink";
import WasmPageContainer from "lib/components/WasmPageContainer";
import { useTxBroadcast } from "lib/hooks";
import { useContractDetailByContractAddress } from "lib/services/contractService";
import { useContractLcd } from "lib/services/wasm/contract";
import type { BechAddr, BechAddr32 } from "lib/types";
import { MsgType } from "lib/types";
import { composeMsg, getFirstQueryParam } from "lib/utils";
Expand Down Expand Up @@ -107,13 +107,12 @@ const UpdateAdmin = () => {
/**
* @remarks Contract admin validation
*/
useContractDetailByContractAddress(
contractAddressParam,
(contractDetail) => {
if (contractDetail.admin !== address) onContractPathChange();
useContractLcd(contractAddressParam, {
onSuccess: (data) => {
if (data.contract.admin !== address) onContractPathChange();
},
() => onContractPathChange()
);
onError: () => onContractPathChange(),
});

useEffect(() => {
if (contractAddressParam && validateContractAddress(contractAddressParam)) {
Expand Down
4 changes: 2 additions & 2 deletions src/lib/pages/code-details/data.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { UseQueryOptions } from "@tanstack/react-query";

import { useContractStore } from "lib/providers/store";
import type { ContractsResponse } from "lib/services/contract";
import { useContractsByCodeId } from "lib/services/contractService";
import type { ContractsResponse } from "lib/services/types";
import { useContractsByCodeId } from "lib/services/wasm/contract";
import type { ContractInfo, Option } from "lib/types";

export const useCodeContracts = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
import { Tooltip } from "lib/components/Tooltip";
import { useExecuteCmds } from "lib/hooks";
import { useSchemaStore } from "lib/providers/store";
import { useContractQueryMsgs } from "lib/services/contractService";
import { useContractQueryMsgs } from "lib/services/wasm/contract";
import type { BechAddr32 } from "lib/types";
import { encode, jsonPrettify } from "lib/utils";

Expand Down
2 changes: 1 addition & 1 deletion src/lib/pages/contract-details/components/ContractTop.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
SaveContractDetailsModal,
} from "lib/components/modal";
import { TotalValue } from "lib/components/TotalValue";
import type { Contract } from "lib/services/contract";
import type { Contract } from "lib/services/types";
import type { ContractLocalInfo } from "lib/stores/contract";
import { ContractInteractionTabs } from "lib/types";
import type {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useCurrentChain, useGetAddressType } from "lib/app-provider";
import { Copier } from "lib/components/copy";
import { ExplorerLink } from "lib/components/ExplorerLink";
import { LabelText } from "lib/components/LabelText";
import type { Contract, ContractRest } from "lib/services/contract";
import type { Contract, ContractRest } from "lib/services/types";
import type { CodeLocalInfo } from "lib/stores/code";
import type { Nullable, Option } from "lib/types";
import { dateFromNow, formatUTC, getCw2Info } from "lib/utils";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { useClampText } from "use-clamp-text";
import { ShowMoreButton } from "lib/components/button";
import { CustomIcon } from "lib/components/icon";
import { EditContractDetailsModal } from "lib/components/modal";
import type { Contract } from "lib/services/contract";
import type { Contract } from "lib/services/types";
import type { ContractLocalInfo } from "lib/stores/contract";
import type { Nullable, Option, PublicContractInfo } from "lib/types";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Flex } from "@chakra-ui/react";
import { useMobile } from "lib/app-provider";
import { CustomIcon } from "lib/components/icon";
import { PublicDescription } from "lib/components/PublicDescription";
import type { Contract } from "lib/services/contract";
import type { Contract } from "lib/services/types";
import type { ContractLocalInfo } from "lib/stores/contract";
import type { Nullable, Option, PublicContractInfo } from "lib/types";

Expand Down
2 changes: 1 addition & 1 deletion src/lib/pages/contract-details/components/tables/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {

import { useGovConfig } from "lib/app-provider";
import { CustomTab } from "lib/components/CustomTab";
import { useContractTableCounts } from "lib/services/contractService";
import { useContractTableCounts } from "lib/services/wasm/contract";
import type { BechAddr32 } from "lib/types";

import { MigrationTable } from "./migration";
Expand Down
8 changes: 4 additions & 4 deletions src/lib/pages/contract-details/data.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { useCodeStore, useContractStore } from "lib/providers/store";
import {
useContractDataByContractAddress,
useContractData,
useMigrationHistoriesByContractAddress,
} from "lib/services/contractService";
} from "lib/services/wasm/contract";
import type { BechAddr32, ContractMigrationHistory } from "lib/types";

export const useContractData = (contractAddress: BechAddr32) => {
export const useContractDataWithLocalInfos = (contractAddress: BechAddr32) => {
const { getCodeLocalInfo } = useCodeStore();
const { getContractLocalInfo } = useContractStore();

const result = useContractDataByContractAddress(contractAddress);
const result = useContractData(contractAddress);

const codeLocalInfo = result.data?.contract
? getCodeLocalInfo(Number(result.data.contract.codeId))
Expand Down
4 changes: 2 additions & 2 deletions src/lib/pages/contract-details/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import { ContractStates } from "./components/contract-states";
import { ContractTop } from "./components/ContractTop";
import { InstantiateInfo } from "./components/InstantiateInfo";
import { ContractTables } from "./components/tables";
import { useContractData } from "./data";
import { useContractDataWithLocalInfos } from "./data";
import { TabIndex, zContractDetailsQueryParams } from "./types";

const InvalidContract = () => <InvalidState title="Contract does not exist" />;
Expand All @@ -64,7 +64,7 @@ const ContractDetailsBody = observer(
contractLocalInfo,
data: contractData,
isLoading,
} = useContractData(contractAddress);
} = useContractDataWithLocalInfos(contractAddress);

const { data: balances, isLoading: isBalancesLoading } =
useBalances(contractAddress);
Expand Down
2 changes: 1 addition & 1 deletion src/lib/pages/contracts/data.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useContractStore } from "lib/providers/store";
import { useContracts } from "lib/services/contractService";
import { useContracts } from "lib/services/wasm/contract";
import type { ContractInfo } from "lib/types";

export const useRecentContracts = (
Expand Down
Loading

0 comments on commit 3493a4a

Please sign in to comment.