text: 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,
      nsfw: dataVals.is_nsfw,
      thumbnail: dataVals.thumbnail_url || data.thumbnail || thumbnail,
      outpoint,
      host,
      pending: Boolean(dataVals.height === 0),
      blocked: blocked,
      license: dataVals.license,
      licenseUrl: dataVals.license_url,
      transactionTime: dataVals.transaction_time,
    };
  };
  