oak-general-business/lib/features/weiXinJsSdk.web.js

142 lines
6.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WeiXinJsSdk = void 0;
var tslib_1 = require("tslib");
var Feature_1 = require("oak-frontend-base/lib/types/Feature");
var utils_1 = require("oak-frontend-base/lib/utils/utils");
var promisify_1 = require("oak-frontend-base/lib/utils/promisify");
var env_1 = require("../utils/env");
var lodash_1 = require("oak-domain/lib/utils/lodash");
// const weixin = require('weixin-js-sdk');
var weixin_js_sdk_1 = tslib_1.__importDefault(require("weixin-js-sdk"));
var WeiXinJsSdk = /** @class */ (function (_super) {
tslib_1.__extends(WeiXinJsSdk, _super);
function WeiXinJsSdk(cache, storage) {
var _this = _super.call(this) || this;
_this.cache = cache;
_this.storage = storage;
_this.landingUrl = undefined;
return _this;
}
WeiXinJsSdk.prototype.signatureJsSDK = function (url) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var env, result;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, (0, env_1.getEnv)()];
case 1:
env = _a.sent();
return [4 /*yield*/, this.cache.exec('signatureJsSDK', {
url: url,
env: env,
})];
case 2:
result = (_a.sent()).result;
return [2 /*return*/, result];
}
});
});
};
WeiXinJsSdk.prototype.getConfig = function (config) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
weixin_js_sdk_1.default.config(config);
weixin_js_sdk_1.default.ready(function () {
console.log('调用wx.config通过');
resolve('');
});
weixin_js_sdk_1.default.error(function (err) {
var error = "\u8C03\u7528wx.config\u51FA\u9519: ".concat(JSON.stringify(err), "\uFF0C\u8BF7\u91CD\u65B0\u5C1D\u8BD5");
reject(error);
});
})];
});
});
};
WeiXinJsSdk.prototype.setLandingUrl = function (url) {
if (utils_1.isIos && utils_1.isWeiXin) {
this.landingUrl = url;
}
};
WeiXinJsSdk.prototype.init = function (options) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, jsApiList, openTagList, url, splitUrl, result, jsApiList2, openTagList2;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!utils_1.isWeiXin) {
console.warn('只能在微信客户端初始化JSSDK');
return [2 /*return*/];
}
_a = options || {}, jsApiList = _a.jsApiList, openTagList = _a.openTagList;
url = window.location.href;
//在ios上 实际真正有效的的签名URL是【第一次进入应用时的URL】
if (utils_1.isIos && !utils_1.isWeiXinDevTools && this.landingUrl) {
url = this.landingUrl;
}
splitUrl = url.split('#')[0];
return [4 /*yield*/, this.signatureJsSDK(splitUrl)];
case 1:
result = _b.sent();
jsApiList2 = [
'updateAppMessageShareData',
'updateTimelineShareData',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'getLocation',
'chooseWXPay',
'scanQRCode',
'openLocation',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
];
if (jsApiList && jsApiList instanceof Array) {
jsApiList2 = (0, lodash_1.uniq)(jsApiList2.concat(jsApiList));
}
openTagList2 = ['wx-open-launch-weapp'];
if (openTagList && openTagList instanceof Array) {
openTagList2 = (0, lodash_1.uniq)(openTagList2.concat(openTagList));
}
return [2 /*return*/, this.getConfig({
debug: process.env.NODE_ENV === 'development',
appId: result.appId,
timestamp: result.timestamp,
nonceStr: result.noncestr,
signature: result.signature,
jsApiList: jsApiList2,
beta: false,
openTagList: openTagList2,
})];
}
});
});
};
/**
* 微信jssdk 传入方法名
*/
WeiXinJsSdk.prototype.loadWxAPi = function (name, options, jsApiList, openTagList) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var wxFn, result;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.init({ jsApiList: jsApiList, openTagList: openTagList })];
case 1:
_a.sent();
wxFn = (0, promisify_1.promisify)(weixin_js_sdk_1.default[name]);
return [4 /*yield*/, wxFn(options)];
case 2:
result = _a.sent();
return [2 /*return*/, result];
}
});
});
};
return WeiXinJsSdk;
}(Feature_1.Feature));
exports.WeiXinJsSdk = WeiXinJsSdk;