Validate splits contract address on Collection Creation > Royalty Details
This commit is contained in:
parent
498c858c3c
commit
f3db72c677
@ -5,6 +5,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
|
||||
import { toUtf8 } from '@cosmjs/encoding'
|
||||
import { coin } from '@cosmjs/proto-signing'
|
||||
import clsx from 'clsx'
|
||||
import { Alert } from 'components/Alert'
|
||||
@ -113,7 +114,8 @@ const CollectionCreationPage: NextPage = () => {
|
||||
checkUploadDetails()
|
||||
checkCollectionDetails()
|
||||
checkMintingDetails()
|
||||
checkRoyaltyDetails()
|
||||
void checkRoyaltyDetails()
|
||||
.then(() => {
|
||||
checkWhitelistDetails()
|
||||
.then(() => {
|
||||
checkwalletBalance()
|
||||
@ -125,6 +127,11 @@ const CollectionCreationPage: NextPage = () => {
|
||||
else toast.error(`Error in Whitelist Configuration: ${err.message}`, { style: { maxWidth: 'none' } })
|
||||
setReadyToCreateVm(false)
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
toast.error(`Error in Royalty Details: ${err.message}`, { style: { maxWidth: 'none' } })
|
||||
setReadyToCreateVm(false)
|
||||
})
|
||||
} catch (error: any) {
|
||||
toast.error(error.message, { style: { maxWidth: 'none' } })
|
||||
setUploading(false)
|
||||
@ -136,8 +143,9 @@ const CollectionCreationPage: NextPage = () => {
|
||||
try {
|
||||
setReadyToCreateBm(false)
|
||||
checkUploadDetails()
|
||||
checkRoyaltyDetails()
|
||||
checkCollectionDetails()
|
||||
void checkRoyaltyDetails()
|
||||
.then(() => {
|
||||
checkWhitelistDetails()
|
||||
.then(() => {
|
||||
checkwalletBalance()
|
||||
@ -147,6 +155,11 @@ const CollectionCreationPage: NextPage = () => {
|
||||
toast.error(`${err.message}`, { style: { maxWidth: 'none' } })
|
||||
setReadyToCreateBm(false)
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
toast.error(`Error in Royalty Configuration: ${err.message}`, { style: { maxWidth: 'none' } })
|
||||
setReadyToCreateBm(false)
|
||||
})
|
||||
} catch (error: any) {
|
||||
toast.error(error.message, { style: { maxWidth: 'none' } })
|
||||
setUploading(false)
|
||||
@ -868,7 +881,7 @@ const CollectionCreationPage: NextPage = () => {
|
||||
}
|
||||
}
|
||||
|
||||
const checkRoyaltyDetails = () => {
|
||||
const checkRoyaltyDetails = async () => {
|
||||
if (!royaltyDetails) throw new Error('Please fill out the royalty details')
|
||||
if (royaltyDetails.royaltyType === 'new') {
|
||||
if (royaltyDetails.share === 0) throw new Error('Royalty share percentage is required')
|
||||
@ -880,6 +893,23 @@ const CollectionCreationPage: NextPage = () => {
|
||||
}
|
||||
throw new Error('Invalid royalty payment address')
|
||||
}
|
||||
const contractInfoResponse = await wallet.client
|
||||
?.queryContractRaw(
|
||||
royaltyDetails.paymentAddress,
|
||||
toUtf8(Buffer.from(Buffer.from('contract_info').toString('hex'), 'hex').toString()),
|
||||
)
|
||||
.catch((e) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||
if (e.message.includes('bech32')) throw new Error('Invalid royalty payment address.')
|
||||
console.log(e.message)
|
||||
})
|
||||
if (contractInfoResponse !== undefined) {
|
||||
const contractInfo = JSON.parse(new TextDecoder().decode(contractInfoResponse as Uint8Array))
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||
if (contractInfo && !contractInfo.contract.includes('splits'))
|
||||
throw new Error('The provided royalty payment address does not belong to a splits contract.')
|
||||
else console.log(contractInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user