UNPKG

mtl-js-sdk

Version:

254 lines (208 loc) 8.38 kB
"use strict"; 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; });