package com.cheng.blzb.manager

import android.app.Activity
import android.content.Context
import android.content.Intent
import android.text.TextUtils
import androidx.core.content.FileProvider
import androidx.fragment.app.FragmentActivity
import com.cheng.blzb.R
import com.cheng.blzb.bean.WxShareEntity
import com.cheng.blzb.common.Constants
import com.example.base.extensions.toast
import com.umeng.socialize.ShareAction
import com.umeng.socialize.UMShareListener
import com.umeng.socialize.bean.SHARE_MEDIA
import com.umeng.socialize.media.UMImage
import com.umeng.socialize.media.UMVideo
import com.umeng.socialize.media.UMWeb
import java.io.File


object ShareManager {

    /**
     * 分享文件
     */
    fun shareFile(context: Context, file: File) {
        val uri = FileProvider.getUriForFile(context, Constants.AppFilter, file)
        val intent = Intent(Intent.ACTION_SEND)
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        intent.putExtra(Intent.EXTRA_STREAM, uri)
        intent.setType("application/*") //分享文件类型
        context.startActivity(Intent.createChooser(intent, "分享"))
    }

    /**
     * 分享
     */
    fun shareUrl(
        activity: FragmentActivity,
        shareMedia: SHARE_MEDIA,
        shareBean: WxShareEntity,
        clickFun: () -> Unit,
    ) {
        if (!TextUtils.isEmpty(shareBean.link)) {
            val web = UMWeb(shareBean.link)
            web.title = shareBean.title
            web.setThumb(UMImage(activity, R.mipmap.ic_launcher_icon))
            web.description = shareBean.content

            ShareAction(activity).withMedia(web).setPlatform(shareMedia)
                .setCallback(object : UMShareListener {
                    /**
                     *  分享成功的回调
                     * @param platform 平台类型
                     */
                    override fun onResult(platform: SHARE_MEDIA) {
                        clickFun.invoke()
                    }

                    /**
                     *  分享取消的回调
                     * @param platform 平台类型
                     */
                    override fun onCancel(platform: SHARE_MEDIA) {
                        toast("取消分享")
                    }

                    /**
                     *  分享失败的回调
                     * @param platform 平台类型
                     * @param t 错误原因
                     */
                    override fun onError(platform: SHARE_MEDIA, t: Throwable) {
                        toast("分享失败，请重试")
                    }

                    /**
                     *  分享开始的回调
                     * @param platform 平台类型
                     */
                    override fun onStart(platform: SHARE_MEDIA) {}

                }).share()

        }
    }

    fun shareImageOnWeChat(activity: Activity, image: UMImage) {
        image.title = ""
        image.description = ""
        image.setThumb(image)
        ShareAction(activity).withMedia(image).withText("")
            .setPlatform(SHARE_MEDIA.WEIXIN)
            .setCallback(object : UMShareListener {
                /**
                 *  分享成功的回调
                 * @param platform 平台类型
                 */
                override fun onResult(platform: SHARE_MEDIA) {
                    toast("分享成功")
                }

                /**
                 *  分享取消的回调
                 * @param platform 平台类型
                 */
                override fun onCancel(platform: SHARE_MEDIA) {
                    toast("取消分享")
                }

                /**
                 *  分享失败的回调
                 * @param platform 平台类型
                 * @param t 错误原因
                 */
                override fun onError(platform: SHARE_MEDIA, t: Throwable) {
                    toast("分享失败，请重试")
                }

                /**
                 *  分享开始的回调
                 * @param platform 平台类型
                 */
                override fun onStart(platform: SHARE_MEDIA) {}

            }).share()
    }

    fun shareFileOnWeChat(activity: Activity, file: File) {
        val video = UMVideo(file)
        ShareAction(activity).withMedia(video)
            .setPlatform(SHARE_MEDIA.WEIXIN)
            .setCallback(object : UMShareListener {
                /**
                 *  分享成功的回调
                 * @param platform 平台类型
                 */
                override fun onResult(platform: SHARE_MEDIA) {
                    toast("分享成功")
                }

                /**
                 *  分享取消的回调
                 * @param platform 平台类型
                 */
                override fun onCancel(platform: SHARE_MEDIA) {
                    toast("取消分享")
                }

                /**
                 *  分享失败的回调
                 * @param platform 平台类型
                 * @param t 错误原因
                 */
                override fun onError(platform: SHARE_MEDIA, t: Throwable) {
                    toast("分享失败，请重试")
                }

                /**
                 *  分享开始的回调
                 * @param platform 平台类型
                 */
                override fun onStart(platform: SHARE_MEDIA) {}

            }).share()
    }
}