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