From 6ced9ba563b8ad79483c3b7ad1431afa4492dd16 Mon Sep 17 00:00:00 2001 From: strange Date: Tue, 8 Mar 2022 20:13:55 +0700 Subject: [PATCH 1/2] Support TNS reverse record --- app/src/@libs/use-tns-reverse-record/index.ts | 38 +++++++++++++++++++ .../Header/desktop/ConnectedButton.tsx | 7 +++- .../Header/wallet/WalletDetailContent.tsx | 7 +++- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 app/src/@libs/use-tns-reverse-record/index.ts diff --git a/app/src/@libs/use-tns-reverse-record/index.ts b/app/src/@libs/use-tns-reverse-record/index.ts new file mode 100644 index 000000000..a9f6ce813 --- /dev/null +++ b/app/src/@libs/use-tns-reverse-record/index.ts @@ -0,0 +1,38 @@ +import { LCDClient } from '@terra-money/terra.js'; +import { useWallet } from '@terra-money/use-wallet'; +import { useEffect, useMemo, useState } from 'react'; + +const REVERSE_RECORD_ADDRESS = 'terra13efj2whf6rm7yedc2v7rnz0e6ltzytyhydy98a'; + +export const useTnsReverseRecord = (address: string) => { + const { network } = useWallet(); + const [reverseRecord, setReverseRecord] = useState(null); + + const lcd = useMemo(() => { + return new LCDClient({ + chainID: network.chainID, + URL: network.lcd, + }); + }, [network.chainID, network.lcd]); + + useEffect(() => { + if (network.chainID !== 'columbus-5' || !address) { + setReverseRecord(null); + return; + } + lcd.wasm + .contractQuery<{ name: string }>(REVERSE_RECORD_ADDRESS, { + get_name: { + address, + }, + }) + .then((res) => { + setReverseRecord(res.name); + }) + .catch((err) => { + setReverseRecord(null); + }); + }, [lcd, address, network.chainID]); + + return reverseRecord; +}; diff --git a/app/src/components/Header/desktop/ConnectedButton.tsx b/app/src/components/Header/desktop/ConnectedButton.tsx index a6cb3794f..24d5ca158 100644 --- a/app/src/components/Header/desktop/ConnectedButton.tsx +++ b/app/src/components/Header/desktop/ConnectedButton.tsx @@ -5,6 +5,7 @@ import { demicrofy, truncate } from '@libs/formatter'; import { IconSpan } from '@libs/neumorphism-ui/components/IconSpan'; import React, { ButtonHTMLAttributes, DetailedHTMLProps } from 'react'; import styled from 'styled-components'; +import { useTnsReverseRecord } from '@libs/use-tns-reverse-record'; interface ConnectedButtonProps extends Omit< @@ -23,13 +24,17 @@ function ConnectedButtonBase({ bank, ...buttonProps }: ConnectedButtonProps) { + const reverseRecord = useTnsReverseRecord(walletAddress); + return (