import { BridgePlugin } from '../bridge';

interface IShareToThirdAppParam {
  // QQ          :   QQ会话
  // QQZone      :   QQ空间  //Android 844前不支持
  // SinaWeibo   :   新浪微博
  // SMS         :   短信
  // iOSWX       :   iOS系统调微信分享（仅iOS)，与直接微信分享存在差异 since 9.0.8
  platform: 'QQ' | 'QQZone' | 'SinaWeibo' | 'SMS' | 'iOSWX'; // "QQ",
  //  image : 图片
  //  news : 链接方式（默认）
  shareType?: 'image' | 'news';
  // 分享标题 | 短信时可配置联系人
  title: string; // "标题测试",
  // 分享描述 | 短信内容文字与链接
  desc: string; // "测试的描述内容 测试的描述内容",
  // 分享链接
  link: string; // "http://m.fc.com/",
  // 分享图标/图片
  imgUrl: string; //
  // 分享的base64格式图片，优先级高于imgUrl
  imgBase64?: string;
}

interface IShareSocialMsgResult {
  // 0分享成功|1取消分享|2 操作被拒绝| 3 其他
  status: '0' | '1' | '2' | '3';
  // 分享结果描述
  desc: string;
}

export class ShareToThirdApp<K> extends BridgePlugin<IShareToThirdAppParam, K>{
  protected get ntvPluginName() {
    return '_ntv_navbar_share_to_thirdapp';
  }

  protected get availableMinVersion() {
    return '1.0.0';
  }

  protected bridgeExecChrome(): void {
    // 可针对不同运行环境实现特定的调用逻辑来MOCK，弥补平台差异性.
    throw new Error('ShareToThirdApp() 未针对当前环境实现');
  }
}

/**
 * 第三方社交平台分享，除微信
 */
export const shareToThirdapp = (param: IShareToThirdAppParam) => {
  if (!param.shareType) {
    param.shareType = 'news';
  }
  return new ShareToThirdApp<IShareSocialMsgResult>(param).invokeOnce().then(result => {
    return result.cbData;
  });
}