share-handler.js 3.03 KB
import { get, first } from 'lodash';

function _version2num(version) {
  if (!version) {
    return 0;
  }

  let [m, j, b] = version.split(',');

  return +m * 10000 + +j * 100 + +b;
}

function versionCompare(left, right) {
  let leftNum = _version2num(left);
  let rightNum = _version2num(right);

  if (leftNum === rightNum) {
    return 0;
  } else if (leftNum > rightNum) {
    return 1;
  } else {
    return -1;
  }
}

const DEFAULT_SHARE_IMAGE =
  'http://static.yohobuy.com/m/v1/img/touch/apple-touch-icon-144x144-precomposed-new.png';

function handleProtocol(url) {
  if (url.indexOf('//') < 0 || url.indexOf('http') >= 0) {
    return url;
  }

  url = url.split('//');
  url[0] = 'https:';

  return url.join('//');
}

const getDetailShareData = (article, app_version = '6.9.11') => {
  let shareImage = '';

  let desc = '';

  if (article.sort === 2) {
    shareImage = article.coverImage || '';
    desc = article.articleTitle || '';
  } else if (article.sort === 4) {
    shareImage = article.coverUrl || '';
    desc = article.content || '';
  } else {
    let blockList = get(article, 'blockList', []);

    shareImage = get(
      first(blockList.filter(block => block.templateKey === 'image')),
      'contentData',
      '',
    );
    desc = get(
      blockList.filter(block => block.templateKey === 'text'),
      '[0].contentData',
      '',
    );
  }

  if (shareImage && shareImage.indexOf('//') >= 0) {
    shareImage = `${window ? window.location.protocol : ''}//${
      shareImage.split('//')[1]
    }`;
  }

  const requiredVersion = '6.9.11';

  // let hideType = ['7', '8', '9'];
  let hideType = ['8', '9'];

  // if (versionCompare(app_version, requiredVersion) >= 0) {
  //   hideType = ['8', '9'];
  // }

  return {
    title: `@${article.authorName} 在有货社区上发了一篇内容,快点开看看!`,
    imgUrl: handleProtocol(
      get(shareImage.split('?'), '[0]') || DEFAULT_SHARE_IMAGE,
    ),
    link: handleProtocol(
      `${window ? window.location.origin : ''}/grass/article/${
        article.articleId
      }?share=true`,
    ),
    desc,
    hideType,
    shareType: 'grassDetail',
    userName: article.authorName,
    userIcon: article.authorHeadIco,
    articleId: article.articleId,
  };
};

const getTopicShareData = topic => {
  return {
    title: topic.topicName,
    imgUrl: handleProtocol(topic.topicImageUrl),
    link: handleProtocol(
      `${location.origin}/grass/topic/${topic.topicId}?share=true`,
    ),
    desc: '我在有货的社区发现一个热门话题。' + topic.topicDesc,
    hideType: ['7', '8', '9'],
  };
};

const getAuthorShareData = author => {
  return {
    title: `@${author.nickName} YO!社区,一起来玩潮流!`,
    imgUrl: handleProtocol(
      get(author, 'headIco', '').split('?')[0] || DEFAULT_SHARE_IMAGE,
    ),
    link: handleProtocol(
      `${location.origin}/grass/author/${author.authorType}/${author.authorUid}?share=true`,
    ),
    desc: author.signature || '',
    hideType: ['7', '8', '9'],
  };
};

export { getDetailShareData, getTopicShareData, getAuthorShareData };