qortal-ui/qortal-ui-crypto/api/registerUsername.js
2023-01-13 09:52:14 +01:00

40 lines
1.1 KiB
JavaScript

/**
* Not to be confused with register name...this is a special use case
*/
import { request, createTransaction, processTransaction } from './api.js'
const TX_TYPE = 3 // NAME_REGISTRATION
const CHECK_LAST_REF_INTERVAL = 30 * 1000 // err 30 seconds
const pendingAddresses = {}
const checkLastRefs = () => {
Object.entries(pendingAddresses).forEach(([address, fn]) => {
request('addresses/lastreference/' + address).then(res => {
if (res === 'false') return
fn(res)
delete pendingAddresses[address]
clearInterval(lastRefInterval)
})
})
}
const lastRefInterval = setInterval(() => checkLastRefs(), CHECK_LAST_REF_INTERVAL)
const callOnLastRef = (address, fn) => {
pendingAddresses[address] = fn
}
export const registerUsername = async ({ name, address, lastRef, keyPair }) => {
callOnLastRef(address, lastreference => {
const txBytes = createTransaction(TX_TYPE, keyPair, {
registrantPublicKey: keyPair.publicKey,
registrantAddress: address,
name,
value: address,
lastReference: lastreference
})
processTransaction(txBytes).then(res => { })
})
}