mtl-js-sdk
Version:
254 lines (208 loc) • 8.38 kB
JavaScript
;
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
define(["./wx.proxy", "./methods", "../../common/builder"], function (proxy, methods, builder) {
var SUCCESS_CODE = 200;
var FAIL_CODE = 1;
var configPermission = proxy.configPermission,
generateFunc = proxy.generateFunc;
var wx_apilist = {
base: ["startRecord", "stopRecord", "onVoiceRecordEnd", "playVoice", "pauseVoice", "stopVoice", "onVoicePlayEnd", "uploadVoice", "downloadVoice", "chooseImage", "previewImage", "uploadImage", "downloadImage", "getLocalImgData", "translateVoice", "getNetworkType", "openLocation", "getLocation", "scanQRCode"],
miniProgram: ["navigateBack", "navigateTo", "redirectTo", "switchTab", "reLaunch", "postMessage", "getEnv"]
};
var permissionStatus = 0; // 0.初始状态; 1.成功; -1.失败;
var callbacks = [];
var wx_methods = {};
wx_apilist.base.forEach(function (name) {
var fn = generateFunc(name);
var originFn = fn;
switch (name) {
case "previewImage":
fn = function fn(object) {
var urls = object.urls;
if (!(urls && urls.length > 0)) {
var result = {
code: FAIL_CODE,
message: "urls 不能为空"
};
object.fail && object.fail(result);
object.complete && object.complete(result);
return;
}
originFn(object);
};
break;
case "scanQRCode":
fn = function fn(object) {
var originSuccess = object.success;
var originComplete = object.complete;
var success = originSuccess && function (result) {
var resultStr = result.resultStr; // resultStr = resultStr && resultStr.split(",").pop();
originSuccess({
resultStr: resultStr
});
};
var complete = originComplete && function (result) {
if (result.code === SUCCESS_CODE) {
var resultStr = result.data.resultStr; // resultStr = resultStr && resultStr.split(",").pop();
result.data = {
resultStr: resultStr
};
}
originComplete(result);
};
originFn(_objectSpread({}, object, {
success: success,
complete: complete
}));
};
break;
case "chooseImage":
fn = function fn(object) {
var originSuccess = object.success;
var originComplete = object.complete;
var success = originSuccess && function (result) {
console.log('chosseImage success, ', result);
var localIds = result.localIds;
if (localIds instanceof Array && localIds.length > 0) {
originSuccess(result);
}
};
var complete = originComplete && function (result) {
if (result.code === SUCCESS_CODE) {
var localIds = result.data.localIds;
if (!(localIds instanceof Array && localIds.length > 0)) {
return;
}
}
originComplete(result);
};
originFn(_objectSpread({}, object, {
success: success,
complete: complete
}));
};
break;
case "getLocalImgData":
fn = function fn(object) {
var originSuccess = object.success;
var originComplete = object.complete;
var success = originSuccess && function (result) {
var localData = result.localData;
if (localData.indexOf("data:image") === -1) {
localData = "data:image/png;base64," + localData;
}
originSuccess({
localData: localData
});
};
var complete = originComplete && function (result) {
if (result.code === SUCCESS_CODE) {
var localData = result.data.localData;
if (localData.indexOf("data:image") === -1) {
localData = "data:image/png;base64," + localData;
}
result.data = {
localData: localData
};
}
originComplete(result);
};
originFn(_objectSpread({}, object, {
success: success,
complete: complete
}));
};
break;
case "getLocation":
fn = function fn(object) {
var originSuccess = object.success;
var originComplete = object.complete;
var success = originSuccess && function (result) {
var latitude = result.latitude,
longitude = result.longitude;
result.latitude = latitude.toFixed(6);
result.longitude = longitude.toFixed(6);
originSuccess(result);
};
var complete = originComplete && function (result) {
if (result.code === SUCCESS_CODE) {
var _result$data = result.data,
latitude = _result$data.latitude,
longitude = _result$data.longitude;
result.data.latitude = latitude.toFixed(6);
result.data.longitude = longitude.toFixed(6);
}
originComplete(result);
};
originFn(_objectSpread({}, object, {
success: success,
complete: complete
}));
};
break;
default:
break;
}
wx_methods[name] = function (object) {
if (permissionStatus == 1) {
builder.assignGetter(window.mtl, name, fn);
fn(object);
} else if (permissionStatus == -1) {
var res = {
code: FAIL_CODE,
message: "微信 JSSDK 授权失败"
};
object.fail && object.fail(res);
object.complete && object.complete(res);
console.log("微信 JSSDK 授权失败");
} else {
callbacks.push(function () {
builder.assignGetter(window.mtl, name, fn);
fn(object);
});
}
};
});
wx_apilist.miniProgram.forEach(function (name) {
var fn = generateFunc(name);
wx_methods[name] = fn;
});
var platform = {
id: "wx",
bootstrap: function bootstrap(onready) {
configPermission('', '', wx_apilist.base).then(function () {
permissionStatus = 1;
callbacks.forEach(function (cb) {
return cb();
});
callbacks = null;
onready();
})["catch"](function (err) {
permissionStatus = -1;
console.log("微信 JSSDK 授权失败bootstrap:" + JSON.stringify(err));
});
}
};
function initWxConfig(object) {
configPermission(object.appId, object.secret, wx_apilist.base).then(function () {
console.log("微信 JSSDK 授权成功");
permissionStatus = 1;
callbacks.forEach(function (cb) {
return cb();
});
callbacks = null;
onready();
})["catch"](function (err) {
if (permissionStatus != 1 && JSON.stringify(err) !== '{}') {
permissionStatus = -1;
console.log("微信 JSSDK 授权失败:" + JSON.stringify(err));
}
});
}
platform.exports = _objectSpread({}, wx_methods, {}, methods, {
initWxConfig: initWxConfig
});
return platform;
});