Files
xrpl-dev-portal/_code-samples/quickstart/js/ripplex4-transfer-nfts.js
Mayukha Vadari 0b247281eb run prettier
2026-01-12 14:19:31 -05:00

657 lines
24 KiB
JavaScript

// *******************************************************
// ****************** Create Sell Offer ******************
// *******************************************************
async function createSellOffer() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
standbyResultField.value = results
await client.connect()
results += '\nConnected. Creating sell offer...'
standbyResultField.value = results
//------------------------------------- Prepare Expiration Date
var expirationDate = null
if (standbyExpirationField.value != '') {
var days = standbyExpirationField.value
let d = new Date()
d.setDate(d.getDate() + parseInt(days))
expirationDate = xrpl.isoTimeToRippleTime(d)
}
// Prepare transaction -------------------------------------------------------
let transactionBlob = {
TransactionType: 'NFTokenCreateOffer',
Account: standby_wallet.classicAddress,
NFTokenID: standbyTokenIdField.value,
Amount: standbyAmountField.value,
Flags: parseInt(standbyFlagsField.value),
}
if (expirationDate != null) {
transactionBlob.Expiration = expirationDate
}
if (standbyDestinationField.value !== '') {
transactionBlob.Destination = standbyDestinationField.value
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet: standby_wallet })
results += '\n\n***Sell Offers***\n'
let nftSellOffers
try {
nftSellOffers = await client.request({
method: 'nft_sell_offers',
nft_id: standbyTokenIdField.value,
})
} catch (err) {
nftSellOffers = 'No sell offers.'
}
results += JSON.stringify(nftSellOffers, null, 2)
results += '\n\n***Buy Offers***\n'
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: 'nft_buy_offers',
nft_id: standbyTokenIdField.value,
})
results += JSON.stringify(nftBuyOffers, null, 2)
} catch (err) {
results += 'No buy offers.'
}
// Check transaction results -------------------------------------------------
results += '\n\nTransaction result:\n' + JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\n\nBalance changes:\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
operationalBalanceField.value = await client.getXrpBalance(operational_wallet.address)
standbyBalanceField.value = await client.getXrpBalance(standby_wallet.address)
standbyResultField.value = results
client.disconnect()
} // End of createSellOffer()
// *******************************************************
// ***************** Create Buy Offer ********************
// *******************************************************
async function createBuyOffer() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
let results = 'Connecting to ' + net + '...'
standbyResultField.value = results
await client.connect()
results = '\nConnected. Creating buy offer...'
standbyResultField.value = results
//------------------------------------- Prepare Expiration Date
var expirationDate = null
if (standbyExpirationField.value != '') {
var days = standbyExpirationField.value
let d = new Date()
d.setDate(d.getDate() + parseInt(days))
var expirationDate = xrpl.isoTimeToRippleTime(d)
}
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
TransactionType: 'NFTokenCreateOffer',
Account: standby_wallet.classicAddress,
Owner: standbyOwnerField.value,
NFTokenID: standbyTokenIdField.value,
Amount: standbyAmountField.value,
Flags: null,
}
if (expirationDate != null) {
transactionBlob.Expiration = expirationDate
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet: standby_wallet })
results += '\n\n***Sell Offers***\n'
let nftSellOffers
try {
nftSellOffers = await client.request({
method: 'nft_sell_offers',
nft_id: standbyTokenIdField.value,
})
} catch (err) {
nftSellOffers = 'No sell offers.'
}
results += JSON.stringify(nftSellOffers, null, 2)
results += '\n\n***Buy Offers***\n'
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: 'nft_buy_offers',
nft_id: standbyTokenIdField.value,
})
results += JSON.stringify(nftBuyOffers, null, 2)
} catch (err) {
results += 'No buy offers.'
}
// Check transaction results -------------------------------------------------
results += '\n\nTransaction result:\n' + JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\n\nBalance changes:\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
standbyResultField.value = results
client.disconnect()
} // End of createBuyOffer()
// *******************************************************
// ******************** Cancel Offer *********************
// *******************************************************
async function cancelOffer() {
const wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...' + standbyResultField.value
await client.connect()
results += '\nConnected. Cancelling offer...'
standbyResultField.value = results
const tokenOfferIDs = [standbyTokenOfferIndexField.value]
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
TransactionType: 'NFTokenCancelOffer',
Account: wallet.classicAddress,
NFTokenOffers: tokenOfferIDs,
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet })
results += '\n\n***Sell Offers***\n'
let nftSellOffers
try {
nftSellOffers = await client.request({
method: 'nft_sell_offers',
nft_id: standbyTokenIdField.value,
})
} catch (err) {
nftSellOffers = 'No sell offers.'
}
results += JSON.stringify(nftSellOffers, null, 2)
results += '\n\n***Buy Offers***\n'
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: 'nft_buy_offers',
nft_id: standbyTokenIdField.value,
})
results += JSON.stringify(nftBuyOffers, null, 2)
} catch (err) {
nftBuyOffers = 'No buy offers.'
}
// Check transaction results -------------------------------------------------
results += '\nTransaction result:\n' + JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\nBalance changes:\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
standbyResultField.value = results
client.disconnect() // End of cancelOffer()
}
// *******************************************************
// ******************** Get Offers ***********************
// *******************************************************
async function getOffers() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
standbyResultField.value = results
await client.connect()
results += '\nConnected. Getting offers...'
standbyResultField.value = results
results += '\n\n***Sell Offers***\n'
let nftSellOffers
try {
nftSellOffers = await client.request({
method: 'nft_sell_offers',
nft_id: standbyTokenIdField.value,
})
} catch (err) {
nftSellOffers = 'No sell offers.'
}
results += JSON.stringify(nftSellOffers, null, 2)
standbyResultField.value = results
results += '\n\n***Buy Offers***\n'
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: 'nft_buy_offers',
nft_id: standbyTokenIdField.value,
})
} catch (err) {
nftBuyOffers = 'No buy offers.'
}
results += JSON.stringify(nftBuyOffers, null, 2)
standbyResultField.value = results
client.disconnect()
} // End of getOffers()
// *******************************************************
// ****************** Accept Sell Offer ******************
// *******************************************************
async function acceptSellOffer() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
standbyResultField.value = results
await client.connect()
results += '\nConnected. Accepting sell offer...\n\n'
standbyResultField.value = results
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
TransactionType: 'NFTokenAcceptOffer',
Account: standby_wallet.classicAddress,
NFTokenSellOffer: standbyTokenOfferIndexField.value,
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet: standby_wallet })
const nfts = await client.request({
method: 'account_nfts',
account: standby_wallet.classicAddress,
})
// Check transaction results -------------------------------------------------
standbyBalanceField.value = await client.getXrpBalance(standby_wallet.address)
operationalBalanceField.value = await client.getXrpBalance(operational_wallet.address)
results += 'Transaction result:\n'
results += JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\nBalance changes:'
results += JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
results += JSON.stringify(nfts, null, 2)
standbyResultField.value = results
client.disconnect()
} // End of acceptSellOffer()
// *******************************************************
// ******************* Accept Buy Offer ******************
// *******************************************************
async function acceptBuyOffer() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
standbyResultField.value = results
await client.connect()
results += '\nConnected. Accepting buy offer...'
standbyResultField.value = results
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
TransactionType: 'NFTokenAcceptOffer',
Account: standby_wallet.classicAddress,
NFTokenBuyOffer: standbyTokenOfferIndexField.value,
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet: standby_wallet })
const nfts = await client.request({
method: 'account_nfts',
account: standby_wallet.classicAddress,
})
results += JSON.stringify(nfts, null, 2)
standbyResultField.value = results
// Check transaction results -------------------------------------------------
results += '\n\nTransaction result:\n' + JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\nBalance changes:\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
operationalBalanceField.value = await client.getXrpBalance(operational_wallet.address)
standbyBalanceField.value = await client.getXrpBalance(standby_wallet.address)
standbyResultField.value = results
client.disconnect()
} // End of acceptBuyOffer()
// **********************************************************************
// ****** Reciprocal Transactions ***************************************
// **********************************************************************
// *******************************************************
// *********** Operational Create Sell Offer *************
// *******************************************************
async function oPcreateSellOffer() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
operationalResultField.value = results
await client.connect()
results += '\nConnected. Creating sell offer...'
operationalResultField.value = results
//------------------------------------- Prepare Expiration Date
var expirationDate = null
if (operationalExpirationField.value != '') {
var days = operationalExpirationField.value
let d = new Date()
d.setDate(d.getDate() + parseInt(days))
var expirationDate = xrpl.isoTimeToRippleTime(d)
}
// Prepare transaction -------------------------------------------------------
let transactionBlob = {
TransactionType: 'NFTokenCreateOffer',
Account: operational_wallet.classicAddress,
NFTokenID: operationalTokenIdField.value,
Amount: operationalAmountField.value,
Flags: parseInt(operationalFlagsField.value),
}
if (expirationDate != null) {
transactionBlob.Expiration = expirationDate
}
if (standbyDestinationField.value !== '') {
transactionBlob.Destination = operationalDestinationField.value
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet: operational_wallet })
results += '\n\n***Sell Offers***\n'
let nftSellOffers
try {
nftSellOffers = await client.request({
method: 'nft_sell_offers',
nft_id: operationalTokenIdField.value,
})
} catch (err) {
nftSellOffers = 'No sell offers.'
}
results += JSON.stringify(nftSellOffers, null, 2)
results += '\n\n***Buy Offers***\n'
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: 'nft_buy_offers',
nft_id: operationalTokenIdField.value,
})
results += JSON.stringify(nftBuyOffers, null, 2)
} catch (err) {
results += 'No buy offers.'
}
// Check transaction results -------------------------------------------------
results += '\n\nTransaction result:\n' + JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\n\nBalance changes:\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
operationalBalanceField.value = await client.getXrpBalance(operational_wallet.address)
standbyBalanceField.value = await client.getXrpBalance(standby_wallet.address)
operationalResultField.value = results
client.disconnect()
} // End of oPcreateSellOffer()
// *******************************************************
// ************** Operational Create Buy Offer ***********
// *******************************************************
async function oPcreateBuyOffer() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
let results = 'Connecting to ' + net + '...'
operationalResultField.value = results
await client.connect()
results = '\nConnected. Creating buy offer...'
operationalResultField.value = results
//------------------------------------- Prepare Expiration Date
var expirationDate = null
if (operationalExpirationField.value != '') {
var days = operationalExpirationField.value
let d = new Date()
d.setDate(d.getDate() + parseInt(days))
var expirationDate = xrpl.isoTimeToRippleTime(d)
}
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
TransactionType: 'NFTokenCreateOffer',
Account: operational_wallet.classicAddress,
Owner: operationalOwnerField.value,
NFTokenID: operationalTokenIdField.value,
Amount: operationalAmountField.value,
Flags: null,
}
if (expirationDate != null) {
transactionBlob.Expiration = expirationDate
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet: operational_wallet })
results += '\n\n***Sell Offers***\n'
let nftSellOffers
try {
nftSellOffers = await client.request({
method: 'nft_sell_offers',
nft_id: operationalTokenIdField.value,
})
} catch (err) {
nftSellOffers = 'No sell offers.'
}
results += JSON.stringify(nftSellOffers, null, 2)
results += '\n\n***Buy Offers***\n'
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: 'nft_buy_offers',
nft_id: operationalTokenIdField.value,
})
} catch (err) {
results += 'No buy offers.'
}
results += JSON.stringify(nftBuyOffers, null, 2)
// Check transaction results -------------------------------------------------
results += '\n\nTransaction result:\n' + JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\n\nBalance changes:\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
operationalResultField.value = results
client.disconnect()
} // End of oPcreateBuyOffer()
// *******************************************************
// ************* Operational Cancel Offer ****************
// *******************************************************
async function oPcancelOffer() {
const wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
operationalResultField.value = results
await client.connect()
results += '\nConnected. Cancelling offer...'
operationalResultField.value = results
const tokenOfferIDs = [operationalTokenOfferIndexField.value]
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
TransactionType: 'NFTokenCancelOffer',
Account: wallet.classicAddress,
NFTokenOffers: tokenOfferIDs,
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet })
results += '\n\n***Sell Offers***\n'
let nftSellOffers
try {
nftSellOffers = await client.request({
method: 'nft_sell_offers',
nft_id: operationalTokenIdField.value,
})
} catch (err) {
nftSellOffers = 'No sell offers.'
}
results += JSON.stringify(nftSellOffers, null, 2)
results += '\n\n***Buy Offers***\n'
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: 'nft_buy_offers',
nft_id: operationalTokenIdField.value,
})
} catch (err) {
nftBuyOffers = 'No buy offers.'
}
results += JSON.stringify(nftBuyOffers, null, 2)
// Check transaction results -------------------------------------------------
results += '\nTransaction result:\n' + JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\nBalance changes:\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
operationalResultField.value = results
client.disconnect()
} // End of oPcancelOffer()
// *******************************************************
// **************** Operational Get Offers ***************
// *******************************************************
async function oPgetOffers() {
// const standby_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
operationalResultField.value = results
await client.connect()
results += '\nConnected. Getting offers...'
results += '\n\n***Sell Offers***\n'
let nftSellOffers
try {
nftSellOffers = await client.request({
method: 'nft_sell_offers',
nft_id: operationalTokenIdField.value,
})
} catch (err) {
nftSellOffers = 'No sell offers.'
}
results += JSON.stringify(nftSellOffers, null, 2)
results += '\n\n***Buy Offers***\n'
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: 'nft_buy_offers',
nft_id: operationalTokenIdField.value,
})
} catch (err) {
nftBuyOffers = 'No buy offers.'
}
results += JSON.stringify(nftBuyOffers, null, 2)
operationalResultField.value = results
client.disconnect()
} // End of oPgetOffers()
// *******************************************************
// *************** Operational Accept Sell Offer *********
// *******************************************************
async function oPacceptSellOffer() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
operationalResultField.value = results
await client.connect()
results += '\nConnected. Accepting sell offer...\n\n'
operationalResultField.value = results
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
TransactionType: 'NFTokenAcceptOffer',
Account: operational_wallet.classicAddress,
NFTokenSellOffer: operationalTokenOfferIndexField.value,
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet: operational_wallet })
const nfts = await client.request({
method: 'account_nfts',
account: operational_wallet.classicAddress,
})
// Check transaction results -------------------------------------------------
standbyBalanceField.value = await client.getXrpBalance(standby_wallet.address)
operationalBalanceField.value = await client.getXrpBalance(operational_wallet.address)
results += 'Transaction result:\n'
results += JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\nBalance changes:'
results += JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
results += JSON.stringify(nfts, null, 2)
operationalResultField.value = results
client.disconnect()
} // End of acceptSellOffer()
// *******************************************************
// ********* Operational Accept Buy Offer ****************
// *******************************************************
async function oPacceptBuyOffer() {
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
let net = getNet()
const client = new xrpl.Client(net)
results = 'Connecting to ' + net + '...'
operationalResultField.value = results
await client.connect()
results += '\nConnected. Accepting buy offer...'
operationalResultField.value = results
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
TransactionType: 'NFTokenAcceptOffer',
Account: operational_wallet.classicAddress,
NFTokenBuyOffer: operationalTokenOfferIndexField.value,
}
// Submit transaction --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob, { wallet: operational_wallet })
const nfts = await client.request({
method: 'account_nfts',
account: operational_wallet.classicAddress,
})
results += JSON.stringify(nfts, null, 2)
operationalResultField.value = results
// Check transaction results -------------------------------------------------
results += '\n\nTransaction result:\n' + JSON.stringify(tx.result.meta.TransactionResult, null, 2)
results += '\nBalance changes:\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
operationalBalanceField.value = await client.getXrpBalance(operational_wallet.address)
operationalBalanceField.value = await client.getXrpBalance(standby_wallet.address)
operationalResultField.value = results
client.disconnect()
} // End of acceptBuyOffer()