UNPKG

para-bridge-demo

Version:

a bridge api for js-ios/andriod rest

59 lines (52 loc) 1.82 kB
import { BridgePlugin } from '../bridge'; type ShareTypes = 'pengyouquan' | 'haoyou' | 'qq' | 'qqzone' | 'sinaweibo' | 'copylink'; interface IShareThirdAppPopup { // 分享的标题信息 shareText: string; // 分享的描述信息 shareDesc: string; // 分享的跳转链接 shareUrl: string; // 分享展示的图标;大小建议为128k内 // 1、图标 比例1:1 // 2、小程序分享图标 比例5:4 imgUrl: string; // 当前分享的媒体选择项, 不传递,则显示所有支持的媒体 shareTypes?: ShareTypes[]; } interface IShareSocialPopupResult { // 0分享成功, 1取消分享, 2操作被拒绝, 3 其他 status: '0' | '1' | '2' | '3'; // 分享结果描述 desc: string; // 当前用户分享操作的分享类型 shareType: string; } export class ShareThirdAppPopup<K> extends BridgePlugin<IShareThirdAppPopup, K>{ protected get ntvPluginName() { return '_ntv_navbar_share_thirdapp_popup'; } protected get availableMinVersion() { return '1.0.0'; } protected bridgeExecChrome(pluginName?: string | undefined, ): void { // 可针对不同运行环境实现特定的调用逻辑来MOCK,弥补平台差异性. throw new Error('ShareThirdAppPopup() 未针对当前环境实现'); } } /** * NATIVE底部POPUP 弹出多个分享的弹窗 */ export const shareWithPopup = (param: IShareThirdAppPopup) => { const types = param.shareTypes || []; const shareTypes: ShareTypes[] = types.length ? types : ['pengyouquan', 'haoyou', 'qq', 'qqzone', 'sinaweibo', 'copylink']; return new ShareThirdAppPopup<IShareSocialPopupResult>({ imgUrl: param.imgUrl, shareUrl: param.shareUrl, shareText: param.shareText, shareDesc: param.shareDesc, shareTypes, }).invokeOnce().then(result => { return result.cbData; }) }