Skip to content

Commit

Permalink
Remove ContractAddressInput component and minor fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Thunnini committed Jul 10, 2023
1 parent 951e7d1 commit b685e00
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 116 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import { useFocusOnMount } from "../../hooks/use-focus-on-mount";
import { SearchTextInput } from "../input";
import { ContractAddressItem } from "../contract-item";
import styled from "styled-components";
import { TokenContract } from "../../stores/token-contracts";
import SimpleBar from "simplebar-react";
import { EmptyView } from "../empty-view";
import { FormattedMessage, useIntl } from "react-intl";
import { useStore } from "../../stores";

const Styles = {
Container: styled.div`
Expand Down Expand Up @@ -40,10 +40,17 @@ const Styles = {

export const ContractAddressBookModal: FunctionComponent<{
isOpen: boolean;
contracts: TokenContract[];

chainId: string;
onSelect: (address: string) => void;
close: () => void;
}> = observer(({ isOpen, onSelect, contracts, close }) => {
}> = observer(({ isOpen, chainId, onSelect, close }) => {
const { queriesStore } = useStore();

const contracts = queriesStore
.get(chainId)
.tokenContracts.queryTokenContracts.get(chainId).tokenContracts;

const [search, setSearch] = useState("");
const searchRef = useFocusOnMount<HTMLInputElement>();
const intl = useIntl();
Expand Down

This file was deleted.

This file was deleted.

62 changes: 57 additions & 5 deletions packages/extension/src/pages/setting/token/add/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,11 @@ import { Body3, Subtitle2 } from "../../../../components/typography";
import { Toggle } from "../../../../components/toggle";
import { useForm } from "react-hook-form";
import { useNotification } from "../../../../hooks/notification";
import { ContractAddressInput } from "../../../../components/input/contract-input";
import { FormattedMessage, useIntl } from "react-intl";
import { Bech32Address } from "@keplr-wallet/cosmos";
import { ContractAddressBookModal } from "../../../../components/contract-address-book-modal";
import { IconButton } from "../../../../components/icon-button";
import { MenuIcon } from "../../../../components/icon";

const Styles = {
Container: styled(Stack)`
Expand All @@ -51,6 +54,8 @@ export const SettingTokenAddPage: FunctionComponent = observer(() => {
const [searchParams] = useSearchParams();
const paramChainId = searchParams.get("chainId");

const [isAddressBookModalOpen, setIsAddressBookModalOpen] = useState(false);

const { setValue, handleSubmit, register, formState, watch } =
useForm<FormData>({
defaultValues: {
Expand Down Expand Up @@ -282,16 +287,53 @@ export const SettingTokenAddPage: FunctionComponent = observer(() => {
</Box>
) : null}

<ContractAddressInput
chainId={chainId}
<TextInput
label={intl.formatMessage({
id: "page.setting.token.add.contract-address-label",
})}
isLoading={queryContract.isFetching}
readOnly={interactionInfo.interaction}
right={
<IconButton
onClick={() => {
setIsAddressBookModalOpen(true);
}}
hoverColor={
theme.mode === "light"
? ColorPalette["gray-50"]
: ColorPalette["gray-500"]
}
padding="0.25rem"
>
<MenuIcon
width="1.5rem"
height="1.5rem"
color={
theme.mode === "light"
? ColorPalette["gray-300"]
: ColorPalette["gray-10"]
}
/>
</IconButton>
}
error={
formState.errors.contractAddress?.message ||
(queryContract.error?.data as any)?.message
}
setValue={setValue}
register={register}
{...register("contractAddress", {
required: true,
validate: (value): string | undefined => {
try {
const chainInfo = chainStore.getChain(chainId);
Bech32Address.validate(
value,
chainInfo.bech32Config.bech32PrefixAccAddr
);
} catch (e) {
return e.message || e.toString();
}
},
})}
/>
<TextInput
label={intl.formatMessage({
Expand Down Expand Up @@ -375,6 +417,16 @@ export const SettingTokenAddPage: FunctionComponent = observer(() => {
</Stack>
) : null}
</Styles.Container>

<ContractAddressBookModal
isOpen={isAddressBookModalOpen}
chainId={chainId}
onSelect={(address: string) => {
setValue("contractAddress", address);
setIsAddressBookModalOpen(false);
}}
close={() => setIsAddressBookModalOpen(false)}
/>
</HeaderLayout>
);
});
2 changes: 1 addition & 1 deletion packages/extension/src/stores/token-contracts/names.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export class ObservableQueryTokenContractsInner extends ObservableQuery<
);
}

get getTokenContracts(): TokenContract[] {
get tokenContracts(): TokenContract[] {
if (!this.response || !this.response.data) {
return [];
}
Expand Down

0 comments on commit b685e00

Please sign in to comment.