package com.jishisongfu.duobibi.util

import android.content.ComponentName
import android.content.Context
import android.provider.Settings
import android.text.TextUtils
import com.jishisongfu.duobibi.service.PriceBotAccessibilityService

object PermissionUtil {

    fun overlayGranted(ctx: Context): Boolean = Settings.canDrawOverlays(ctx)

    /**
     * 通过 [Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES] 字符串是否包含本服务的 ComponentName
     * 来判定无障碍是否开启。这是 Android 上检测无障碍授权的标准做法。
     */
    fun accessibilityGranted(ctx: Context): Boolean {
        val expected = ComponentName(ctx, PriceBotAccessibilityService::class.java).flattenToString()
        val enabled = Settings.Secure.getString(
            ctx.contentResolver,
            Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
        ) ?: return false
        val splitter = TextUtils.SimpleStringSplitter(':')
        splitter.setString(enabled)
        while (splitter.hasNext()) {
            if (splitter.next().equals(expected, ignoreCase = true)) return true
        }
        return false
    }

    /**
     * 自启动权限是厂商私有逻辑,无法通过统一 API 查询,这里只能保守地认为"未确认"。
     * 占坑期不阻塞用户使用,只在设置页给出"去开启"按钮。
     */
    fun autoStartGranted(@Suppress("UNUSED_PARAMETER") ctx: Context): Boolean = false

    fun allGranted(ctx: Context): Boolean =
        accessibilityGranted(ctx) && overlayGranted(ctx)
}
