package com.tagmae.tsgame_erwang;

import android.app.Activity;
import android.content.Context;
import android.widget.Toast;

import com.google.gson.Gson;
import com.tsgame.tsgame_niuniu.simcpux.bean.sharetypeBean;
import com.tsgame.tsgame_niuniu.util.WeChatIntentShareUtil;
import com.tsgame.tsgame_niuniu.util.EnvironmentUtil;

/**
 * 微信分享辅助类（已脱离微信SDK重构版）
 */
public class WeChatShareHelper {

    /**
     * 微信分享（默认无Canvas）
     *
     * @param context  上下文
     * @param jsonData 分享数据JSON字符串
     */
    public static void doWeChatShare(Context context, String jsonData) {
        doWeChatShare(context, jsonData, false);
    }

    /**
     * 微信分享（支持Canvas截图）
     *
     * @param context   上下文
     * @param jsonData  分享数据JSON字符串
     * @param useCanvas 是否使用Canvas截图（仅对图片分享type=2有效）
     */
    public static void doWeChatShare(Context context, String jsonData, boolean useCanvas) {
        try {
            // 解析JSON数据
            Gson gson = new Gson();
            sharetypeBean bean = gson.fromJson(jsonData, sharetypeBean.class);

            // 初始化微信纯Intent分享工具
            WeChatIntentShareUtil weChatIntentShareUtil = WeChatIntentShareUtil.getInstance(context);

            // 检查微信是否已安装
            if (!weChatIntentShareUtil.isWeChatInstalled()) {
                Toast.makeText(context, "微信未安装，无法进行微信分享", Toast.LENGTH_SHORT).show();
                return;
            }

            // 处理分享类型字段
            if (bean.getType() == null) {
                bean.setType("");
            }
            if (bean.getSharefriend() == null) {
                bean.setSharefriend("");
            }
            if (bean.getSharetype() == null) {
                bean.setSharetype("");
            }

            // 确定分享场景（0:好友, 1:朋友圈）
            int scene = bean.getSharefriend().equals("1") ? WeChatIntentShareUtil.SCENE_FRIENDS
                    : WeChatIntentShareUtil.SCENE_MOMENTS;

            // 设置分享回调（区分朋友圈和好友场景）
            weChatIntentShareUtil.setShareCallback(new WeChatIntentShareUtil.WeChatShareCallback() {
                @Override
                public void onSuccess() {
                    
                    // 如果仅需要通知前端朋友圈分享成功，可以在此处加 if(scene == WeChatIntentShareUtil.SCENE_MOMENTS) 判断
                    if (scene == WeChatIntentShareUtil.SCENE_MOMENTS) {
                        try {
                            org.json.JSONObject json = new org.json.JSONObject();
                            json.put("success", 2); // 2表示成功 1表示失败
                            json.put("type", 2);

                            System.out.println("---分享成功回调JS: " + json.toString());
                            ((Activity) context).runOnUiThread(() -> {
                                if (NewwebviewActivity.x5webview != null) {
                                    NewwebviewActivity.x5webview.callHandler("sharesuccess", json.toString(), new com.tagmae.jsbridge.CallBackFunction() {
                                        @Override
                                        public void onCallBack(String data) {
                                            //这里也是可以进行js回传的
                                        }
                                    });
                                }
                            });
                        } catch (org.json.JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }

                @Override
                public void onError(int code, String message) {
                    
                }

                @Override
                public void onCancel() {
                    
                }
            });

            // 系统环境分流 (鸿蒙 vs 安卓)
            if (EnvironmentUtil.isHarmonyOS()) {
                executeHarmonyWeChatShare(context, weChatIntentShareUtil, bean, scene);
            } else {
                executeAndroidWeChatShare(context, weChatIntentShareUtil, bean, scene);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 执行安卓环境下的微信分享
     */
    private static void executeAndroidWeChatShare(Context context, WeChatIntentShareUtil util, sharetypeBean bean,
            int scene) {
        if (bean.getType().equals("2") || bean.getType().equals("3")) {
            if (scene == WeChatIntentShareUtil.SCENE_MOMENTS) {
                // 朋友圈分享：测试网络图片分享
                String testImageUrl = "https://tsgames.daoqi88.cn/image_download/download_cgmj.png";
                util.shareNetworkImage((Activity) context, testImageUrl, scene);
            } else {
                // 好友分享：原有的 Canvas 截图逻辑
                GlobalWebViewHelper.getCanvasBase64(new WebViewScreenshotUtil.CanvasToBase64Callback() {
                    @Override
                    public void onSuccess(String canvasBase64) {
                        // canvasBase64转为Bitmap
                        android.graphics.Bitmap bitmap = com.tagmae.tsgame_erwang.utils.Base64ImageUtil
                                .base64ToBitmap(canvasBase64);
                        util.shareBitmap((Activity) context, bitmap, scene);
                        if (bitmap != null) {
                            bitmap.recycle();
                        }
                    }

                    @Override
                    public void onError(String error) {
                        // 截图失败处理
                    }
                });
            }
        } else {
            // 网页或文本分享
            util.shareWebPage(
                    (Activity) context,
                    bean.getWebpageUrl(),
                    bean.getTitle(),
                    bean.getDescription(),
                    scene);
        }
    }

    /**
     * 执行鸿蒙环境下的微信分享
     */
    private static void executeHarmonyWeChatShare(Context context, WeChatIntentShareUtil util, sharetypeBean bean,
            int scene) {
        // 由于已经使用了Intent分享工具，在工具内部也做了一定的鸿蒙兼容
        // 如果鸿蒙需要特殊的URI桥接、或者特殊的应用跳转方式，可以在此处定制鸿蒙代码
        // 目前暂时退化到通用Android方法或保持一致
        executeAndroidWeChatShare(context, util, bean, scene);
    }
}