spee.ch/helpers/functions/getAllFreePublicClaims.js

64 lines
1.9 KiB
JavaScript
Raw Normal View History

const isFreePublicClaim = require('./isFreePublicClaim.js')
const lbryApi = require('../libraries/lbryApi.js')
function filterForFreePublicClaims (claimsListArray) {
// console.log("claims list:", claimsListArray)
if (!claimsListArray) {
return null
}
const freePublicClaims = claimsListArray.filter(claim => {
if (!claim.value) {
return false
}
return isFreePublicClaim(claim)
})
return freePublicClaims
}
function orderTopClaims (claimsListArray) {
console.log('>> orderTopClaims')
claimsListArray.sort(({ amountA, heightA }, { amountB, heightB }) => {
if (amountA === amountB) {
return heightA > heightB
} else {
return amountA < amountB
}
})
return claimsListArray
}
module.exports = claimName => {
const deferred = new Promise((resolve, reject) => {
// make a call to the daemon to get the claims list
lbryApi
.getClaimsList(claimName)
.then(({ claims }) => {
const claimsList = claims
console.log('>> Number of claims:', claimsList.length)
// return early if no claims were found
if (claimsList.length === 0) {
reject('NO_CLAIMS')
console.log('exiting due to lack of claims')
return
}
// filter the claims to return only free, public claims
const freePublicClaims = filterForFreePublicClaims(claimsList)
// return early if no free, public claims were found
if (!freePublicClaims || freePublicClaims.length === 0) {
reject('NO_FREE_PUBLIC_CLAIMS')
console.log('exiting due to lack of free or public claims')
return
}
// order the claims
const orderedPublicClaims = orderTopClaims(freePublicClaims)
// resolve the promise
resolve(orderedPublicClaims)
})
.catch(error => {
console.log(">> 'claim_list' error")
reject(error)
})
})
return deferred
}