package com.rnlocktask;

import android.app.Activity;
import android.view.WindowManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.os.Build;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;

public class RNLockTaskModule extends ReactContextBaseJavaModule {

  private final ReactApplicationContext reactContext;

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

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

  @ReactMethod
  public  void clearDeviceOwnerApp() {
    try {
      Activity mActivity = reactContext.getCurrentActivity();
      if (mActivity != null) {
        DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) mActivity.getSystemService(Context.DEVICE_POLICY_SERVICE);
        myDevicePolicyManager.clearDeviceOwnerApp(mActivity.getPackageName());
      }
    } catch (Exception e) {
    }
  }

  @ReactMethod
  public void startLockTask() {
    try {
      Activity mActivity = reactContext.getCurrentActivity();
      if (mActivity != null) {
        DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) mActivity.getSystemService(Context.DEVICE_POLICY_SERVICE);
        ComponentName mDPM = new ComponentName(mActivity, MyAdmin.class);

        if (myDevicePolicyManager.isDeviceOwnerApp(mActivity.getPackageName())) {
          String[] packages = {mActivity.getPackageName()};
          myDevicePolicyManager.setLockTaskPackages(mDPM, packages);
          mActivity.startLockTask();
        } else {
          mActivity.startLockTask();
        }
      }
    } catch (Exception e) {
    }
  }

  @ReactMethod
  public  void stopLockTask() {
    try {
      Activity mActivity = reactContext.getCurrentActivity();
      if (mActivity != null) {
        mActivity.stopLockTask();
      }
    } catch (Exception e) {
    }
  }
}