Add burn & batch burn for sg721 (#39)
* Add burn & batch burn for sg721 * Add batch burn range * Refactor contract messages logic Co-authored-by: findolor <anakisci@gmail.com>
This commit is contained in:
@@ -14,6 +14,8 @@ export const ACTION_TYPES = [
|
||||
'update_per_address_limit',
|
||||
'withdraw',
|
||||
'transfer',
|
||||
'burn',
|
||||
'batch_burn',
|
||||
'shuffle',
|
||||
] as const
|
||||
|
||||
@@ -64,6 +66,16 @@ export const ACTION_LIST: ActionListItem[] = [
|
||||
name: 'Transfer Tokens',
|
||||
description: `Transfer tokens from one address to another`,
|
||||
},
|
||||
{
|
||||
id: 'burn',
|
||||
name: 'Burn Token',
|
||||
description: `Burn a specified token from the collection`,
|
||||
},
|
||||
{
|
||||
id: 'batch_burn',
|
||||
name: 'Batch Burn Tokens',
|
||||
description: `Burn a list of tokens from the collection`,
|
||||
},
|
||||
{
|
||||
id: 'shuffle',
|
||||
name: 'Shuffle Tokens',
|
||||
@@ -96,6 +108,8 @@ export type DispatchExecuteArgs = {
|
||||
| { type: Select<'shuffle'> }
|
||||
| { type: Select<'withdraw'> }
|
||||
| { type: Select<'transfer'>; recipient: string; tokenId: number }
|
||||
| { type: Select<'burn'>; tokenId: number }
|
||||
| { type: Select<'batch_burn'>; tokenIds: string }
|
||||
)
|
||||
|
||||
export const dispatchExecute = async (args: DispatchExecuteArgs) => {
|
||||
@@ -131,6 +145,12 @@ export const dispatchExecute = async (args: DispatchExecuteArgs) => {
|
||||
case 'transfer': {
|
||||
return sg721Messages.transferNft(args.recipient, args.tokenId.toString())
|
||||
}
|
||||
case 'burn': {
|
||||
return sg721Messages.burn(args.tokenId.toString())
|
||||
}
|
||||
case 'batch_burn': {
|
||||
return sg721Messages.batchBurn(args.tokenIds)
|
||||
}
|
||||
default: {
|
||||
throw new Error('Unknown action')
|
||||
}
|
||||
@@ -145,32 +165,38 @@ export const previewExecutePayload = (args: DispatchExecuteArgs) => {
|
||||
const { minterContract, sg721Contract } = args
|
||||
switch (args.type) {
|
||||
case 'mint_to': {
|
||||
return minterMessages()?.mintTo(minterContract, args.recipient)
|
||||
return minterMessages(minterContract)?.mintTo(args.recipient)
|
||||
}
|
||||
case 'mint_for': {
|
||||
return minterMessages()?.mintFor(minterContract, args.recipient, args.tokenId)
|
||||
return minterMessages(minterContract)?.mintFor(args.recipient, args.tokenId)
|
||||
}
|
||||
case 'batch_mint': {
|
||||
return minterMessages()?.batchMint(minterContract, args.recipient, args.batchNumber)
|
||||
return minterMessages(minterContract)?.batchMint(args.recipient, args.batchNumber)
|
||||
}
|
||||
case 'set_whitelist': {
|
||||
return minterMessages()?.setWhitelist(minterContract, args.whitelist)
|
||||
return minterMessages(minterContract)?.setWhitelist(args.whitelist)
|
||||
}
|
||||
case 'update_start_time': {
|
||||
return minterMessages()?.updateStartTime(minterContract, args.startTime)
|
||||
return minterMessages(minterContract)?.updateStartTime(args.startTime)
|
||||
}
|
||||
case 'update_per_address_limit': {
|
||||
return minterMessages()?.updatePerAddressLimit(minterContract, args.limit)
|
||||
return minterMessages(minterContract)?.updatePerAddressLimit(args.limit)
|
||||
}
|
||||
case 'shuffle': {
|
||||
return minterMessages()?.shuffle(minterContract)
|
||||
return minterMessages(minterContract)?.shuffle()
|
||||
}
|
||||
case 'withdraw': {
|
||||
return minterMessages()?.withdraw(minterContract)
|
||||
return minterMessages(minterContract)?.withdraw()
|
||||
}
|
||||
case 'transfer': {
|
||||
return sg721Messages(sg721Contract)?.transferNft(args.recipient, args.tokenId.toString())
|
||||
}
|
||||
case 'burn': {
|
||||
return sg721Messages(sg721Contract)?.burn(args.tokenId.toString())
|
||||
}
|
||||
case 'batch_burn': {
|
||||
return sg721Messages(sg721Contract)?.batchBurn(args.tokenIds)
|
||||
}
|
||||
default: {
|
||||
return {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user