
package com.rn.sh3h.menu;

import android.content.ComponentName;
import android.content.Intent;
import android.util.Log;

import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;

public class RNSh3hMenuModule extends ReactContextBaseJavaModule {
  private static final String PACKAGE_NAME = "packageName";
  private static final String ACTIVITY_NAME = "activityName";
  private static final String PARAMS = "params";
  private static final String ACCOUNT = "account";
  private static final String PASSWORD = "password";
  //向子程序发送用户id
  private static final String USER_ID = "userId";
  //向子程序发送用户名
  private static final String USER_NAME = "userName";
  private static final String DEPARTMENT = "department";
  private static final String DEPARTMENT_ID = "departmentId";
  private static final String ROLES = "roles";
  private static final String ACCESS_TOKEN = "accessToken";
  private static final String EXTENDED_INFO = "extendedInfo";
  public static final String SEPARATOR = "#";

  private final ReactApplicationContext reactContext;

  public RNSh3hMenuModule(ReactApplicationContext reactContext) {
    super(reactContext);
    this.reactContext = reactContext;
  }

  @Override
  public String getName() {
    return "RNSh3hMenu";
  }

  @ReactMethod
  public void getPackageIcon(String packageName, String icon, Promise p) {
    try {
      IconUtils.IconSource iconSource = IconUtils.getIcon(packageName, icon, reactContext);
      WritableMap iconSourceMap = Arguments.createMap();
      iconSourceMap.putBoolean("isSuccess",iconSource.isSuccess());
      iconSourceMap.putString("base64",iconSource.getBase64());
      p.resolve(iconSourceMap);
    }catch (Exception e){
      p.resolve(null);
    }
  }

  @ReactMethod
  public void startActivity(ReadableMap map, Promise p) {
    //{"key":"ed9ac27a-e069-45ee-9241-de10e13b4981","packageName":"com.sh3h.workmanagerlg","title":"换表工单","extendedInfo":"",
    // "userName":"手机端用户","param":"replace","order":101,"roles":"PDA水检测","icon":"data:image/jpeg;base64,GBcTYRzs",
    // "activityName":"com.sh3h.workmanagerlg.ui.list.ListActivity#replace","account":"mobileadmin","showAs":"main","password":"0000","userId":18}
    String packageName = map.getString(PACKAGE_NAME);
    String activityName = map.getString(ACTIVITY_NAME);
    if (packageName == null || activityName == null) return;
    int suffixIndex = activityName.indexOf(SEPARATOR);
    if (suffixIndex > 0) activityName = activityName.substring(0, suffixIndex);
    Log.i("abc", map.toString());
    try {
      Intent intent = new Intent(Intent.ACTION_VIEW);
      ComponentName cn = new ComponentName(packageName, activityName);
      intent.setComponent(cn);
      intent.putExtra(ACCOUNT, map.getString(ACCOUNT));
      intent.putExtra(PASSWORD, map.getString(PASSWORD));
      intent.putExtra(USER_ID, map.getInt(USER_ID));
      intent.putExtra(USER_NAME, map.getString(USER_NAME));
      intent.putExtra(DEPARTMENT, "");
      intent.putExtra(DEPARTMENT_ID, 0);
      intent.putExtra(ROLES, map.getString(ROLES));
      intent.putExtra(ACCESS_TOKEN, map.getString(ACCESS_TOKEN));
      intent.putExtra(PARAMS, map.getString(PARAMS));
      intent.putExtra(EXTENDED_INFO, map.getString(EXTENDED_INFO));
      getCurrentActivity().startActivity(intent);
      p.resolve(true);
    } catch (Exception e) {
      p.resolve(false);
      e.printStackTrace();
    }
  }
}