package expo.modules.wakelock import android.content.Context import android.os.PowerManager import expo.modules.kotlin.modules.Module import expo.modules.kotlin.modules.ModuleDefinition class ExpoWakeLockModule : Module() { private var wakeLock: PowerManager.WakeLock? = null override fun definition() = ModuleDefinition { Name("ExpoWakeLock") Function("acquire") { // val context = // appContext.reactContext ?: appContext.context val context: Context = appContext.reactContext ?: return@Function null val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager if (wakeLock == null || wakeLock?.isHeld != true) { wakeLock = pm.newWakeLock( PowerManager.PARTIAL_WAKE_LOCK, "${context.packageName}:ExpoWakeLock" ).apply { setReferenceCounted(false) acquire() } } null } Function("release") { if (wakeLock?.isHeld == true) { wakeLock?.release() } wakeLock = null null } Function("isHeld") { wakeLock?.isHeld == true } } }