Files
xrpl-dev-portal/_code-samples/modular-tutorials/credential-manager.js
Mayukha Vadari 0b247281eb run prettier
2026-01-12 14:19:31 -05:00

62 lines
2.1 KiB
JavaScript

// Create credential function
async function createCredential() {
let net = getNet()
const client = new xrpl.Client(net)
results = `\n\n===Creating Credential===\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 subject
const subject = subjectField.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: 'CredentialCreate',
Account: wallet.address,
Subject: subject,
CredentialType: credentialType,
}
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 credential info
const parsedResponse = JSON.parse(JSON.stringify(tx.result.meta.AffectedNodes, null, 2))
const credentialInfo = parsedResponse.find((node) => node.CreatedNode && node.CreatedNode.LedgerEntryType === 'Credential')
results = `\n\n===Create Credential Result===\n\n${JSON.stringify(credentialInfo.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/credentialcreate#error-cases`
}
updateResults()
} catch (error) {
results = `\n\n===Error===\n\n${error}`
updateResults()
}
client.disconnect()
}