Name resolution support for designated minter address during badge creation

This commit is contained in:
Serkan Reis 2023-02-28 17:09:06 +03:00
parent 3c2478cd38
commit f486e4c39e

View File

@ -38,6 +38,7 @@ import { copy } from 'utils/clipboard'
import { BADGE_HUB_ADDRESS, BLOCK_EXPLORER_URL, NETWORK } from 'utils/constants' import { BADGE_HUB_ADDRESS, BLOCK_EXPLORER_URL, NETWORK } from 'utils/constants'
import { withMetadata } from 'utils/layout' import { withMetadata } from 'utils/layout'
import { links } from 'utils/links' import { links } from 'utils/links'
import { resolveAddress } from 'utils/resolveAddress'
import { truncateMiddle } from 'utils/text' import { truncateMiddle } from 'utils/text'
import { generateKeyPairs } from '../../utils/hash' import { generateKeyPairs } from '../../utils/hash'
@ -57,6 +58,7 @@ const BadgeCreationPage: NextPage = () => {
const [isAddingKeysComplete, setIsAddingKeysComplete] = useState(false) const [isAddingKeysComplete, setIsAddingKeysComplete] = useState(false)
const [readyToCreateBadge, setReadyToCreateBadge] = useState(false) const [readyToCreateBadge, setReadyToCreateBadge] = useState(false)
const [mintRule, setMintRule] = useState<MintRule>('by_key') const [mintRule, setMintRule] = useState<MintRule>('by_key')
const [resolvedMinterAddress, setResolvedMinterAddress] = useState<string>('')
const [badgeId, setBadgeId] = useState<string | null>(null) const [badgeId, setBadgeId] = useState<string | null>(null)
const [imageUrl, setImageUrl] = useState<string | null>(null) const [imageUrl, setImageUrl] = useState<string | null>(null)
@ -127,6 +129,15 @@ const BadgeCreationPage: NextPage = () => {
} }
} }
const resolveMinterAddress = async () => {
await resolveAddress(designatedMinterState.value.trim(), wallet).then((resolvedAddress) => {
setResolvedMinterAddress(resolvedAddress)
})
}
useEffect(() => {
void resolveMinterAddress()
}, [designatedMinterState.value])
const createNewBadge = async () => { const createNewBadge = async () => {
try { try {
if (!wallet.initialized) throw new Error('Wallet not connected') if (!wallet.initialized) throw new Error('Wallet not connected')
@ -155,7 +166,7 @@ const BadgeCreationPage: NextPage = () => {
} }
: mintRule === 'by_minter' : mintRule === 'by_minter'
? { ? {
by_minter: designatedMinterState.value.trim(), by_minter: resolvedMinterAddress,
} }
: 'by_keys', : 'by_keys',
expiry: badgeDetails?.expiry || undefined, expiry: badgeDetails?.expiry || undefined,
@ -496,7 +507,7 @@ const BadgeCreationPage: NextPage = () => {
<div className="ml-4 text-lg"> <div className="ml-4 text-lg">
Badge ID:{` ${badgeId as string}`} Badge ID:{` ${badgeId as string}`}
<br /> <br />
Designated Minter Address: {` ${designatedMinterState.value}`} Designated Minter Address: {` ${resolvedMinterAddress}`}
<br /> <br />
Transaction Hash: {' '} Transaction Hash: {' '}
<Conditional test={NETWORK === 'testnet'}> <Conditional test={NETWORK === 'testnet'}>
@ -654,7 +665,7 @@ const BadgeCreationPage: NextPage = () => {
<Conditional test={mintRule === 'by_minter'}> <Conditional test={mintRule === 'by_minter'}>
<div className="flex flex-row justify-start py-3 px-8 mb-3 w-full rounded border-2 border-white/20"> <div className="flex flex-row justify-start py-3 px-8 mb-3 w-full rounded border-2 border-white/20">
<TextInput className="ml-4 w-full max-w-2xl" {...designatedMinterState} required /> <TextInput className="ml-4 w-full max-w-lg" {...designatedMinterState} required />
</div> </div>
</Conditional> </Conditional>