share-handler.js
2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import {get, first} from 'lodash';
const qs = require('yoho-qs');
const cookie = require('yoho-cookie');
let app_version = cookie.get('app_version') || qs.app_version || '';
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) => {
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'];
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
};