package com.gh.gamecenter.setting.compose;

import android.app.Application;
import android.content.Context;
import com.gh.gamecenter.core.AppExecutor;
import com.lightgame.config.CommonDebug;

import io.sentry.Sentry;
import io.sentry.android.core.SentryAndroid;

/**
 * Created by LGT on 2016/6/15.
 * 数据收集 工具类 （TalkingData、MTA）
 */
public class DataUtils {

    private DataUtils() {
        throw new IllegalStateException("Utility class");
    }

    /**
     * 初始化各种统计工具，仅在release build（非debug）模式启用统计
     */
    public static void init(final Application context, String channel) {
        if (CommonDebug.IS_DEBUG) {
            return;
        }

        // 初始化 Sentry 约占用 90ms，这里切换到子线程初始化
        AppExecutor.getIoExecutor().execute(() -> initSentry(context, channel));
    }

    private static void initSentry(Context context, String channel) {
        SentryAndroid.init(context, options -> {
            // Sentry 疯狂报 ANR (很大一部分还是莫名奇妙的 ANR)严重影响到其它闪退日志的收集
            // 这里将它局限到只有官网渠道的包才统计 ANR
            if ("GH_206".equals(channel) || "GH_BETA".equals(channel)) {
                options.setAnrEnabled(true);
                options.setAnrTimeoutIntervalMillis(6000);
            } else {
                options.setAnrEnabled(false);
            }

            options.setDebug(BuildConfig.DEBUG);
            options.setEnableAutoSessionTracking(true);
            options.setDsn("https://6b1caf0d17c1408e8680f3f73ff80bd0@sentry.shanqu.cc/22");

            options.setBeforeSend((event, hint) -> {
                if (BuildConfig.DEBUG) {
                    return null;
                } else {
                    return event;
                }
            });
        });

        Sentry.configureScope(scope -> {
            if (com.gh.gamecenter.common.BuildConfig.BUILD_TIME != 0L) {
                scope.setTag("alias", "内测版" + BuildConfig.VERSION_NAME);
            } else {
                scope.setTag("alias", "正式版" + BuildConfig.VERSION_NAME);
                scope.setTag("channel", channel);
            }
        });
    }
}
