package com.reactnative.rtctxim.business;

import android.content.Context;

import com.reactnative.rtctxim.business.config.BaseConfigs;
import com.tencent.imsdk.TIMLogLevel;
import com.tencent.imsdk.v2.V2TIMCallback;
import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMSDKConfig;
import com.tencent.imsdk.v2.V2TIMSDKListener;
import com.tencent.imsdk.v2.V2TIMUserFullInfo;


/**
 * @author kurisu
 */
public class InitializeBusiness {

    private static Context appContext;
    private static BaseConfigs baseConfigs;

    public static boolean init(Context context, int sdkAppID, BaseConfigs configs) {
        appContext = context;
        baseConfigs = configs;
        baseConfigs.setAppCacheDir(context.getFilesDir().getPath());
        long current = System.currentTimeMillis();

        boolean init = initIM(context, sdkAppID);
        System.out.println("IMSDK初始化耗时>>>>>>>>>>>>>>>>>>" + (System.currentTimeMillis() - current));

        return init;
    }

    private static boolean initIM(Context context, int sdkAppID) {
        V2TIMSDKConfig config = getBaseConfigs().getTIMSdkConfig();
        if (config == null) {
            config = new V2TIMSDKConfig();
            config.setLogLevel(TIMLogLevel.ERROR);
        }
        return V2TIMManager.getInstance().initSDK(context, sdkAppID, config, new V2TIMSDKListener() {
          @Override
          public void onConnecting() {
            super.onConnecting();
          }

          @Override
          public void onConnectSuccess() {
            super.onConnectSuccess();
          }

          @Override
          public void onConnectFailed(int code, String error) {
            super.onConnectFailed(code, error);
          }

          @Override
          public void onKickedOffline() {
            super.onKickedOffline();
          }

          @Override
          public void onUserSigExpired() {
            super.onUserSigExpired();
          }

          @Override
          public void onSelfInfoUpdated(V2TIMUserFullInfo info) {
            super.onSelfInfoUpdated(info);
          }
        });
    }

    public static void login(String userid, String usersig, V2TIMCallback callBack) {
      init(appContext,0,getBaseConfigs());

      V2TIMManager.getInstance().login(userid, usersig, callBack);
    }


    public static Context getAppContext() {
        return appContext;
    }

    public static BaseConfigs getBaseConfigs() {
        return baseConfigs;
    }
}
