Add Infinity Swap related queries to Collection Actions > Queries

This commit is contained in:
Serkan Reis 2023-10-10 14:19:52 +03:00
parent 0365aa5a7b
commit b2e61d5529
3 changed files with 49 additions and 2 deletions

View File

@ -7,6 +7,7 @@ import { useInputState } from 'components/forms/FormInput.hooks'
import { JsonPreview } from 'components/JsonPreview'
import type { BaseMinterInstance } from 'contracts/baseMinter'
import type { OpenEditionMinterInstance } from 'contracts/openEditionMinter'
import type { RoyaltyRegistryInstance } from 'contracts/royaltyRegistry'
import type { SG721Instance } from 'contracts/sg721'
import type { VendingMinterInstance } from 'contracts/vendingMinter'
import { toast } from 'react-hot-toast'
@ -19,10 +20,12 @@ import type { MinterType } from '../actions/Combobox'
interface CollectionQueriesProps {
minterContractAddress: string
sg721ContractAddress: string
royaltyRegistryContractAddress: string
sg721Messages: SG721Instance | undefined
vendingMinterMessages: VendingMinterInstance | undefined
baseMinterMessages: BaseMinterInstance | undefined
openEditionMinterMessages: OpenEditionMinterInstance | undefined
royaltyRegistryMessages: RoyaltyRegistryInstance | undefined
minterType: MinterType
}
export const CollectionQueries = ({
@ -33,6 +36,7 @@ export const CollectionQueries = ({
openEditionMinterMessages,
baseMinterMessages,
minterType,
royaltyRegistryMessages,
}: CollectionQueriesProps) => {
const wallet = useWallet()
@ -65,9 +69,11 @@ export const CollectionQueries = ({
baseMinterMessages,
vendingMinterMessages,
openEditionMinterMessages,
royaltyRegistryMessages,
type,
tokenId,
address,
sg721ContractAddress,
] as const,
async ({ queryKey }) => {
const [
@ -75,9 +81,11 @@ export const CollectionQueries = ({
_baseMinterMessages_,
_vendingMinterMessages,
_openEditionMinterMessages,
_royaltyRegistryMessages,
_type,
_tokenId,
_address,
_sg721ContractAddress,
] = queryKey
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const res = await resolveAddress(_address, wallet).then(async (resolvedAddress) => {
@ -88,8 +96,10 @@ export const CollectionQueries = ({
baseMinterMessages: _baseMinterMessages_,
openEditionMinterMessages: _openEditionMinterMessages,
sg721Messages: _sg721Messages,
royaltyRegistryMessages: _royaltyRegistryMessages,
address: resolvedAddress,
type: _type,
sg721ContractAddress: _sg721ContractAddress,
})
return result
})
@ -102,7 +112,9 @@ export const CollectionQueries = ({
toast.error(error.message, { style: { maxWidth: 'none' } })
}
},
enabled: Boolean(sg721ContractAddress && minterContractAddress && type),
enabled:
Boolean(type && type === 'infinity_swap_royalties' && sg721ContractAddress) ||
Boolean(sg721ContractAddress && minterContractAddress && type),
retry: false,
},
)

View File

@ -1,7 +1,9 @@
import type { BaseMinterInstance } from 'contracts/baseMinter'
import type { OpenEditionMinterInstance } from 'contracts/openEditionMinter/contract'
import type { RoyaltyRegistryInstance } from 'contracts/royaltyRegistry'
import type { SG721Instance } from 'contracts/sg721'
import type { VendingMinterInstance } from 'contracts/vendingMinter'
import { INFINITY_SWAP_PROTOCOL_ADDRESS } from 'utils/constants'
export type QueryType = typeof QUERY_TYPES[number]
@ -13,6 +15,7 @@ export const QUERY_TYPES = [
'total_mint_count',
'tokens',
// 'token_owners',
'infinity_swap_royalties',
'token_info',
'config',
'status',
@ -35,6 +38,11 @@ export const VENDING_QUERY_LIST: QueryListItem[] = [
name: 'Mint Price',
description: `Get the price of minting a token.`,
},
{
id: 'infinity_swap_royalties',
name: 'Infinity Swap Royalty Details',
description: `Get the collection's royalty details for Infinity Swap`,
},
{
id: 'num_tokens',
name: 'Mintable Number of Tokens',
@ -77,6 +85,11 @@ export const BASE_QUERY_LIST: QueryListItem[] = [
name: 'Tokens Minted to User',
description: `Get the number of tokens minted in the collection to a user.`,
},
{
id: 'infinity_swap_royalties',
name: 'Infinity Swap Royalty Details',
description: `Get the collection's royalty details for Infinity Swap`,
},
{
id: 'token_info',
name: 'Token Info',
@ -104,6 +117,11 @@ export const OPEN_EDITION_QUERY_LIST: QueryListItem[] = [
name: 'Mint Price',
description: `Get the price of minting a token.`,
},
{
id: 'infinity_swap_royalties',
name: 'Infinity Swap Royalty Details',
description: `Get the collection's royalty details for Infinity Swap`,
},
{
id: 'tokens_minted_to_user',
name: 'Tokens Minted to User',
@ -148,6 +166,8 @@ export type DispatchQueryArgs = {
vendingMinterMessages?: VendingMinterInstance
openEditionMinterMessages?: OpenEditionMinterInstance
sg721Messages?: SG721Instance
royaltyRegistryMessages?: RoyaltyRegistryInstance
sg721ContractAddress?: string
} & (
| { type: undefined }
| { type: Select<'collection_info'> }
@ -156,6 +176,7 @@ export type DispatchQueryArgs = {
| { type: Select<'tokens_minted_to_user'>; address: string }
| { type: Select<'total_mint_count'> }
| { type: Select<'tokens'>; address: string }
| { type: Select<'infinity_swap_royalties'> }
// | { type: Select<'token_owners'> }
| { type: Select<'token_info'>; tokenId: string }
| { type: Select<'config'> }
@ -163,7 +184,13 @@ export type DispatchQueryArgs = {
)
export const dispatchQuery = async (args: DispatchQueryArgs) => {
const { baseMinterMessages, vendingMinterMessages, openEditionMinterMessages, sg721Messages } = args
const {
baseMinterMessages,
vendingMinterMessages,
openEditionMinterMessages,
sg721Messages,
royaltyRegistryMessages,
} = args
if (!baseMinterMessages || !vendingMinterMessages || !openEditionMinterMessages || !sg721Messages) {
throw new Error('Cannot execute actions')
}
@ -189,6 +216,12 @@ export const dispatchQuery = async (args: DispatchQueryArgs) => {
// case 'token_owners': {
// return vendingMinterMessages.updateStartTime(txSigner, args.startTime)
// }
case 'infinity_swap_royalties': {
return royaltyRegistryMessages?.collectionRoyaltyProtocol(
args.sg721ContractAddress as string,
INFINITY_SWAP_PROTOCOL_ADDRESS,
)
}
case 'token_info': {
if (!args.tokenId) return
return sg721Messages.allNftInfo(args.tokenId)

View File

@ -246,6 +246,8 @@ const CollectionActionsPage: NextPage = () => {
minterContractAddress={minterContractState.value}
minterType={minterType}
openEditionMinterMessages={openEditionMinterMessages}
royaltyRegistryContractAddress={ROYALTY_REGISTRY_ADDRESS}
royaltyRegistryMessages={royaltyRegistryMessages}
sg721ContractAddress={sg721ContractState.value}
sg721Messages={sg721Messages}
vendingMinterMessages={vendingMinterMessages}