Files
xrpl-dev-portal/content/_code-samples/build-a-wallet/desktop-js/library/3_helpers.js
2023-06-20 13:57:07 +02:00

48 lines
1.5 KiB
JavaScript

const xrpl = require("xrpl");
// The rippled server and its APIs represent time as an unsigned integer.
// This number measures the number of seconds since the "Ripple Epoch" of
// January 1, 2000 (00:00 UTC). This is like the way the Unix epoch works,
// Reference: https://xrpl.org/basic-data-types.html
const RIPPLE_EPOCH = 946684800;
const prepareAccountData = (rawAccountData, reserve) => {
const numOwners = rawAccountData.OwnerCount || 0
let xrpReserve = null
if (reserve) {
//TODO: Decimal?
xrpReserve = reserve.reserveBaseXrp + (reserve.reserveIncrementXrp * numOwners)
}
return {
classicAddress: rawAccountData.Account,
xAddress: xrpl.classicAddressToXAddress(rawAccountData.Account, false, true),
xrpBalance: xrpl.dropsToXrp(rawAccountData.Balance),
xrpReserve: xrpReserve
}
}
const prepareLedgerData = (rawLedgerData) => {
const timestamp = RIPPLE_EPOCH + rawLedgerData.ledger_time
const dateTime = new Date(timestamp * 1000)
const dateTimeString = dateTime.toLocaleDateString() + ' ' + dateTime.toLocaleTimeString()
return {
ledgerIndex: rawLedgerData.ledger_index,
ledgerHash: rawLedgerData.ledger_hash,
ledgerCloseTime: dateTimeString
}
}
const prepareReserve = (ledger) => {
const reserveBaseXrp = xrpl.dropsToXrp(ledger.reserve_base)
const reserveIncrementXrp = xrpl.dropsToXrp(ledger.reserve_inc)
return { reserveBaseXrp, reserveIncrementXrp }
}
module.exports = { prepareAccountData, prepareLedgerData, prepareReserve }