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); }