spee.ch/server/utils/getClaimData.js

62 lines
1.8 KiB
JavaScript

const {
details: { host },
assetDefaults: { thumbnail },
} = require('@config/siteConfig');
const chainquery = require('chainquery').default;
// const { getClaim } = require('server/lbrynet');
const { isBlocked } = require('./blockList');
module.exports = async (data, chName = null, chShortId = null) => {
// TODO: Refactor getching the channel name out; requires invasive changes.
const dataVals = data.dataValues ? data.dataValues : data;
const txid = dataVals.transaction_hash_id || dataVals.txid;
let nout;
if (typeof dataVals.vout === 'number') {
nout = dataVals.vout;
} else {
nout = dataVals.nout;
}
const outpoint = `${txid}:${nout}`;
const certificateId = dataVals.publisher_id || dataVals.certificateId;
const fileExt = data.generated_extension || dataVals.fileExt;
let channelShortId = chShortId;
let channelName = chName;
// TODO: Factor blocked out
let blocked;
if (isBlocked(outpoint)) {
blocked = true;
}
if (!chName && certificateId && !channelName) {
channelName = await chainquery.claim.queries.getClaimChannelName(certificateId).catch(() => {});
}
if (!chShortId && certificateId && channelName) {
channelShortId = await chainquery.claim.queries
.getShortClaimIdFromLongClaimId(certificateId, channelName)
.catch(() => null);
}
// Find a solution for the legacy application/octet-stream file extensions
return {
name: dataVals.name,
title: dataVals.title,
certificateId,
channelName,
channelShortId,
contentType: dataVals.content_type || data.contentType,
claimId: dataVals.claim_id || data.claimId,
fileExt: fileExt,
description: dataVals.description,
thumbnail: dataVals.thumbnail_url || data.thumbnail || thumbnail,
outpoint,
host,
pending: Boolean(dataVals.height === 0),
blocked: blocked,
};
};