7da97e2933
Semicolon rule enforced as the main lbry-app uses semicolons!
63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
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;
|
|
};
|