Files
xrpl-dev-portal/content/_code-samples/quickstart/js/ripplex6-authorized-minter.js
2023-06-07 13:50:16 -07:00

164 lines
6.2 KiB
JavaScript

// *******************************************************
// **************** Set Minter *************************
// *******************************************************
async function setMinter() {
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + getNet() + '....'
standbyResultField.value = results
await client.connect()
results += '\nConnected, finding wallet.'
standbyResultField.value = results
my_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
standbyResultField.value = results
tx_json = {
"TransactionType": "AccountSet",
"Account": my_wallet.address,
"NFTokenMinter": standbyMinterField.value,
"SetFlag": xrpl.AccountSetAsfFlags.asfAuthorizedNFTokenMinter
}
results += '\nSet Minter.'
standbyResultField.value = results
const prepared = await client.autofill(tx_json)
const signed = my_wallet.sign(prepared)
const result = await client.submitAndWait(signed.tx_blob)
if (result.result.meta.TransactionResult == "tesSUCCESS") {
results += '\nAccount setting succeeded.\n'
results += JSON.stringify(result,null,2)
standbyResultField.value = results
} else {
throw 'Error sending transaction: ${result}'
results += '\nAccount setting failed.'
standbyResultField.value = results
}
client.disconnect()
} // End of configureAccount()
// *******************************************************
// **************** Mint Other *************************
// *******************************************************
async function mintOther() {
results = 'Connecting to ' + getNet() + '....'
standbyResultField.value = results
let net = getNet()
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const client = new xrpl.Client(net)
await client.connect()
results += '\nConnected. Minting NFT.'
standbyResultField.value = results
// This version adds the "Issuer" field.
// ------------------------------------------------------------------------
const tx_json = {
"TransactionType": "NFTokenMint",
"Account": standby_wallet.classicAddress,
"URI": xrpl.convertStringToHex(standbyTokenUrlField.value),
"Flags": parseInt(standbyFlagsField.value),
"TransferFee": parseInt(standbyTransferFeeField.value),
"Issuer": standbyIssuerField.value,
"NFTokenTaxon": 0 //Required, but if you have no use for it, set to zero.
}
// ----------------------------------------------------- Submit transaction
const tx = await client.submitAndWait(tx_json, { wallet: standby_wallet} )
const nfts = await client.request({
method: "account_nfts",
account: standby_wallet.classicAddress
})
// ------------------------------------------------------- Report results
results += '\n\nTransaction result: '+ tx.result.meta.TransactionResult
results += '\n\nnfts: ' + JSON.stringify(nfts, null, 2)
standbyResultField.value = results + (await
client.getXrpBalance(standby_wallet.address))
standbyResultField.value = results
client.disconnect()
} //End of mintToken()
// *******************************************************
// **************** Set Operational Minter **************
// ********************************************************
async function oPsetMinter() {
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + getNet() + '....'
operationalResultField.value = results
await client.connect()
results += '\nConnected, finding wallet.'
operationalResultField.value = results
my_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
operationalResultField.value = results
tx_json = {
"TransactionType": "AccountSet",
"Account": my_wallet.address,
"NFTokenMinter": operationalMinterField.value,
"SetFlag": xrpl.AccountSetAsfFlags.asfAuthorizedNFTokenMinter
}
results += '\nSet Minter.'
operationalResultField.value = results
const prepared = await client.autofill(tx_json)
const signed = my_wallet.sign(prepared)
const result = await client.submitAndWait(signed.tx_blob)
if (result.result.meta.TransactionResult == "tesSUCCESS") {
results += '\nAccount setting succeeded.\n'
results += JSON.stringify(result,null,2)
operationalResultField.value = results
} else {
throw 'Error sending transaction: ${result}'
results += '\nAccount setting failed.'
operationalResultField.value = results
}
client.disconnect()
} // End of oPsetMinter()
// *******************************************************
// ************** Operational Mint Other *****************
// *******************************************************
async function oPmintOther() {
results = 'Connecting to ' + getNet() + '....'
operationalResultField.value = results
let net = getNet()
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
const client = new xrpl.Client(net)
await client.connect()
results += '\nConnected. Minting NFT.'
operationalResultField.value = results
// This version adds the "Issuer" field.
// ------------------------------------------------------------------------
const tx_json = {
"TransactionType": 'NFTokenMint',
"Account": operational_wallet.classicAddress,
"URI": xrpl.convertStringToHex(operationalTokenUrlField.value),
"Flags": parseInt(operationalFlagsField.value),
"Issuer": operationalIssuerField.value,
"TransferFee": parseInt(operationalTransferFeeField.value),
"NFTokenTaxon": 0 //Required, but if you have no use for it, set to zero.
}
// ----------------------------------------------------- Submit signed blob
const tx = await client.submitAndWait(tx_json, { wallet: operational_wallet} )
const nfts = await client.request({
method: "account_nfts",
account: operational_wallet.classicAddress
})
// ------------------------------------------------------- Report results
results += '\n\nTransaction result: '+ tx.result.meta.TransactionResult
results += '\n\nnfts: ' + JSON.stringify(nfts, null, 2)
results += await client.getXrpBalance(operational_wallet.address)
operationalResultField.value = results
client.disconnect()
} //End of oPmintToken