f92e791464
新增 HostBridge 通用宿主能力服务与测试 迁移登录支付分享订阅入口到通用 HostBridge API 保留微信小程序旧接口兼容包装 补充宿主壳协议文档与项目记忆
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import { setHostShareTarget } from './host-bridge/hostBridge';
|
|
|
|
const MESSAGE_TYPE = 'genarrative:share-target';
|
|
|
|
export type WechatMiniProgramShareTarget = {
|
|
targetPath: '/works/detail';
|
|
work: string;
|
|
title?: string | null;
|
|
};
|
|
|
|
function normalizeShareTarget(
|
|
target: WechatMiniProgramShareTarget | null | undefined,
|
|
) {
|
|
const work = target?.work?.trim() ?? '';
|
|
if (!work) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
targetPath: '/works/detail' as const,
|
|
work,
|
|
title: target?.title?.trim() || undefined,
|
|
};
|
|
}
|
|
|
|
export function buildWechatMiniProgramShareTargetMessage(
|
|
target: WechatMiniProgramShareTarget | null | undefined,
|
|
) {
|
|
const normalizedTarget = normalizeShareTarget(target);
|
|
return normalizedTarget
|
|
? {
|
|
type: MESSAGE_TYPE,
|
|
payload: normalizedTarget,
|
|
}
|
|
: null;
|
|
}
|
|
|
|
export function postWechatMiniProgramShareTarget(
|
|
target: WechatMiniProgramShareTarget | null | undefined,
|
|
) {
|
|
const message = buildWechatMiniProgramShareTargetMessage(target);
|
|
if (!message) {
|
|
return false;
|
|
}
|
|
|
|
// 中文注释:微信 web-view 会在分享等时机把 postMessage 数据交给原生页,
|
|
// 小程序页据此把右上角系统分享指向当前推荐作品。
|
|
return setHostShareTarget(message);
|
|
}
|