package org.lovebing.reactnative.baidumap.battery;

import static org.lovebing.reactnative.baidumap.battery.BatteryOptimizationHelper.isBatteryOptimizationAvailable;
import static org.lovebing.reactnative.baidumap.battery.BatteryOptimizationHelper.isIgnoringBatteryOptimizations;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Build;

public class BatteryOptimizationManager {

    public interface BatteryOptimizationCallback {
        void onOptimizationStatus(boolean isIgnoring, boolean canRequest);
        void onUserActionRequired();
    }

    public static void checkBatteryOptimization(Context context, BatteryOptimizationCallback callback) {
        boolean isIgnoring = isIgnoringBatteryOptimizations(context);
        boolean canRequest = isBatteryOptimizationAvailable(context);

        // 如果已经在忽略电池优化列表，或者无法请求，直接返回状态
        if (isIgnoring || !canRequest) {
            callback.onOptimizationStatus(isIgnoring, canRequest);
            return;
        }

        // 需要用户操作
        callback.onUserActionRequired();
    }

    public static void showBatteryOptimizationDialog(final Activity activity, String message) {
        new AlertDialog.Builder(activity)
                .setTitle("电池优化设置")
                .setMessage(message)
                .setPositiveButton("去设置", (dialog, which) -> {
                    // 先尝试直接请求忽略
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        BatteryOptimizationHelper.requestIgnoreBatteryOptimizations(activity, 1001);
                    }
                })
                .setNegativeButton("取消", null)
                .show();
    }
}