Skip to content

Commit

Permalink
feat:story share for searchCraft (#1172)
Browse files Browse the repository at this point in the history
  • Loading branch information
VenyXiong authored Jun 1, 2018
1 parent ce8463c commit 986daf1
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 15 deletions.
76 changes: 65 additions & 11 deletions src/mip-story/mip-story-share.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ define(function (require) {
var MIP_STORY_SHARE_SHOW = 'mip-story-share-show';
var viewer = require('viewer');

function MIPStoryShare(shareConfig) {
function MIPStoryShare(shareConfig, root) {
this.shareConfig = shareConfig;
this.root = root;
}

MIPStoryShare.prototype.build = function () {
Expand All @@ -21,23 +22,22 @@ define(function (require) {
data: ['_trackEvent', '小故事分享取消', '点击', window.location.href]
})
);
var shareData = this.shareConfig;
var shareConfig = {
title: shareData.title,
this.shareData = {
title: this.shareConfig.title,
titleDefault: document.title,
content: shareData.desc || shareData.content ||document.title,
content: this.shareConfig.desc || this.shareConfig.content || document.title,
contentDefault: '我发现了一个精彩的小故事,一起来看吧',
iconUrl: shareData.thumbnail,
iconUrl: this.shareConfig.thumbnail,
iconUrlDefault: ''
};
// 微信小故事分享配置
viewer.sendMessage('wxshare_config', shareConfig);
var shareUrl = util.parseCacheUrl(location.href);
viewer.sendMessage('wxshare_config', this.shareData);
this.shareUrl = util.parseCacheUrl(location.href);
/* eslint-disable max-len */
var html = ''
+ '<aside class="mip-story-share">'
+ '<div class="mip-share-container">'
+ '<mip-share url="' + shareUrl + '" title="'+ shareConfig.title + '" content="' + shareConfig.content + '" iconUrl="' + shareConfig.iconUrl + '"></mip-share>'
+ '<mip-share url="' + this.shareUrl + '" title="'+ this.shareData.title + '" content="' + this.shareData.content + '" iconUrl="' + this.shareData.iconUrl + '"></mip-share>'
+ '</div>'
+ '<span class="mip-story-share-cancel" data-stats-baidu-obj="' + shareCancelStats + '">取消</span>'
+ '</aside>';
Expand All @@ -46,12 +46,66 @@ define(function (require) {
};

MIPStoryShare.prototype.showShareLayer = function () {
var ele = document.querySelector('.mip-story-share');
var scSupport = this.supportCraft();
// 适配简单搜索,简单没有给出单独调用微信等渠道的api, 所以在这里拦截一下;
if (scSupport.support) {
this.callSearchCraftShare(scSupport.os);
return;
}

var ele = this.root.querySelector('.mip-story-share');
ele.classList.add(MIP_STORY_SHARE_SHOW);
};

/**
* callSearchCraftShare 吊起简单搜索的分享组件;
* @param {Boolean} osAndroid 是否是安卓端,对安卓有特殊的处理
*/

MIPStoryShare.prototype.callSearchCraftShare = function (osAndroid) {
var message = {
func: 'callNativeShare',
options: {
'type': 'url',
'imgurl': this.shareData.iconUrl,
'title': this.shareData.title,
'describe': this.shareData.content,
'url': this.shareUrl || window.location.href
}
};

if (osAndroid) {
message = JSON.stringify(message);
}

try {
window.Viaduct.postMessage(message);
} catch (e) {
// 错误处理
}

};
/**
* supportCraft 检测当前运行环境是否支持简单搜索的分享吊起
* @return {Object}
*/
MIPStoryShare.prototype.supportCraft = function () {
// 简单搜索ua判断 detect无法判断简单搜索故手动检测
var shareUa = typeof navigator !== 'undefined' ? navigator.userAgent : '';
var craft = /SearchCraft/i.test(shareUa);
var shareosAndroid = /Android/i.test(shareUa);
var shareV = craft && shareUa.match(/SearchCraft\/([\d.]*)/);
var supportAnd = ((shareosAndroid && parseFloat(shareV[1]) > 1.5));
var supportIos = (!shareosAndroid && (parseFloat(shareV[1])) > 1.11);
var support = craft && (supportAnd || supportIos);
return {
os: shareosAndroid,
support: support
};
};

MIPStoryShare.prototype.hideShareLayer = function () {
var ele = document.querySelector('.mip-story-share');
var ele = this.root.querySelector('.mip-story-share');
ele.classList.remove(MIP_STORY_SHARE_SHOW);
};

Expand Down
6 changes: 3 additions & 3 deletions src/mip-story/mip-story.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ define(function (require) {
// 初始化引导页
this.initHintLayer(element);
// 初始化分享页面
this.initShare(mipStoryConfigData);
this.initShare(mipStoryConfigData, element);
// 绑定事件
this.initEvent();
// 切换到第一页
Expand All @@ -81,9 +81,9 @@ define(function (require) {
this.viewMuted = !!(this.muted || this.audio);
};

MIPStory.prototype.initShare = function (storyConfig) {
MIPStory.prototype.initShare = function (storyConfig, element) {
var shareConfig = storyConfig.share || {};
this.share = new ShareLayer(shareConfig);
this.share = new ShareLayer(shareConfig, element);
var html = dm.create(this.share.build());
this.element.appendChild(html);
};
Expand Down
2 changes: 1 addition & 1 deletion src/mip-story/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mip-story",
"version": "1.0.13",
"version": "1.0.14",
"description": "一种展现移动原生优质内容的富媒体产品组件",
"contributors": [
{
Expand Down

0 comments on commit 986daf1

Please sign in to comment.