修正了cos中的低级问题,endpoint/wechat中的低级问题
This commit is contained in:
parent
bb82308678
commit
de17a65848
|
|
@ -1,2 +1,2 @@
|
|||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default checkers;
|
||||
|
|
|
|||
|
|
@ -473,15 +473,15 @@ async function onWeChatPublicEvent(data, context) {
|
|||
const event = Event.toLowerCase();
|
||||
switch (event) {
|
||||
case 'subscribe':
|
||||
setUserSubscribed(FromUserName, EventKey, context);
|
||||
await setUserSubscribed(FromUserName, EventKey, context);
|
||||
evt = `用户${FromUserName}关注公众号`;
|
||||
break;
|
||||
case 'scan':
|
||||
setUserSubscribed(FromUserName, EventKey, context);
|
||||
await setUserSubscribed(FromUserName, EventKey, context);
|
||||
evt = `用户${FromUserName}再次扫描带${EventKey}键值的二维码`;
|
||||
break;
|
||||
case 'unsubscribe': {
|
||||
setUserUnsubscribed(FromUserName, context);
|
||||
await setUserUnsubscribed(FromUserName, context);
|
||||
evt = `用户${FromUserName}取关`;
|
||||
break;
|
||||
}
|
||||
|
|
@ -490,7 +490,7 @@ async function onWeChatPublicEvent(data, context) {
|
|||
break;
|
||||
}
|
||||
case 'click': {
|
||||
setClickEventKey(FromUserName, EventKey, context);
|
||||
await setClickEventKey(FromUserName, EventKey, context);
|
||||
evt = `用户${FromUserName}点击菜单【${EventKey}】`;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,25 +13,22 @@ type ConfigOptions = {
|
|||
jsApiList?: wx.jsApiList;
|
||||
openTagList?: wx.openTagList;
|
||||
};
|
||||
type ParamOptions = wx.IcheckJsApi | wx.IaddCard | wx.IchooseCard | wx.IonMenuShareTimeline | wx.IonMenuShareAppMessage | wx.IonMenuShareQQ | wx.IonMenuShareWeibo | wx.IonMenuShareQZone | wx.IchooseImage | wx.IpreviewImage | wx.IgetLocalImgData | wx.IplaypausestopVoice | wx.IopenLocation | wx.IgetLocation | wx.IscanQRCode | wx.IopenProductSpecificView | wx.IchooseCard | wx.IopenCard | wx.IchooseWXPay;
|
||||
export declare class WechatSdk<ED extends EntityDict> extends Feature {
|
||||
private cache;
|
||||
private storage;
|
||||
private environment;
|
||||
private landingUrl?;
|
||||
private lastConfigUrl?;
|
||||
constructor(cache: Cache<ED>, storage: LocalStorage, environment: Environment);
|
||||
signatureJsSDK(url: string): Promise<any>;
|
||||
getConfig(config: ConfigOptions): Promise<unknown>;
|
||||
setLandingUrl(url?: string): void;
|
||||
init(options?: {
|
||||
jsApiList?: wx.jsApiList;
|
||||
openTagList?: wx.openTagList;
|
||||
debug?: boolean;
|
||||
}): Promise<unknown>;
|
||||
private initedApiList;
|
||||
private init;
|
||||
/**
|
||||
* 微信jssdk 传入方法名
|
||||
*/
|
||||
loadWxAPi(name: wx.ApiMethod, options?: ParamOptions, jsApiList?: wx.jsApiList, openTagList?: wx.openTagList): Promise<object>;
|
||||
loadWxAPi<T extends wx.ApiMethod>(name: T, options?: Parameters<(typeof wx)[T]>[0]): Promise<object>;
|
||||
subscribeMpMessage(messageTypes: string[], haveToAccept?: boolean, tip?: string): Promise<boolean>;
|
||||
}
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ export class WechatSdk extends Feature {
|
|||
storage;
|
||||
environment;
|
||||
landingUrl; //解决在IOS上,无论路由切换到哪个页面,实际真正有效的的签名URL是【第一次进入应用时的URL】;
|
||||
lastConfigUrl;
|
||||
constructor(cache, storage, environment) {
|
||||
super();
|
||||
this.cache = cache;
|
||||
|
|
@ -41,20 +42,24 @@ export class WechatSdk extends Feature {
|
|||
this.landingUrl = url;
|
||||
}
|
||||
}
|
||||
initedApiList = [];
|
||||
async init(options) {
|
||||
if (!isWeiXin) {
|
||||
console.warn('只能在微信客户端初始化JSSDK');
|
||||
return;
|
||||
}
|
||||
const { jsApiList, openTagList, debug = process.env.NODE_ENV === 'development', } = options || {};
|
||||
const { name } = options || {};
|
||||
let url = window.location.href;
|
||||
//在ios上 实际真正有效的的签名URL是【第一次进入应用时的URL】
|
||||
if (isIos && !isWeiXinDevTools && this.landingUrl) {
|
||||
url = this.landingUrl;
|
||||
}
|
||||
if (this.initedApiList.includes(name) && this.lastConfigUrl === url) {
|
||||
return;
|
||||
}
|
||||
const splitUrl = url.split('#')[0];
|
||||
const result = await this.signatureJsSDK(splitUrl); // 接口回来的是noncestr 不是nonceStr
|
||||
let jsApiList2 = [
|
||||
const dftApiList = [
|
||||
'updateAppMessageShareData',
|
||||
'updateTimelineShareData',
|
||||
'onMenuShareTimeline',
|
||||
|
|
@ -70,28 +75,35 @@ export class WechatSdk extends Feature {
|
|||
'uploadImage',
|
||||
'downloadImage',
|
||||
];
|
||||
if (jsApiList && jsApiList instanceof Array) {
|
||||
jsApiList2 = uniq(jsApiList2.concat(jsApiList));
|
||||
}
|
||||
let openTagList2 = ['wx-open-launch-weapp'];
|
||||
if (openTagList && openTagList instanceof Array) {
|
||||
openTagList2 = uniq(openTagList2.concat(openTagList));
|
||||
}
|
||||
return this.getConfig({
|
||||
debug: debug,
|
||||
const jsApiList = uniq(this.initedApiList.length > 0 ? this.initedApiList.concat([name]) : dftApiList.concat([name]));
|
||||
/**
|
||||
* https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html
|
||||
* 文档中有四个,ts声明可能不及时
|
||||
* by Xc 20240321
|
||||
*/
|
||||
const openTagList = [
|
||||
'wx-open-launch-weapp',
|
||||
'wx-open-launch-app',
|
||||
'wx-open-subscribe',
|
||||
'wx-open-audio'
|
||||
];
|
||||
await this.getConfig({
|
||||
debug: process.env.NODE_ENV === 'development',
|
||||
appId: result.appId,
|
||||
timestamp: result.timestamp,
|
||||
nonceStr: result.noncestr,
|
||||
signature: result.signature,
|
||||
jsApiList: jsApiList2,
|
||||
openTagList: openTagList2,
|
||||
jsApiList,
|
||||
openTagList,
|
||||
});
|
||||
this.initedApiList = jsApiList;
|
||||
this.lastConfigUrl = url;
|
||||
}
|
||||
/**
|
||||
* 微信jssdk 传入方法名
|
||||
*/
|
||||
async loadWxAPi(name, options, jsApiList, openTagList) {
|
||||
await this.init({ jsApiList, openTagList });
|
||||
async loadWxAPi(name, options) {
|
||||
await this.init({ name });
|
||||
const wxFn = wxPromisify(wx[name]);
|
||||
const result = await wxFn(options);
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export declare function createToDo<ED extends EntityDict & BaseEntityDict, T ext
|
|||
redirectTo: EntityDict['toDo']['OpSchema']['redirectTo'];
|
||||
entity: any;
|
||||
entityId: string;
|
||||
}, userIds?: string[]): Promise<1 | 0>;
|
||||
}, userIds?: string[]): Promise<0 | 1>;
|
||||
/**
|
||||
* 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成
|
||||
* 必须在entity的action的后trigger中调用
|
||||
|
|
|
|||
|
|
@ -14,6 +14,10 @@ export function getCos(origin) {
|
|||
}
|
||||
export function composeFileUrl(extraFile, config, style) {
|
||||
const { origin } = extraFile;
|
||||
if (origin === 'unknown') {
|
||||
// 扯淡的代码 by Xc 20240521
|
||||
return extraFile.extra1;
|
||||
}
|
||||
const cos = CosDict[origin];
|
||||
return cos.composeFileUrl(extraFile, config, style);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const checkers: (import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default checkers;
|
||||
|
|
|
|||
|
|
@ -478,15 +478,15 @@ async function onWeChatPublicEvent(data, context) {
|
|||
const event = Event.toLowerCase();
|
||||
switch (event) {
|
||||
case 'subscribe':
|
||||
setUserSubscribed(FromUserName, EventKey, context);
|
||||
await setUserSubscribed(FromUserName, EventKey, context);
|
||||
evt = `用户${FromUserName}关注公众号`;
|
||||
break;
|
||||
case 'scan':
|
||||
setUserSubscribed(FromUserName, EventKey, context);
|
||||
await setUserSubscribed(FromUserName, EventKey, context);
|
||||
evt = `用户${FromUserName}再次扫描带${EventKey}键值的二维码`;
|
||||
break;
|
||||
case 'unsubscribe': {
|
||||
setUserUnsubscribed(FromUserName, context);
|
||||
await setUserUnsubscribed(FromUserName, context);
|
||||
evt = `用户${FromUserName}取关`;
|
||||
break;
|
||||
}
|
||||
|
|
@ -495,7 +495,7 @@ async function onWeChatPublicEvent(data, context) {
|
|||
break;
|
||||
}
|
||||
case 'click': {
|
||||
setClickEventKey(FromUserName, EventKey, context);
|
||||
await setClickEventKey(FromUserName, EventKey, context);
|
||||
evt = `用户${FromUserName}点击菜单【${EventKey}】`;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,25 +13,22 @@ type ConfigOptions = {
|
|||
jsApiList?: wx.jsApiList;
|
||||
openTagList?: wx.openTagList;
|
||||
};
|
||||
type ParamOptions = wx.IcheckJsApi | wx.IaddCard | wx.IchooseCard | wx.IonMenuShareTimeline | wx.IonMenuShareAppMessage | wx.IonMenuShareQQ | wx.IonMenuShareWeibo | wx.IonMenuShareQZone | wx.IchooseImage | wx.IpreviewImage | wx.IgetLocalImgData | wx.IplaypausestopVoice | wx.IopenLocation | wx.IgetLocation | wx.IscanQRCode | wx.IopenProductSpecificView | wx.IchooseCard | wx.IopenCard | wx.IchooseWXPay;
|
||||
export declare class WechatSdk<ED extends EntityDict> extends Feature {
|
||||
private cache;
|
||||
private storage;
|
||||
private environment;
|
||||
private landingUrl?;
|
||||
private lastConfigUrl?;
|
||||
constructor(cache: Cache<ED>, storage: LocalStorage, environment: Environment);
|
||||
signatureJsSDK(url: string): Promise<any>;
|
||||
getConfig(config: ConfigOptions): Promise<unknown>;
|
||||
setLandingUrl(url?: string): void;
|
||||
init(options?: {
|
||||
jsApiList?: wx.jsApiList;
|
||||
openTagList?: wx.openTagList;
|
||||
debug?: boolean;
|
||||
}): Promise<unknown>;
|
||||
private initedApiList;
|
||||
private init;
|
||||
/**
|
||||
* 微信jssdk 传入方法名
|
||||
*/
|
||||
loadWxAPi(name: wx.ApiMethod, options?: ParamOptions, jsApiList?: wx.jsApiList, openTagList?: wx.openTagList): Promise<object>;
|
||||
loadWxAPi<T extends wx.ApiMethod>(name: T, options?: Parameters<(typeof wx)[T]>[0]): Promise<object>;
|
||||
subscribeMpMessage(messageTypes: string[], haveToAccept?: boolean, tip?: string): Promise<boolean>;
|
||||
}
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ class WechatSdk extends Feature_1.Feature {
|
|||
storage;
|
||||
environment;
|
||||
landingUrl; //解决在IOS上,无论路由切换到哪个页面,实际真正有效的的签名URL是【第一次进入应用时的URL】;
|
||||
lastConfigUrl;
|
||||
constructor(cache, storage, environment) {
|
||||
super();
|
||||
this.cache = cache;
|
||||
|
|
@ -45,20 +46,24 @@ class WechatSdk extends Feature_1.Feature {
|
|||
this.landingUrl = url;
|
||||
}
|
||||
}
|
||||
initedApiList = [];
|
||||
async init(options) {
|
||||
if (!utils_1.isWeiXin) {
|
||||
console.warn('只能在微信客户端初始化JSSDK');
|
||||
return;
|
||||
}
|
||||
const { jsApiList, openTagList, debug = process.env.NODE_ENV === 'development', } = options || {};
|
||||
const { name } = options || {};
|
||||
let url = window.location.href;
|
||||
//在ios上 实际真正有效的的签名URL是【第一次进入应用时的URL】
|
||||
if (utils_1.isIos && !utils_1.isWeiXinDevTools && this.landingUrl) {
|
||||
url = this.landingUrl;
|
||||
}
|
||||
if (this.initedApiList.includes(name) && this.lastConfigUrl === url) {
|
||||
return;
|
||||
}
|
||||
const splitUrl = url.split('#')[0];
|
||||
const result = await this.signatureJsSDK(splitUrl); // 接口回来的是noncestr 不是nonceStr
|
||||
let jsApiList2 = [
|
||||
const dftApiList = [
|
||||
'updateAppMessageShareData',
|
||||
'updateTimelineShareData',
|
||||
'onMenuShareTimeline',
|
||||
|
|
@ -74,28 +79,35 @@ class WechatSdk extends Feature_1.Feature {
|
|||
'uploadImage',
|
||||
'downloadImage',
|
||||
];
|
||||
if (jsApiList && jsApiList instanceof Array) {
|
||||
jsApiList2 = (0, lodash_1.uniq)(jsApiList2.concat(jsApiList));
|
||||
}
|
||||
let openTagList2 = ['wx-open-launch-weapp'];
|
||||
if (openTagList && openTagList instanceof Array) {
|
||||
openTagList2 = (0, lodash_1.uniq)(openTagList2.concat(openTagList));
|
||||
}
|
||||
return this.getConfig({
|
||||
debug: debug,
|
||||
const jsApiList = (0, lodash_1.uniq)(this.initedApiList.length > 0 ? this.initedApiList.concat([name]) : dftApiList.concat([name]));
|
||||
/**
|
||||
* https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html
|
||||
* 文档中有四个,ts声明可能不及时
|
||||
* by Xc 20240321
|
||||
*/
|
||||
const openTagList = [
|
||||
'wx-open-launch-weapp',
|
||||
'wx-open-launch-app',
|
||||
'wx-open-subscribe',
|
||||
'wx-open-audio'
|
||||
];
|
||||
await this.getConfig({
|
||||
debug: process.env.NODE_ENV === 'development',
|
||||
appId: result.appId,
|
||||
timestamp: result.timestamp,
|
||||
nonceStr: result.noncestr,
|
||||
signature: result.signature,
|
||||
jsApiList: jsApiList2,
|
||||
openTagList: openTagList2,
|
||||
jsApiList,
|
||||
openTagList,
|
||||
});
|
||||
this.initedApiList = jsApiList;
|
||||
this.lastConfigUrl = url;
|
||||
}
|
||||
/**
|
||||
* 微信jssdk 传入方法名
|
||||
*/
|
||||
async loadWxAPi(name, options, jsApiList, openTagList) {
|
||||
await this.init({ jsApiList, openTagList });
|
||||
async loadWxAPi(name, options) {
|
||||
await this.init({ name });
|
||||
const wxFn = (0, promisify_1.promisify)(weixin_js_sdk_1.default[name]);
|
||||
const result = await wxFn(options);
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export declare function createToDo<ED extends EntityDict & BaseEntityDict, T ext
|
|||
redirectTo: EntityDict['toDo']['OpSchema']['redirectTo'];
|
||||
entity: any;
|
||||
entityId: string;
|
||||
}, userIds?: string[]): Promise<1 | 0>;
|
||||
}, userIds?: string[]): Promise<0 | 1>;
|
||||
/**
|
||||
* 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成
|
||||
* 必须在entity的action的后trigger中调用
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@ function getCos(origin) {
|
|||
exports.getCos = getCos;
|
||||
function composeFileUrl(extraFile, config, style) {
|
||||
const { origin } = extraFile;
|
||||
if (origin === 'unknown') {
|
||||
// 扯淡的代码 by Xc 20240521
|
||||
return extraFile.extra1;
|
||||
}
|
||||
const cos = CosDict[origin];
|
||||
return cos.composeFileUrl(extraFile, config, style);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -627,15 +627,15 @@ async function onWeChatPublicEvent(data: WechatPublicEventData, context: BRC<Ent
|
|||
const event = Event.toLowerCase();
|
||||
switch (event) {
|
||||
case 'subscribe':
|
||||
setUserSubscribed(FromUserName, EventKey!, context);
|
||||
await setUserSubscribed(FromUserName, EventKey!, context);
|
||||
evt = `用户${FromUserName}关注公众号`;
|
||||
break;
|
||||
case 'scan':
|
||||
setUserSubscribed(FromUserName, EventKey!, context);
|
||||
await setUserSubscribed(FromUserName, EventKey!, context);
|
||||
evt = `用户${FromUserName}再次扫描带${EventKey}键值的二维码`;
|
||||
break;
|
||||
case 'unsubscribe': {
|
||||
setUserUnsubscribed(FromUserName, context);
|
||||
await setUserUnsubscribed(FromUserName, context);
|
||||
evt = `用户${FromUserName}取关`;
|
||||
break;
|
||||
}
|
||||
|
|
@ -644,7 +644,7 @@ async function onWeChatPublicEvent(data: WechatPublicEventData, context: BRC<Ent
|
|||
break;
|
||||
}
|
||||
case 'click': {
|
||||
setClickEventKey(FromUserName, EventKey!, context);
|
||||
await setClickEventKey(FromUserName, EventKey!, context);
|
||||
evt = `用户${FromUserName}点击菜单【${EventKey}】`;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,8 @@ export class WechatSdk<ED extends EntityDict> extends Feature {
|
|||
private cache: Cache<ED>;
|
||||
private storage: LocalStorage;
|
||||
private environment: Environment;
|
||||
private landingUrl?: string; //解决在IOS上,无论路由切换到哪个页面,实际真正有效的的签名URL是【第一次进入应用时的URL】;
|
||||
private landingUrl?: string; //解决在IOS上,无论路由切换到哪个页面,实际真正有效的的签名URL是【第一次进入应用时的URL】;
|
||||
private lastConfigUrl?: string;
|
||||
|
||||
constructor(
|
||||
cache: Cache<ED>,
|
||||
|
|
@ -97,19 +98,17 @@ export class WechatSdk<ED extends EntityDict> extends Feature {
|
|||
}
|
||||
}
|
||||
|
||||
async init(options?: {
|
||||
jsApiList?: wx.jsApiList;
|
||||
openTagList?: wx.openTagList;
|
||||
debug?: boolean;
|
||||
private initedApiList: wx.ApiMethod[] = [];
|
||||
|
||||
private async init(options: {
|
||||
name: wx.ApiMethod
|
||||
}) {
|
||||
if (!isWeiXin) {
|
||||
console.warn('只能在微信客户端初始化JSSDK');
|
||||
return;
|
||||
}
|
||||
const {
|
||||
jsApiList,
|
||||
openTagList,
|
||||
debug = process.env.NODE_ENV === 'development',
|
||||
name
|
||||
} = options || {};
|
||||
|
||||
let url = window.location.href;
|
||||
|
|
@ -117,10 +116,14 @@ export class WechatSdk<ED extends EntityDict> extends Feature {
|
|||
if (isIos && !isWeiXinDevTools && this.landingUrl) {
|
||||
url = this.landingUrl;
|
||||
}
|
||||
if (this.initedApiList.includes(name) && this.lastConfigUrl === url) {
|
||||
return;
|
||||
}
|
||||
|
||||
const splitUrl = url.split('#')[0];
|
||||
const result = await this.signatureJsSDK(splitUrl); // 接口回来的是noncestr 不是nonceStr
|
||||
|
||||
let jsApiList2: wx.jsApiList = [
|
||||
const dftApiList: wx.jsApiList = [
|
||||
'updateAppMessageShareData',
|
||||
'updateTimelineShareData',
|
||||
'onMenuShareTimeline',
|
||||
|
|
@ -136,36 +139,40 @@ export class WechatSdk<ED extends EntityDict> extends Feature {
|
|||
'uploadImage',
|
||||
'downloadImage',
|
||||
];
|
||||
if (jsApiList && jsApiList instanceof Array) {
|
||||
jsApiList2 = uniq(jsApiList2.concat(jsApiList));
|
||||
}
|
||||
const jsApiList = uniq(this.initedApiList.length > 0 ? this.initedApiList.concat([name]) : dftApiList.concat([name]));
|
||||
|
||||
let openTagList2: wx.openTagList = ['wx-open-launch-weapp'];
|
||||
if (openTagList && openTagList instanceof Array) {
|
||||
openTagList2 = uniq(openTagList2.concat(openTagList));
|
||||
}
|
||||
/**
|
||||
* https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html
|
||||
* 文档中有四个,ts声明可能不及时
|
||||
* by Xc 20240321
|
||||
*/
|
||||
const openTagList: wx.openTagList = [
|
||||
'wx-open-launch-weapp',
|
||||
'wx-open-launch-app',
|
||||
'wx-open-subscribe',
|
||||
'wx-open-audio'] as any;
|
||||
|
||||
return this.getConfig({
|
||||
debug: debug,
|
||||
await this.getConfig({
|
||||
debug: process.env.NODE_ENV === 'development',
|
||||
appId: result.appId,
|
||||
timestamp: result.timestamp,
|
||||
nonceStr: result.noncestr,
|
||||
signature: result.signature,
|
||||
jsApiList: jsApiList2,
|
||||
openTagList: openTagList2,
|
||||
jsApiList,
|
||||
openTagList,
|
||||
});
|
||||
this.initedApiList = jsApiList;
|
||||
this.lastConfigUrl = url;
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信jssdk 传入方法名
|
||||
*/
|
||||
async loadWxAPi(
|
||||
name: wx.ApiMethod,
|
||||
options?: ParamOptions,
|
||||
jsApiList?: wx.jsApiList,
|
||||
openTagList?: wx.openTagList
|
||||
async loadWxAPi<T extends wx.ApiMethod>(
|
||||
name: T,
|
||||
options?: Parameters<(typeof wx)[T]>[0],
|
||||
) {
|
||||
await this.init({ jsApiList, openTagList });
|
||||
await this.init({ name });
|
||||
const wxFn = wxPromisify(wx[name]);
|
||||
const result = await wxFn(options);
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,10 @@ export function composeFileUrl<ED extends EntityDict>(
|
|||
style?: string
|
||||
) {
|
||||
const { origin } = extraFile;
|
||||
if (origin === 'unknown') {
|
||||
// 扯淡的代码 by Xc 20240521
|
||||
return extraFile.extra1!;
|
||||
}
|
||||
const cos = CosDict[origin];
|
||||
return cos.composeFileUrl(extraFile, config, style);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue