package com.amirarcane.sample;

import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v4.util.Pair;

import java.util.HashMap;

/**
 * Created by Arcane on 7/24/2017.
 */

public class Util {

    private static final Integer PERMISSION_REQUEST_CODE = 9999;
    private static final String TAG = Util.class.getSimpleName();
    private static Integer permissionStringRes;
    private static HashMap<Integer, Pair<Pair<Activity, OnPermissionCallback>, String[]>> permissionMap = new HashMap<>();

    public static void checkPermission(Activity activity, String[] permissions,
                                       OnPermissionCallback permissionsResultCallback) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            boolean req = false;

            for (int i = 0; i < permissions.length; i++) {
                if (activity.checkSelfPermission(permissions[i]) == PackageManager.PERMISSION_DENIED) {
                    req = true;
                }
            }
            if (!req)
                permissionsResultCallback.onPermissionGranted();
            else {
                permissionMap.clear();

                permissionStringRes = R.string.pleaseEnablePermission;
                permissionMap.put(PERMISSION_REQUEST_CODE, new Pair<>(new Pair<>(activity,
                        permissionsResultCallback), permissions));

                activity.requestPermissions(permissions, PERMISSION_REQUEST_CODE);

            }
        } else {
            permissionsResultCallback.onPermissionGranted();
        }
    }

    @SuppressWarnings("MissingPermission")
    public interface OnPermissionCallback {
        void onPermissionGranted();

        void onPermissionDenied();
    }

}