package com.hh.lib_base.log;

import static com.hh.lib_base.Constants.LogcatValue.LINE;
import static com.hh.lib_base.Constants.LogcatValue.NET_CRASH;
import static com.hh.lib_base.Constants.LogcatValue.NET_LOGCAT;
import static com.hh.lib_base.Constants.LogcatValue.NODE;
import static com.hh.lib_base.Constants.LogcatValue.WARP;

import com.hh.lib_base.log.bean.LogcatAddRequestBean;

import org.greenrobot.eventbus.EventBus;

/**
 * Description: $
 *
 * @author xwh
 * time 2024/8/22
 **/
public class UploadLogUtils {


    /**
     *
     * @author xwh
     * Time 2024/11/28
     * Description: 发送Carsh日志
     *
    **/
    public static void sendCarshLogs(String actionName,String action,String logLine,String data) {
        sendLogs(NET_CRASH,actionName,action,logLine,data,true);
    }

    /**
     *
     * @author xwh
     * Time 2024/9/12
     * Description: Logcat 上传加保存日志
     *
    **/
    public static void sendLogs(boolean isUpload,String actionName,String action,String logLine,String data) {
        sendLogs(NET_LOGCAT,actionName,action,logLine,data,isUpload);
    }

    /**
     *
     * @author xwh
     * Time 2024/9/12
     * Description: Logcat 上传加保存日志
     *
    **/
    public static void sendLogs(String actionName,String action,String logLine,String data) {
        sendLogs(NET_LOGCAT,actionName,action,logLine,data,true);
    }

    /**
     *
     * desc:上传加保存日志
     * @author xia weihao
     * @date 2024/6/20
     * @param logType  日志类型
     * @param actionName 能力名称
     * @param action     能力
     * @param logLine    日志位置
     * @param data       日志数据
     * @param isUpload   是否在线上传
     *
     */
    public static void sendLogs(String logType,String actionName,String action,String logLine,String data,boolean isUpload) {
        try {

            //   String logLine = (new Throwable().getStackTrace())[0].toString();

            // 日志内容
            StringBuilder logContentSb = new StringBuilder();
            logContentSb.append(actionName)
                    .append(WARP)
                    .append(action)
                    .append(WARP)
                    .append(logLine)
                    .append(WARP)
                    .append(data);
            LogType saveLogType = LogType.Logcat;
            if (NET_CRASH.equals(logType)) {
                saveLogType = LogType.Crash;
            }
            // 开始保存本地日志
            AppLogUtils.saveLog(saveLogType, new StringBuilder()
                    .append(LINE)
                    .append(logLine).append(WARP)
                    .append(NODE)
                    .append(logContentSb)
                    .toString()
            );
            if(isUpload) {
                // 开始网络在线日志
                LogcatAddRequestBean logBean = new LogcatAddRequestBean();
                logBean.setLogType(logType);
                // 对应web端"日志标签"
                logBean.setLogTag(actionName);
                logBean.setLogContent(logContentSb.toString());
                EventBus.getDefault().post(logBean);
                // 日志开始----------------end
            }

            // 打印编译器输出日志
            AppLogUtils.i(logContentSb);

        } catch (Throwable t) {
            AppLogUtils.e("onCalled--t" + t);
        }
    }

}
