

import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
import { AuthUserInfo } from '../../kit';

const shareModule = NativeModules.UmShare

const eventEmitter = new NativeEventEmitter(shareModule);

/**
*  设置 universalLink
*  微信和QQ完整版会校验合法的universalLink，不设置会在初始化平台失败
*  @param wx：微信的link   
*  @param qq：QQ的link
*/
const initUniversalLink = (wx?: string, qq?: string) => {
    if (Platform.OS == 'ios') {
        shareModule.initUniversalLink(wx, qq)
    }
}



/**
 *  判断 平台是否安装
 * @param platformType 平台类型
 */
const isInstall = (platformType: PlatformType) => {
    return shareModule.isInstall(platformType) as Promise<Boolean>
}



/**
*  初始化分享平台 微信/QQ/新浪 
*  @param data 初始化数据 包含 type:类型  appkey：app的key  appSecret：秘钥  redirectURL：重定向url
*/
const initPlaform = (data: { type: PlatformType, appkey: string, appSecret?: string, redirectURL?: string }) => {
    shareModule.initPlaform(data)
}

/**
 *  第三方平台 授权
 *  @param platformType 平台类型
 */
const getUserInfoForPlatform = (platformType: PlatformType) => {
    return shareModule.getUserInfoForPlatform(platformType) as Promise<AuthUserInfo>
}


/**
 *  第三方平台 取消授权
 *  @param platformType 平台类型
 */
const cancelAuthWithPlatform = (platformType: PlatformType) => {
    return shareModule.cancelAuthWithPlatform(platformType) as Promise<string>
}


/**
 *  分享文本
 * @param data {platformType:平台类型，text:文本内容}
 */
const shareText = (data: { platformType: PlatformType, text: string }) => {
    return shareModule.shareText(data) as Promise<any>
}



/**
 *  分享图片
 * @param data {platformType:平台类型，image:图片地址}
 */
const shareImage = (data: { platformType: PlatformType, image: string }) => {
    return shareModule.shareImage(data) as Promise<any>
}


/**
 *  分享网页
 * @param data {platformType:平台类型，title:标题 ， desc:描述 , icon:图标 ， webpageUrl：地址}
 */
const shareWebPage = (data: { platformType: PlatformType, title: string, desc: string, icon: string, webpageUrl: string }) => {
    return shareModule.shareWebPage(data) as Promise<any>
}


/**
 *  分享音乐
 * @param data {platformType:平台类型，title:标题 ， desc:描述 , icon:图标 ， musicUrl:音乐H5地址  musicDataUrl：音乐视频流地址}
 */
const shareMusic = (data: { platformType: PlatformType, title: string, desc: string, icon: string, musicUrl: string, musicDataUrl: string }) => {
    return shareModule.shareMusic(data) as Promise<any>
}

/**
 *  分享视频
 * @param data {platformType:平台类型，title:标题 ， desc:描述 , icon:图标 ， videoUrl:视频H5地址  videoStreamUrl:视频数据流地址}
 */
const shareVideo = (data: { platformType: PlatformType, title: string, desc: string, icon: string, videoUrl: string, videoStreamUrl: string }) => {
    return shareModule.shareVideo(data) as Promise<any>
}


/**
 *  分享小程序
 * @param data {platformType:平台类型（0：正式、1：开发、2：体验），title:标题 ， desc:描述 , icon:缩略图 ， userName:小程序原始id 如：gh_3ac2059ac66f  path:小程序页面的路径 ,hdImage:小程序新版本的预览图}
 */
const shareMiniProgram = (data: { platformType: PlatformType, title: string, desc: string, icon: string, userName: string, path: string, hdImage: string }) => {
    return shareModule.shareMiniProgram(data) as Promise<any>
}




enum UShareWXMiniProgramType {
    Release = 0,       //**< 正式版  */
    Test = 1,        //**< 开发版  */
    Preview = 2,         //**< 体验版  */
}

enum PlatformType {
    UMSocialPlatformType_UnKnown = -2,
    //预定义的平台
    UMSocialPlatformType_Predefine_Begin = -1,
    UMSocialPlatformType_Sina = 0, //新浪
    UMSocialPlatformType_WechatSession = 1, //微信聊天
    UMSocialPlatformType_WechatTimeLine = 2,//微信朋友圈
    UMSocialPlatformType_WechatFavorite = 3,//微信收藏
    UMSocialPlatformType_QQ = 4,//QQ聊天页面
    UMSocialPlatformType_Qzone = 5,//qq空间
    UMSocialPlatformType_TencentWb = 6,//腾讯微博
    UMSocialPlatformType_APSession = 7,//支付宝聊天页面
    UMSocialPlatformType_YixinSession = 8,//易信聊天页面
    UMSocialPlatformType_YixinTimeLine = 9,//易信朋友圈
    UMSocialPlatformType_YixinFavorite = 10,//易信收藏
    UMSocialPlatformType_LaiWangSession = 11,//点点虫（原来往）聊天页面
    UMSocialPlatformType_LaiWangTimeLine = 12,//点点虫动态
    UMSocialPlatformType_Sms = 13,//短信
    UMSocialPlatformType_Email = 14,//邮件
    UMSocialPlatformType_Renren = 15,//人人
    UMSocialPlatformType_Facebook = 16,//Facebook
    UMSocialPlatformType_Twitter = 17,//Twitter
    UMSocialPlatformType_Douban = 18,//豆瓣
    UMSocialPlatformType_KakaoTalk = 19,//KakaoTalk
    UMSocialPlatformType_Pinterest = 20,//Pinteres
    UMSocialPlatformType_Line = 21,//Line
    UMSocialPlatformType_Linkedin = 22,//领英=
    UMSocialPlatformType_Flickr = 23,//Flickr
    UMSocialPlatformType_Tumblr = 24,//Tumblr
    UMSocialPlatformType_Instagram = 25,//Instagram
    UMSocialPlatformType_Whatsapp = 26,//Whatsapp
    UMSocialPlatformType_DingDing = 27,//钉钉
    UMSocialPlatformType_YouDaoNote = 28,//有道云笔记
    UMSocialPlatformType_EverNote = 29,//印象笔记
    UMSocialPlatformType_GooglePlus = 30,//Google+
    UMSocialPlatformType_Pocket = 31,//Pocket
    UMSocialPlatformType_DropBox = 32,//dropbox
    UMSocialPlatformType_VKontakte = 33,//vkontakte
    UMSocialPlatformType_FaceBookMessenger = 34,//FaceBookMessenger
    UMSocialPlatformType_Tim = 35,// Tencent TIM
    UMSocialPlatformType_Predefine_end = 999,
    //用户自定义的平台
    UMSocialPlatformType_UserDefine_Begin = 1000,
    UMSocialPlatformType_UserDefine_End = 2000,
}

export default { initUniversalLink, initPlaform, PlatformType, UShareWXMiniProgramType, cancelAuthWithPlatform, isInstall, getUserInfoForPlatform, shareText, shareImage, shareWebPage, shareMusic, shareVideo, shareMiniProgram }