mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2026-04-29 15:37:48 +00:00
121 lines
3.9 KiB
JavaScript
121 lines
3.9 KiB
JavaScript
/// Create permissioned domain
|
|
async function createDomain() {
|
|
let net = getNet()
|
|
const client = new xrpl.Client(net)
|
|
results = `\n\n===Creating Permissioned Domain===\n\nConnecting to ${getNet()} ...`
|
|
updateResults()
|
|
await client.connect()
|
|
results = `\n\nConnected.`
|
|
updateResults()
|
|
|
|
// Gather transaction info
|
|
try {
|
|
// Get account wallet from seed
|
|
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
|
|
|
// Get Domain ID
|
|
const domainID = domainIDField.value
|
|
|
|
// Get credential type - convert string to hex if needed
|
|
let credentialType = credentialTypeField.value
|
|
if (!/^[0-9A-F]+$/i.test(credentialType)) {
|
|
let hex = ''
|
|
for (let i = 0; i < credentialType.length; i++) {
|
|
const charCode = credentialType.charCodeAt(i)
|
|
const hexCharCode = charCode.toString(16).padStart(2, '0')
|
|
hex += hexCharCode
|
|
}
|
|
credentialType = hex.toUpperCase()
|
|
}
|
|
|
|
// Prepare transaction
|
|
const transaction = {
|
|
TransactionType: 'PermissionedDomainSet',
|
|
Account: wallet.address,
|
|
AcceptedCredentials: [
|
|
{
|
|
Credential: {
|
|
Issuer: wallet.address,
|
|
CredentialType: credentialType,
|
|
},
|
|
},
|
|
],
|
|
}
|
|
|
|
if (domainID) {
|
|
transaction.DomainID = domainID
|
|
}
|
|
|
|
results = `\n\n===Preparing and Sending Transaction===\n\n${JSON.stringify(transaction, null, 2)}`
|
|
updateResults()
|
|
|
|
// Submit transaction
|
|
const tx = await client.submitAndWait(transaction, { autofill: true, wallet: wallet })
|
|
|
|
if (tx.result.meta.TransactionResult == 'tesSUCCESS') {
|
|
// Parse for domain info
|
|
if (domainID) {
|
|
results = `\n\n===Create Permissioned Domain Result===\n\n${JSON.stringify(tx.result.tx_json, null, 2)}`
|
|
} else {
|
|
const parsedResponse = JSON.parse(JSON.stringify(tx.result.meta.AffectedNodes, null, 2))
|
|
const domainInfo = parsedResponse.find((node) => node.CreatedNode && node.CreatedNode.LedgerEntryType === 'PermissionedDomain')
|
|
results = `\n\n===Create Permissioned Domain Result===\n\n${JSON.stringify(domainInfo.CreatedNode, null, 2)}`
|
|
}
|
|
} else {
|
|
results = `\n\n===Error===\n\n${JSON.stringify(tx.result.meta.TransactionResult, null, 2)}: Check codes at https://xrpl.org/docs/references/protocol/transactions/types/permissioneddomainset#error-cases`
|
|
}
|
|
updateResults()
|
|
} catch (error) {
|
|
results = `\n\n===Error===\n\n${error}`
|
|
updateResults()
|
|
}
|
|
|
|
client.disconnect()
|
|
}
|
|
// End create permissioned domain
|
|
|
|
// Delete permissioned domain
|
|
async function deleteDomain() {
|
|
let net = getNet()
|
|
const client = new xrpl.Client(net)
|
|
results = `\n\n===Delete Permissioned Domain===\n\nConnecting to ${getNet()} ...`
|
|
updateResults()
|
|
await client.connect()
|
|
results = `\n\nConnected.`
|
|
updateResults()
|
|
|
|
// Get delete domain transaction info
|
|
try {
|
|
// Get account wallet from seed
|
|
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
|
|
|
// Get Domain ID
|
|
const domainID = domainIDField.value
|
|
|
|
// Prepare transaction
|
|
const transaction = {
|
|
TransactionType: 'PermissionedDomainDelete',
|
|
Account: wallet.address,
|
|
DomainID: domainID,
|
|
}
|
|
|
|
results = `\n\n===Preparing and Sending Transaction===\n\n${JSON.stringify(transaction, null, 2)}`
|
|
updateResults()
|
|
|
|
// Submit delete domain transaction
|
|
const tx = await client.submitAndWait(transaction, { autofill: true, wallet: wallet })
|
|
|
|
if (tx.result.meta.TransactionResult == 'tesSUCCESS') {
|
|
results = `\n\n===Delete Permissioned Domain Result===\n\nSuccessfully deleted the permissioned domain.`
|
|
} else {
|
|
results = `\n\n===Error===\n\n${JSON.stringify(tx.result.meta.TransactionResult, null, 2)}: Check codes at https://xrpl.org/docs/references/protocol/transactions/types/permissioneddomaindelete#error-cases`
|
|
}
|
|
updateResults()
|
|
} catch (error) {
|
|
results = `\n\n===Error===\n\n${error}`
|
|
updateResults()
|
|
}
|
|
|
|
client.disconnect()
|
|
}
|