aa42f8763a
* Add instantiate page for minter * Add query page to minter contract * Add execute page for minter contract * Add contracts index page * Refaactor sg721 helper files * Add instantiate page * Add query page for sg721 * Add execute page for sg721 contract * Copy page templates for whitelist contracts * Add instantitate for whitelist contract * Add query page to whitelist contract * Add execute page for whitelist contract
96 lines
2.8 KiB
TypeScript
96 lines
2.8 KiB
TypeScript
import type { SG721Instance } from '../contract'
|
|
|
|
export type QueryType = typeof QUERY_TYPES[number]
|
|
|
|
export const QUERY_TYPES = [
|
|
'owner_of',
|
|
'approval',
|
|
'approvals',
|
|
'all_operators',
|
|
'num_tokens',
|
|
'contract_info',
|
|
'nft_info',
|
|
'all_nft_info',
|
|
'tokens',
|
|
'all_tokens',
|
|
'minter',
|
|
'collection_info',
|
|
] as const
|
|
|
|
export interface QueryListItem {
|
|
id: QueryType
|
|
name: string
|
|
description?: string
|
|
}
|
|
|
|
export const QUERY_LIST: QueryListItem[] = [
|
|
{ id: 'owner_of', name: 'Owner Of', description: 'View current owner of given token' },
|
|
{ id: 'approval', name: 'Approval', description: 'View address that has access to given token' },
|
|
{ id: 'approvals', name: 'Approvals', description: 'View all approvals of a given token' },
|
|
{
|
|
id: 'all_operators',
|
|
name: 'All Operators',
|
|
description: "List all the operators that has access all of the owner's tokens",
|
|
},
|
|
{ id: 'num_tokens', name: 'Number of Tokens', description: 'View total number of tokens minted' },
|
|
{ id: 'contract_info', name: 'Contract Info', description: 'View top-level metadata of contract' },
|
|
{ id: 'nft_info', name: 'NFT Info', description: 'View metadata of a given token' },
|
|
{ id: 'all_nft_info', name: 'All NFT Info', description: 'View metadata and owner info of a given token' },
|
|
{ id: 'tokens', name: 'Tokens', description: 'View all the tokens owned by given address' },
|
|
{ id: 'all_tokens', name: 'All Tokens', description: 'List all the tokens controlled by the contract' },
|
|
{ id: 'minter', name: 'Minter', description: 'View current minter of the contract' },
|
|
{ id: 'collection_info', name: 'Collection Info', description: 'View metadata of a given collection' },
|
|
]
|
|
|
|
export interface DispatchQueryProps {
|
|
messages: SG721Instance | undefined
|
|
type: QueryType
|
|
tokenId: string
|
|
address: string
|
|
}
|
|
|
|
export const dispatchQuery = (props: DispatchQueryProps) => {
|
|
const { tokenId, messages, type, address } = props
|
|
switch (type) {
|
|
case 'owner_of': {
|
|
return messages?.ownerOf(tokenId)
|
|
}
|
|
case 'approval': {
|
|
return messages?.approval(tokenId, address)
|
|
}
|
|
case 'approvals': {
|
|
return messages?.approvals(tokenId)
|
|
}
|
|
case 'all_operators': {
|
|
return messages?.allOperators(address)
|
|
}
|
|
case 'num_tokens': {
|
|
return messages?.numTokens()
|
|
}
|
|
case 'contract_info': {
|
|
return messages?.contractInfo()
|
|
}
|
|
case 'nft_info': {
|
|
return messages?.nftInfo(tokenId)
|
|
}
|
|
case 'all_nft_info': {
|
|
return messages?.allNftInfo(tokenId, null)
|
|
}
|
|
case 'tokens': {
|
|
return messages?.tokens(address)
|
|
}
|
|
case 'all_tokens': {
|
|
return messages?.allTokens()
|
|
}
|
|
case 'minter': {
|
|
return messages?.minter()
|
|
}
|
|
case 'collection_info': {
|
|
return messages?.collectionInfo()
|
|
}
|
|
default: {
|
|
throw new Error('unknown query type')
|
|
}
|
|
}
|
|
}
|