mtl-js-sdk
Version:
ynf-fw-mtl-api
162 lines (149 loc) • 4.75 kB
JavaScript
import {invokeSuccess, invokeFail} from '../callback'
import {handleMessage} from '../message'
import {execUpesnBridgeify,canExecUpesnBridge} from '../bridge/index'
let pullDownRefreshCallback, pullUpRefreshCallback, pullDownRefreshTimer, pullUpRefreshTimer;
export function configureWebView(param = {}) {
let {scrollViewBounces, pullDownRefresh, pullUpRefresh} = param;
if (typeof scrollViewBounces == 'boolean') {
let frameName = api.frameName;
if (frameName) {
api.setFrameAttr({
name: frameName,
bounces: scrollViewBounces
});
} else {
api.setWinAttr({
bounces: scrollViewBounces
});
}
}
if (typeof pullDownRefresh == 'boolean') {
if (pullDownRefresh) {
let pullDownRefreshInfo = param.pullDownRefreshInfo || {};
api.setCustomRefreshHeaderInfo({
bgColor: 'rgba(0,0,0,0)',
...pullDownRefreshInfo
}, function() {
if (pullDownRefreshTimer) {
clearTimeout(pullDownRefreshTimer);
}
pullDownRefreshTimer = setTimeout(function(){
pullDownRefreshTimer = 0;
api.refreshHeaderLoadDone();
}, 10000);
pullDownRefreshCallback && handleMessage(pullDownRefreshCallback, {});
});
}
}
if (typeof pullUpRefresh == 'boolean') {
if (!api.setRefreshFooterInfo) {return;};
if (pullUpRefresh) {
let pullUpRefreshInfo = param.pullUpRefreshInfo || {};
api.setRefreshFooterInfo({
bgColor: 'rgba(0,0,0,0)',
...pullUpRefreshInfo
}, function() {
if (pullUpRefreshTimer) {
clearTimeout(pullUpRefreshTimer);
}
pullUpRefreshTimer = setTimeout(function(){
pullUpRefreshTimer = 0;
api.refreshFooterLoadDone();
}, 10000);
pullUpRefreshCallback && handleMessage(pullUpRefreshCallback, {});
});
}
}
}
export function onPullDownHandle(param = {}) {
pullDownRefreshCallback = param.callback;
invokeSuccess(param, {});
}
export function startPullDownHandle(param = {}) {
api.refreshHeaderLoading();
invokeSuccess(param, {});
}
export function stopPullDownHandle(param = {}) {
if (pullDownRefreshTimer) {
clearTimeout(pullDownRefreshTimer);
pullDownRefreshTimer = 0;
}
api.refreshHeaderLoadDone();
invokeSuccess(param, {});
}
export function onPullUpHandle(param = {}) {
pullUpRefreshCallback = param.callback;
invokeSuccess(param, {});
}
export function startPullUpHandle(param = {}) {
api.refreshFooterLoading && api.refreshFooterLoading();
invokeSuccess(param, {});
}
export function stopPullUpHandle(param = {}) {
if (pullUpRefreshTimer) {
clearTimeout(pullUpRefreshTimer);
pullUpRefreshTimer = 0;
}
api.refreshFooterLoadDone && api.refreshFooterLoadDone();
invokeSuccess(param, {});
}
export function isWebviewCanGoBack(param = {}) {
if (canExecUpesnBridge()) {
const isSuccess = execUpesnBridgeify('isWebviewCanGoBack', param);
if (isSuccess) {
return;
}
}
api.historyBack({
query: true
}, function(ret) {
invokeSuccess(param, {result:ret.status});
});
}
export function onWebviewGoBack(param = {}) {
if (canExecUpesnBridge()) {
const isSuccess = execUpesnBridgeify('onWebviewGoBack', param);
if (isSuccess) {
return;
}
}
api.historyBack(function(ret) {
if (ret.status) {
invokeSuccess(param, {});
} else {
invokeFail(param, {});
}
});
}
/**
* 打开上拉网页弹窗
* @param {object} param
*/
export function openBottomSheetDialogue(param = {}) {
// 透传给移动端
if (canExecUpesnBridge()) {
execUpesnBridgeify('openBottomSheetDialogue', param);
return;
}
// 私有版无函数实现
invokeFail(param, {
code: "-10001",
msg: "The current platform doesn't support this api"
});
}
/**
* 关闭上拉网页弹窗
* @param {object} param
*/
export function closeBottomSheetDialogue(param = {}) {
// 透传给移动端
if (canExecUpesnBridge()) {
execUpesnBridgeify('closeBottomSheetDialogue', param);
return;
}
// 私有版无函数实现
invokeFail(param, {
code: "-10001",
msg: "The current platform doesn't support this api"
});
}