package br.com.FBRegistroPro;

import android.app.Activity;
import android.content.Context;
import android.view.WindowManager;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

public class ScreenCapturePlugin extends CordovaPlugin {
    static final String PREFS_NAME = "registropro_screen_capture";
    static final String PREFS_KEY_ALLOWED = "allowed";

    public static void applySavedPolicy(Activity activity) {
        if (activity == null) {
            return;
        }
        applyPolicy(activity, true);
    }

    static void applyPolicy(Activity activity, boolean allowed) {
        if (activity == null) {
            return;
        }
        // Temporário: nunca aplica FLAG_SECURE (print/gravação liberados).
        activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
    }

    static void persistPolicy(Context context, boolean allowed) {
        if (context == null) {
            return;
        }
        context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
                .edit()
                .putBoolean(PREFS_KEY_ALLOWED, allowed)
                .apply();
    }

    @Override
    public void pluginInitialize() {
        super.pluginInitialize();
        applySavedPolicy(cordova.getActivity());
    }

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (!"setAllowed".equals(action)) {
            return false;
        }
        cordova.getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                persistPolicy(cordova.getContext(), true);
                applyPolicy(cordova.getActivity(), true);
                callbackContext.success();
            }
        });
        return true;
    }
}
