para-bridge-demo
Version:
a bridge api for js-ios/andriod rest
59 lines (52 loc) • 1.82 kB
text/typescript
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;
})
}