expo-battery 7.7.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,17 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 8.0.0 — 2024-04-18
14
+
15
+ ### 💡 Others
16
+
17
+ - drop unused web `name` property. ([#27437](https://github.com/expo/expo/pull/27437) by [@EvanBacon](https://github.com/EvanBacon))
18
+ - Removed deprecated backward compatible Gradle settings. ([#28083](https://github.com/expo/expo/pull/28083) by [@kudo](https://github.com/kudo))
19
+
20
+ ## 7.7.2 - 2023-12-19
21
+
22
+ _This version does not introduce any user-facing changes._
23
+
13
24
  ## 7.7.1 — 2023-12-12
14
25
 
15
26
  _This version does not introduce any user-facing changes._
@@ -1,113 +1,26 @@
1
1
  apply plugin: 'com.android.library'
2
- apply plugin: 'kotlin-android'
3
- apply plugin: 'maven-publish'
4
2
 
5
3
  group = 'host.exp.exponent'
6
- version = '7.7.1'
4
+ version = '8.0.0'
7
5
 
8
6
  def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
9
- if (expoModulesCorePlugin.exists()) {
10
- apply from: expoModulesCorePlugin
11
- applyKotlinExpoModulesCorePlugin()
12
- // Remove this check, but keep the contents after SDK49 support is dropped
13
- if (safeExtGet("expoProvidesDefaultConfig", false)) {
14
- useExpoPublishing()
15
- useCoreDependencies()
16
- }
17
- }
18
-
19
- buildscript {
20
- // Simple helper that allows the root project to override versions declared by this library.
21
- ext.safeExtGet = { prop, fallback ->
22
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
23
- }
24
-
25
- // Ensures backward compatibility
26
- ext.getKotlinVersion = {
27
- if (ext.has("kotlinVersion")) {
28
- ext.kotlinVersion()
29
- } else {
30
- ext.safeExtGet("kotlinVersion", "1.8.10")
31
- }
32
- }
33
-
34
- repositories {
35
- mavenCentral()
36
- }
37
-
38
- dependencies {
39
- classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${getKotlinVersion()}")
40
- }
41
- }
42
-
43
- // Remove this if and it's contents, when support for SDK49 is dropped
44
- if (!safeExtGet("expoProvidesDefaultConfig", false)) {
45
- afterEvaluate {
46
- publishing {
47
- publications {
48
- release(MavenPublication) {
49
- from components.release
50
- }
51
- }
52
- repositories {
53
- maven {
54
- url = mavenLocal().url
55
- }
56
- }
57
- }
58
- }
59
- }
7
+ apply from: expoModulesCorePlugin
8
+ applyKotlinExpoModulesCorePlugin()
9
+ useCoreDependencies()
10
+ useDefaultAndroidSdkVersions()
11
+ useExpoPublishing()
60
12
 
61
13
  android {
62
- // Remove this if and it's contents, when support for SDK49 is dropped
63
- if (!safeExtGet("expoProvidesDefaultConfig", false)) {
64
- compileSdkVersion safeExtGet("compileSdkVersion", 34)
65
-
66
- defaultConfig {
67
- minSdkVersion safeExtGet("minSdkVersion", 23)
68
- targetSdkVersion safeExtGet("targetSdkVersion", 34)
69
- }
70
-
71
- publishing {
72
- singleVariant("release") {
73
- withSourcesJar()
74
- }
75
- }
76
-
77
- lintOptions {
78
- abortOnError false
79
- }
80
- }
81
-
82
- def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION
83
- if (agpVersion.tokenize('.')[0].toInteger() < 8) {
84
- compileOptions {
85
- sourceCompatibility JavaVersion.VERSION_11
86
- targetCompatibility JavaVersion.VERSION_11
87
- }
88
-
89
- kotlinOptions {
90
- jvmTarget = JavaVersion.VERSION_11.majorVersion
91
- }
92
- }
93
-
94
14
  namespace "expo.modules.battery"
95
15
  defaultConfig {
96
16
  versionCode 11
97
- versionName '7.7.1'
17
+ versionName '8.0.0'
98
18
  }
99
19
  }
100
20
 
101
21
  dependencies {
102
- // Remove this if and it's contents, when support for SDK49 is dropped
103
- if (!safeExtGet("expoProvidesDefaultConfig", false)) {
104
- implementation project(':expo-modules-core')
105
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}"
106
- }
107
-
108
22
  api "androidx.legacy:legacy-support-v4:1.0.0"
109
23
 
110
-
111
24
  if (project.findProject(':expo-modules-test-core')) {
112
25
  testImplementation project(':expo-modules-test-core')
113
26
  }
@@ -19,7 +19,10 @@ internal const val POWER_MODE_EVENT_NAME = "Expo.powerModeDidChange"
19
19
 
20
20
  class BatteryModule : Module() {
21
21
  enum class BatteryState(val value: Int) : Enumerable {
22
- UNKNOWN(0), UNPLUGGED(1), CHARGING(2), FULL(3);
22
+ UNKNOWN(0),
23
+ UNPLUGGED(1),
24
+ CHARGING(2),
25
+ FULL(3)
23
26
  }
24
27
 
25
28
  override fun definition() = ModuleDefinition {
@@ -49,11 +52,11 @@ class BatteryModule : Module() {
49
52
  unregisterBroadcastReceivers(context)
50
53
  }
51
54
 
52
- AsyncFunction("getBatteryLevelAsync") {
55
+ AsyncFunction<Float>("getBatteryLevelAsync") {
53
56
  val batteryIntent = context.applicationContext.registerReceiver(
54
57
  null,
55
58
  IntentFilter(Intent.ACTION_BATTERY_CHANGED)
56
- ) ?: return@AsyncFunction -1
59
+ ) ?: return@AsyncFunction -1f
57
60
 
58
61
  val level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
59
62
  val scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
@@ -66,7 +69,7 @@ class BatteryModule : Module() {
66
69
  return@AsyncFunction batteryLevel
67
70
  }
68
71
 
69
- AsyncFunction("getBatteryStateAsync") {
72
+ AsyncFunction<Int>("getBatteryStateAsync") {
70
73
  val batteryIntent = context.applicationContext.registerReceiver(
71
74
  null,
72
75
  IntentFilter(Intent.ACTION_BATTERY_CHANGED)
@@ -76,11 +79,11 @@ class BatteryModule : Module() {
76
79
  return@AsyncFunction batteryStatusNativeToJS(status).value
77
80
  }
78
81
 
79
- AsyncFunction("isLowPowerModeEnabledAsync") {
82
+ AsyncFunction<Boolean>("isLowPowerModeEnabledAsync") {
80
83
  isLowPowerModeEnabled
81
84
  }
82
85
 
83
- AsyncFunction("isBatteryOptimizationEnabledAsync") {
86
+ AsyncFunction<Boolean>("isBatteryOptimizationEnabledAsync") {
84
87
  val packageName = context.applicationContext.packageName
85
88
  val powerManager = context.applicationContext.getSystemService(Context.POWER_SERVICE) as? PowerManager
86
89
  return@AsyncFunction powerManager?.isIgnoringBatteryOptimizations(packageName) == false
@@ -1 +1 @@
1
- {"version":3,"file":"Battery.js","sourceRoot":"","sources":["../src/Battery.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter, Subscription } from 'expo-modules-core';\nimport { useEffect, useState } from 'react';\n\nimport {\n BatteryLevelEvent,\n BatteryState,\n BatteryStateEvent,\n PowerModeEvent,\n PowerState,\n} from './Battery.types';\nimport ExpoBattery from './ExpoBattery';\n\nconst BatteryEventEmitter = new EventEmitter(ExpoBattery);\n\n// @needsAudit\n/**\n * Resolves with whether the battery API is available on the current device. The value of this\n * property is `true` on Android and physical iOS devices and `false` on iOS simulators. On web,\n * it depends on whether the browser supports the web battery API.\n */\nexport async function isAvailableAsync(): Promise<boolean> {\n return Promise.resolve((ExpoBattery && ExpoBattery.isSupported) || false);\n}\n\n// @needsAudit\n/**\n * Gets the battery level of the device as a number between `0` and `1`, inclusive. If the device\n * does not support retrieving the battery level, this method returns `-1`. On web, this method\n * always returns `1`.\n * @return A `Promise` that fulfils with a number between `0` and `1` representing the battery level,\n * or `-1` if the device does not provide it.\n * @example\n * ```ts\n * await Battery.getBatteryLevelAsync();\n * // 0.759999\n * ```\n */\nexport async function getBatteryLevelAsync(): Promise<number> {\n if (!ExpoBattery.getBatteryLevelAsync) {\n return -1;\n }\n return await ExpoBattery.getBatteryLevelAsync();\n}\n\n// @needsAudit\n/**\n * Tells the battery's current state. On web, this always returns `BatteryState.UNKNOWN`.\n * @return Returns a `Promise` which fulfills with a [`Battery.BatteryState`](#batterystate) enum\n * value for whether the device is any of the four states.\n * @example\n * ```ts\n * await Battery.getBatteryStateAsync();\n * // BatteryState.CHARGING\n * ```\n */\nexport async function getBatteryStateAsync(): Promise<BatteryState> {\n if (!ExpoBattery.getBatteryStateAsync) {\n return BatteryState.UNKNOWN;\n }\n return await ExpoBattery.getBatteryStateAsync();\n}\n\n// @needsAudit\n/**\n * Gets the current status of Power Saver mode on Android and Low Power mode on iOS. If a platform\n * doesn't support Low Power mode reporting (like web, older Android devices), the reported low-power\n * state is always `false`, even if the device is actually in low-power mode.\n * @return Returns a `Promise` which fulfills with a `boolean` value of either `true` or `false`,\n * indicating whether low power mode is enabled or disabled.\n * @example\n * Power Saver Mode (Android) or Low Power Mode (iOS) are enabled.\n * ```ts\n * await Battery.isLowPowerModeEnabledAsync();\n * // true\n * ```\n */\nexport async function isLowPowerModeEnabledAsync(): Promise<boolean> {\n if (!ExpoBattery.isLowPowerModeEnabledAsync) {\n return false;\n }\n return await ExpoBattery.isLowPowerModeEnabledAsync();\n}\n\n// @needsAudit\n/**\n * Checks whether battery optimization is enabled for your application.\n * If battery optimization is enabled for your app, background tasks might be affected\n * when your app goes into doze mode state. (only on Android 6.0 or later)\n * @return Returns a `Promise` which fulfills with a `boolean` value of either `true` or `false`,\n * indicating whether the battery optimization is enabled or disabled, respectively. (Android only)\n * @example\n * ```ts\n * await Battery.isBatteryOptimizationEnabledAsync();\n * // true\n * ```\n */\nexport async function isBatteryOptimizationEnabledAsync(): Promise<boolean> {\n if (!ExpoBattery.isBatteryOptimizationEnabledAsync) {\n return false;\n }\n return await ExpoBattery.isBatteryOptimizationEnabledAsync();\n}\n\n/**\n * Gets the power state of the device including the battery level, whether it is plugged in, and if\n * the system is currently operating in Power Saver Mode (Android) or Low Power Mode (iOS). This\n * method re-throws any errors that occur when retrieving any of the power-state information.\n * @return Returns a `Promise` which fulfills with [`PowerState`](#powerstate) object.\n * @example\n * ```ts\n * await Battery.getPowerStateAsync();\n * // {\n * // batteryLevel: 0.759999,\n * // batteryState: BatteryState.UNPLUGGED,\n * // lowPowerMode: true,\n * // }\n * ```\n */\nexport async function getPowerStateAsync(): Promise<PowerState> {\n const [batteryLevel, batteryState, lowPowerMode] = await Promise.all([\n getBatteryLevelAsync(),\n getBatteryStateAsync(),\n isLowPowerModeEnabledAsync(),\n ]);\n return {\n batteryLevel,\n batteryState,\n lowPowerMode,\n };\n}\n\n// @needsAudit\n/**\n * Subscribe to the battery level change updates.\n *\n * On Android devices, the event fires only when significant changes happens, which is when the\n * battery level drops below [`android.intent.action.BATTERY_LOW`](https://developer.android.com/reference/android/content/Intent#ACTION_BATTERY_LOW)\n * or rises above [`android.intent.action.BATTERY_OKAY`](https://developer.android.com/reference/android/content/Intent#ACTION_BATTERY_OKAY)\n * from a low battery level. See [Monitor the Battery Level and Charging State](https://developer.android.com/training/monitoring-device-state/battery-monitoring)\n * in Android documentation for more information.\n *\n * On iOS devices, the event fires when the battery level drops one percent or more, but is only\n * fired once per minute at maximum.\n *\n * On web, the event never fires.\n * @param listener A callback that is invoked when battery level changes. The callback is provided a\n * single argument that is an object with a `batteryLevel` key.\n * @return A `Subscription` object on which you can call `remove()` to unsubscribe from the listener.\n */\nexport function addBatteryLevelListener(\n listener: (event: BatteryLevelEvent) => void\n): Subscription {\n return BatteryEventEmitter.addListener('Expo.batteryLevelDidChange', listener);\n}\n\n// @needsAudit\n/**\n * Subscribe to the battery state change updates to receive an object with a [`Battery.BatteryState`](#batterystate)\n * enum value for whether the device is any of the four states.\n *\n * On web, the event never fires.\n * @param listener A callback that is invoked when battery state changes. The callback is provided a\n * single argument that is an object with a `batteryState` key.\n * @return A `Subscription` object on which you can call `remove()` to unsubscribe from the listener.\n */\nexport function addBatteryStateListener(\n listener: (event: BatteryStateEvent) => void\n): Subscription {\n return BatteryEventEmitter.addListener('Expo.batteryStateDidChange', listener);\n}\n\n// @needsAudit\n/**\n * Subscribe to Power Saver Mode (Android) or Low Power Mode (iOS) updates. The event fires whenever\n * the power mode is toggled.\n *\n * On web, the event never fires.\n * @param listener A callback that is invoked when Power Saver Mode (Android) or Low Power Mode (iOS)\n * changes. The callback is provided a single argument that is an object with a `lowPowerMode` key.\n * @return A `Subscription` object on which you can call `remove()` to unsubscribe from the listener.\n */\nexport function addLowPowerModeListener(listener: (event: PowerModeEvent) => void): Subscription {\n return BatteryEventEmitter.addListener('Expo.powerModeDidChange', listener);\n}\n\n// @needsAudit\n/**\n * Gets the device's battery level, as in [`getBatteryLevelAsync`](#getbatterylevelasync).\n *\n * @example\n * ```ts\n * const batteryLevel = useBatteryLevel();\n * ```\n *\n * @return The battery level of the device.\n */\nexport function useBatteryLevel(): number {\n const [batteryLevel, setBatteryLevel] = useState(-1);\n\n useEffect(() => {\n getBatteryLevelAsync().then(setBatteryLevel);\n const listener = addBatteryLevelListener((b) => setBatteryLevel(b.batteryLevel));\n return () => listener.remove();\n }, []);\n\n return batteryLevel;\n}\n\n// @needsAudit\n/**\n * Gets the device's battery state, as in [`getBatteryStateAsync`](#getbatterystateasync).\n *\n * @example\n * ```ts\n * const batteryState = useBatteryState();\n * ```\n *\n * @return The battery state of the device.\n */\nexport function useBatteryState(): BatteryState {\n const [batteryState, setBatteryState] = useState(BatteryState.UNKNOWN);\n\n useEffect(() => {\n getBatteryStateAsync().then(setBatteryState);\n const listener = addBatteryStateListener((b) => setBatteryState(b.batteryState));\n return () => listener.remove();\n }, []);\n\n return batteryState;\n}\n\n// @needsAudit\n/**\n * Boolean that indicates if the device is in low power or power saver mode, as in [`isLowPowerModeEnabledAsync`](#islowpowermodeenabledasync).\n *\n * @example\n * ```ts\n * const lowPowerMode = useLowPowerMode();\n * ```\n *\n * @return Returns a boolean indicating if the device is in low power mode.\n */\nexport function useLowPowerMode(): boolean {\n const [lowPowerMode, setLowPowerMode] = useState(false);\n\n useEffect(() => {\n isLowPowerModeEnabledAsync().then(setLowPowerMode);\n const listener = addLowPowerModeListener((b) => setLowPowerMode(b.lowPowerMode));\n return () => listener.remove();\n }, []);\n\n return lowPowerMode;\n}\n\n// @needsAudit\n/**\n * Gets the device's power state information, as in [`getPowerStateAsync`](#getpowerstateasync).\n *\n * @example\n * ```ts\n * const { lowPowerMode, batteryLevel, batteryState } = usePowerState();\n * ```\n *\n * @return Returns power state information.\n */\nexport function usePowerState(): PowerState {\n const [lowPowerMode, setLowPowerMode] = useState(false);\n const [batteryState, setBatteryState] = useState(BatteryState.UNKNOWN);\n const [batteryLevel, setBatteryLevel] = useState(-1);\n\n useEffect(() => {\n isLowPowerModeEnabledAsync().then(setLowPowerMode);\n getBatteryStateAsync().then(setBatteryState);\n getBatteryLevelAsync().then(setBatteryLevel);\n const modeListener = addLowPowerModeListener((b) => setLowPowerMode(b.lowPowerMode));\n const levelListener = addBatteryLevelListener((b) => setBatteryLevel(b.batteryLevel));\n const stateListener = addBatteryStateListener((b) => setBatteryState(b.batteryState));\n return () => {\n modeListener.remove();\n levelListener.remove();\n stateListener.remove();\n };\n }, []);\n\n return { lowPowerMode, batteryLevel, batteryState };\n}\n\nexport {\n BatteryLevelEvent,\n BatteryState,\n BatteryStateEvent,\n PowerModeEvent,\n PowerState,\n Subscription,\n};\n"]}
1
+ {"version":3,"file":"Battery.js","sourceRoot":"","sources":["../src/Battery.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter, Subscription } from 'expo-modules-core';\nimport { useEffect, useState } from 'react';\n\nimport {\n BatteryLevelEvent,\n BatteryState,\n BatteryStateEvent,\n PowerModeEvent,\n PowerState,\n} from './Battery.types';\nimport ExpoBattery from './ExpoBattery';\n\nconst BatteryEventEmitter = new EventEmitter(ExpoBattery);\n\n// @needsAudit\n/**\n * Resolves with whether the battery API is available on the current device. The value of this\n * property is `true` on Android and physical iOS devices and `false` on iOS simulators. On web,\n * it depends on whether the browser supports the web battery API.\n */\nexport async function isAvailableAsync(): Promise<boolean> {\n return Promise.resolve((ExpoBattery && ExpoBattery.isSupported) || false);\n}\n\n// @needsAudit\n/**\n * Gets the battery level of the device as a number between `0` and `1`, inclusive. If the device\n * does not support retrieving the battery level, this method returns `-1`. On web, this method\n * always returns `1`.\n * @return A `Promise` that fulfils with a number between `0` and `1` representing the battery level,\n * or `-1` if the device does not provide it.\n * @example\n * ```ts\n * await Battery.getBatteryLevelAsync();\n * // 0.759999\n * ```\n */\nexport async function getBatteryLevelAsync(): Promise<number> {\n if (!ExpoBattery.getBatteryLevelAsync) {\n return -1;\n }\n return await ExpoBattery.getBatteryLevelAsync();\n}\n\n// @needsAudit\n/**\n * Tells the battery's current state. On web, this always returns `BatteryState.UNKNOWN`.\n * @return Returns a `Promise` which fulfills with a [`Battery.BatteryState`](#batterystate) enum\n * value for whether the device is any of the four states.\n * @example\n * ```ts\n * await Battery.getBatteryStateAsync();\n * // BatteryState.CHARGING\n * ```\n */\nexport async function getBatteryStateAsync(): Promise<BatteryState> {\n if (!ExpoBattery.getBatteryStateAsync) {\n return BatteryState.UNKNOWN;\n }\n return await ExpoBattery.getBatteryStateAsync();\n}\n\n// @needsAudit\n/**\n * Gets the current status of Power Saver mode on Android and Low Power mode on iOS. If a platform\n * doesn't support Low Power mode reporting (like web, older Android devices), the reported low-power\n * state is always `false`, even if the device is actually in low-power mode.\n * @return Returns a `Promise` which fulfills with a `boolean` value of either `true` or `false`,\n * indicating whether low power mode is enabled or disabled.\n * @example\n * Power Saver Mode (Android) or Low Power Mode (iOS) are enabled.\n * ```ts\n * await Battery.isLowPowerModeEnabledAsync();\n * // true\n * ```\n */\nexport async function isLowPowerModeEnabledAsync(): Promise<boolean> {\n if (!ExpoBattery.isLowPowerModeEnabledAsync) {\n return false;\n }\n return await ExpoBattery.isLowPowerModeEnabledAsync();\n}\n\n// @needsAudit\n/**\n * Checks whether battery optimization is enabled for your application.\n * If battery optimization is enabled for your app, background tasks might be affected\n * when your app goes into doze mode state. (only on Android 6.0 or later)\n * @return Returns a `Promise` which fulfills with a `boolean` value of either `true` or `false`,\n * indicating whether the battery optimization is enabled or disabled, respectively. (Android only)\n * @example\n * ```ts\n * await Battery.isBatteryOptimizationEnabledAsync();\n * // true\n * ```\n */\nexport async function isBatteryOptimizationEnabledAsync(): Promise<boolean> {\n if (!ExpoBattery.isBatteryOptimizationEnabledAsync) {\n return false;\n }\n return await ExpoBattery.isBatteryOptimizationEnabledAsync();\n}\n\n/**\n * Gets the power state of the device including the battery level, whether it is plugged in, and if\n * the system is currently operating in Power Saver Mode (Android) or Low Power Mode (iOS). This\n * method re-throws any errors that occur when retrieving any of the power-state information.\n * @return Returns a `Promise` which fulfills with [`PowerState`](#powerstate) object.\n * @example\n * ```ts\n * await Battery.getPowerStateAsync();\n * // {\n * // batteryLevel: 0.759999,\n * // batteryState: BatteryState.UNPLUGGED,\n * // lowPowerMode: true,\n * // }\n * ```\n */\nexport async function getPowerStateAsync(): Promise<PowerState> {\n const [batteryLevel, batteryState, lowPowerMode] = await Promise.all([\n getBatteryLevelAsync(),\n getBatteryStateAsync(),\n isLowPowerModeEnabledAsync(),\n ]);\n return {\n batteryLevel,\n batteryState,\n lowPowerMode,\n };\n}\n\n// @needsAudit\n/**\n * Subscribe to the battery level change updates.\n *\n * On Android devices, the event fires only when significant changes happens, which is when the\n * battery level drops below [`android.intent.action.BATTERY_LOW`](https://developer.android.com/reference/android/content/Intent#ACTION_BATTERY_LOW)\n * or rises above [`android.intent.action.BATTERY_OKAY`](https://developer.android.com/reference/android/content/Intent#ACTION_BATTERY_OKAY)\n * from a low battery level. See [Monitor the Battery Level and Charging State](https://developer.android.com/training/monitoring-device-state/battery-monitoring)\n * in Android documentation for more information.\n *\n * On iOS devices, the event fires when the battery level drops one percent or more, but is only\n * fired once per minute at maximum.\n *\n * On web, the event never fires.\n * @param listener A callback that is invoked when battery level changes. The callback is provided a\n * single argument that is an object with a `batteryLevel` key.\n * @return A `Subscription` object on which you can call `remove()` to unsubscribe from the listener.\n */\nexport function addBatteryLevelListener(\n listener: (event: BatteryLevelEvent) => void\n): Subscription {\n return BatteryEventEmitter.addListener('Expo.batteryLevelDidChange', listener);\n}\n\n// @needsAudit\n/**\n * Subscribe to the battery state change updates to receive an object with a [`Battery.BatteryState`](#batterystate)\n * enum value for whether the device is any of the four states.\n *\n * On web, the event never fires.\n * @param listener A callback that is invoked when battery state changes. The callback is provided a\n * single argument that is an object with a `batteryState` key.\n * @return A `Subscription` object on which you can call `remove()` to unsubscribe from the listener.\n */\nexport function addBatteryStateListener(\n listener: (event: BatteryStateEvent) => void\n): Subscription {\n return BatteryEventEmitter.addListener('Expo.batteryStateDidChange', listener);\n}\n\n// @needsAudit\n/**\n * Subscribe to Power Saver Mode (Android) or Low Power Mode (iOS) updates. The event fires whenever\n * the power mode is toggled.\n *\n * On web, the event never fires.\n * @param listener A callback that is invoked when Power Saver Mode (Android) or Low Power Mode (iOS)\n * changes. The callback is provided a single argument that is an object with a `lowPowerMode` key.\n * @return A `Subscription` object on which you can call `remove()` to unsubscribe from the listener.\n */\nexport function addLowPowerModeListener(listener: (event: PowerModeEvent) => void): Subscription {\n return BatteryEventEmitter.addListener('Expo.powerModeDidChange', listener);\n}\n\n// @needsAudit\n/**\n * Gets the device's battery level, as in [`getBatteryLevelAsync`](#getbatterylevelasync).\n *\n * @example\n * ```ts\n * const batteryLevel = useBatteryLevel();\n * ```\n *\n * @return The battery level of the device.\n */\nexport function useBatteryLevel(): number {\n const [batteryLevel, setBatteryLevel] = useState(-1);\n\n useEffect(() => {\n getBatteryLevelAsync().then(setBatteryLevel);\n const listener = addBatteryLevelListener((b) => setBatteryLevel(b.batteryLevel));\n return () => listener.remove();\n }, []);\n\n return batteryLevel;\n}\n\n// @needsAudit\n/**\n * Gets the device's battery state, as in [`getBatteryStateAsync`](#getbatterystateasync).\n *\n * @example\n * ```ts\n * const batteryState = useBatteryState();\n * ```\n *\n * @return The battery state of the device.\n */\nexport function useBatteryState(): BatteryState {\n const [batteryState, setBatteryState] = useState(BatteryState.UNKNOWN);\n\n useEffect(() => {\n getBatteryStateAsync().then(setBatteryState);\n const listener = addBatteryStateListener((b) => setBatteryState(b.batteryState));\n return () => listener.remove();\n }, []);\n\n return batteryState;\n}\n\n// @needsAudit\n/**\n * Boolean that indicates if the device is in low power or power saver mode, as in [`isLowPowerModeEnabledAsync`](#islowpowermodeenabledasync).\n *\n * @example\n * ```ts\n * const lowPowerMode = useLowPowerMode();\n * ```\n *\n * @return Returns a boolean indicating if the device is in low power mode.\n */\nexport function useLowPowerMode(): boolean {\n const [lowPowerMode, setLowPowerMode] = useState(false);\n\n useEffect(() => {\n isLowPowerModeEnabledAsync().then(setLowPowerMode);\n const listener = addLowPowerModeListener((b) => setLowPowerMode(b.lowPowerMode));\n return () => listener.remove();\n }, []);\n\n return lowPowerMode;\n}\n\n// @needsAudit\n/**\n * Gets the device's power state information, as in [`getPowerStateAsync`](#getpowerstateasync).\n *\n * @example\n * ```ts\n * const { lowPowerMode, batteryLevel, batteryState } = usePowerState();\n * ```\n *\n * @return Returns power state information.\n */\nexport function usePowerState(): PowerState {\n const [lowPowerMode, setLowPowerMode] = useState(false);\n const [batteryState, setBatteryState] = useState(BatteryState.UNKNOWN);\n const [batteryLevel, setBatteryLevel] = useState(-1);\n\n useEffect(() => {\n isLowPowerModeEnabledAsync().then(setLowPowerMode);\n getBatteryStateAsync().then(setBatteryState);\n getBatteryLevelAsync().then(setBatteryLevel);\n const modeListener = addLowPowerModeListener((b) => setLowPowerMode(b.lowPowerMode));\n const levelListener = addBatteryLevelListener((b) => setBatteryLevel(b.batteryLevel));\n const stateListener = addBatteryStateListener((b) => setBatteryState(b.batteryState));\n return () => {\n modeListener.remove();\n levelListener.remove();\n stateListener.remove();\n };\n }, []);\n\n return { lowPowerMode, batteryLevel, batteryState };\n}\n\nexport {\n BatteryLevelEvent,\n BatteryState,\n BatteryStateEvent,\n PowerModeEvent,\n PowerState,\n Subscription,\n};\n"]}
@@ -1,6 +1,5 @@
1
1
  import { BatteryState } from './Battery.types';
2
2
  declare const _default: {
3
- readonly name: string;
4
3
  readonly isSupported: boolean;
5
4
  getBatteryLevelAsync(): Promise<number>;
6
5
  getBatteryStateAsync(): Promise<BatteryState>;
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoBattery.web.d.ts","sourceRoot":"","sources":["../src/ExpoBattery.web.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;;;;4BA0Cf,QAAQ,MAAM,CAAC;4BAOf,QAAQ,YAAY,CAAC;;;;AAjBrD,wBAoCE"}
1
+ {"version":3,"file":"ExpoBattery.web.d.ts","sourceRoot":"","sources":["../src/ExpoBattery.web.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;;;4BAsCf,OAAO,CAAC,MAAM,CAAC;4BAOf,OAAO,CAAC,YAAY,CAAC;;;;AAbrD,wBAgCE"}
@@ -2,9 +2,6 @@ import { EventEmitter, Platform } from 'expo-modules-core';
2
2
  import { BatteryState } from './Battery.types';
3
3
  const emitter = new EventEmitter({});
4
4
  export default {
5
- get name() {
6
- return 'ExpoBattery';
7
- },
8
5
  get isSupported() {
9
6
  // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery#Browser_compatibility
10
7
  return Platform.isDOMAvailable && ('getBattery' in navigator || 'battery' in navigator);
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoBattery.web.js","sourceRoot":"","sources":["../src/ExpoBattery.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter, Platform } from 'expo-modules-core';\n\nimport { BatteryState } from './Battery.types';\n\nconst emitter = new EventEmitter({} as any);\n\ndeclare let navigator: Navigator;\n\ninterface BatteryManager extends BatteryManagerEventTarget {\n readonly charging: boolean;\n readonly chargingTime: number;\n readonly dischargingTime: number;\n readonly level: number;\n}\n\ninterface BatteryManagerEventTargetEventMap {\n chargingchange: Event;\n chargingtimechange: Event;\n dischargingtimechange: Event;\n levelchange: Event;\n}\n\ninterface BatteryManagerEventTarget extends EventTarget {\n onchargingchange: (this: BatteryManager, ev: Event) => any;\n onlevelchange: (this: BatteryManager, ev: Event) => any;\n onchargingtimechange: (this: BatteryManager, ev: Event) => any;\n ondischargingtimechange: (this: BatteryManager, ev: Event) => any;\n addEventListener<K extends keyof BatteryManagerEventTargetEventMap>(\n type: K,\n listener: (this: BatteryManager, ev: BatteryManagerEventTargetEventMap[K]) => any,\n useCapture?: boolean\n ): void;\n}\n\nexport default {\n get name(): string {\n return 'ExpoBattery';\n },\n\n get isSupported(): boolean {\n // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery#Browser_compatibility\n return Platform.isDOMAvailable && ('getBattery' in navigator || 'battery' in navigator);\n },\n\n async getBatteryLevelAsync(): Promise<number> {\n const batteryManager = await getBatteryManagerAsync();\n if (!batteryManager) return -1;\n\n return batteryManager.level;\n },\n\n async getBatteryStateAsync(): Promise<BatteryState> {\n const batteryManager = await getBatteryManagerAsync();\n if (!batteryManager) return BatteryState.UNKNOWN;\n return getBatteryState(batteryManager.charging, batteryManager.level);\n },\n\n async startObserving() {\n const batteryManager = await getBatteryManagerAsync();\n if (!batteryManager) return;\n batteryManager.addEventListener('chargingchange', onChargingChange);\n batteryManager.addEventListener('levelchange', onLevelChange);\n },\n\n async stopObserving() {\n const batteryManager = await getBatteryManagerAsync();\n if (!batteryManager) return;\n batteryManager.removeEventListener('chargingchange', onChargingChange);\n batteryManager.removeEventListener('levelchange', onLevelChange);\n },\n};\n\nlet lastReportedState: BatteryState = BatteryState.UNKNOWN;\n\nfunction getBatteryState(isCharging: boolean, level: number): BatteryState {\n return isCharging\n ? level >= 1.0\n ? BatteryState.FULL\n : BatteryState.CHARGING\n : BatteryState.UNPLUGGED;\n}\n\nfunction emitStateChange(isCharging: boolean, level: number) {\n const batteryState = getBatteryState(isCharging, level);\n // prevent sending the same state change twice.\n if (batteryState === lastReportedState) return;\n lastReportedState = batteryState;\n emitter.emit('Expo.batteryStateDidChange', { batteryState });\n}\n\nfunction onChargingChange(this: BatteryManager): void {\n emitStateChange(this.charging, this.level);\n}\n\nfunction onLevelChange(this: BatteryManager): void {\n const batteryLevel = this.level;\n // update the state as well in case the state changed to full.\n emitStateChange(this.charging, this.level);\n emitter.emit('Expo.batteryLevelDidChange', { batteryLevel });\n}\n\nasync function getBatteryManagerAsync(): Promise<BatteryManager | null> {\n if (Platform.isDOMAvailable === false) return null;\n if ('getBattery' in navigator) {\n // @ts-ignore\n return await navigator.getBattery();\n } else {\n // @ts-ignore\n return await navigator.battery;\n }\n}\n"]}
1
+ {"version":3,"file":"ExpoBattery.web.js","sourceRoot":"","sources":["../src/ExpoBattery.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter, Platform } from 'expo-modules-core';\n\nimport { BatteryState } from './Battery.types';\n\nconst emitter = new EventEmitter({} as any);\n\ndeclare let navigator: Navigator;\n\ninterface BatteryManager extends BatteryManagerEventTarget {\n readonly charging: boolean;\n readonly chargingTime: number;\n readonly dischargingTime: number;\n readonly level: number;\n}\n\ninterface BatteryManagerEventTargetEventMap {\n chargingchange: Event;\n chargingtimechange: Event;\n dischargingtimechange: Event;\n levelchange: Event;\n}\n\ninterface BatteryManagerEventTarget extends EventTarget {\n onchargingchange: (this: BatteryManager, ev: Event) => any;\n onlevelchange: (this: BatteryManager, ev: Event) => any;\n onchargingtimechange: (this: BatteryManager, ev: Event) => any;\n ondischargingtimechange: (this: BatteryManager, ev: Event) => any;\n addEventListener<K extends keyof BatteryManagerEventTargetEventMap>(\n type: K,\n listener: (this: BatteryManager, ev: BatteryManagerEventTargetEventMap[K]) => any,\n useCapture?: boolean\n ): void;\n}\n\nexport default {\n get isSupported(): boolean {\n // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery#Browser_compatibility\n return Platform.isDOMAvailable && ('getBattery' in navigator || 'battery' in navigator);\n },\n\n async getBatteryLevelAsync(): Promise<number> {\n const batteryManager = await getBatteryManagerAsync();\n if (!batteryManager) return -1;\n\n return batteryManager.level;\n },\n\n async getBatteryStateAsync(): Promise<BatteryState> {\n const batteryManager = await getBatteryManagerAsync();\n if (!batteryManager) return BatteryState.UNKNOWN;\n return getBatteryState(batteryManager.charging, batteryManager.level);\n },\n\n async startObserving() {\n const batteryManager = await getBatteryManagerAsync();\n if (!batteryManager) return;\n batteryManager.addEventListener('chargingchange', onChargingChange);\n batteryManager.addEventListener('levelchange', onLevelChange);\n },\n\n async stopObserving() {\n const batteryManager = await getBatteryManagerAsync();\n if (!batteryManager) return;\n batteryManager.removeEventListener('chargingchange', onChargingChange);\n batteryManager.removeEventListener('levelchange', onLevelChange);\n },\n};\n\nlet lastReportedState: BatteryState = BatteryState.UNKNOWN;\n\nfunction getBatteryState(isCharging: boolean, level: number): BatteryState {\n return isCharging\n ? level >= 1.0\n ? BatteryState.FULL\n : BatteryState.CHARGING\n : BatteryState.UNPLUGGED;\n}\n\nfunction emitStateChange(isCharging: boolean, level: number) {\n const batteryState = getBatteryState(isCharging, level);\n // prevent sending the same state change twice.\n if (batteryState === lastReportedState) return;\n lastReportedState = batteryState;\n emitter.emit('Expo.batteryStateDidChange', { batteryState });\n}\n\nfunction onChargingChange(this: BatteryManager): void {\n emitStateChange(this.charging, this.level);\n}\n\nfunction onLevelChange(this: BatteryManager): void {\n const batteryLevel = this.level;\n // update the state as well in case the state changed to full.\n emitStateChange(this.charging, this.level);\n emitter.emit('Expo.batteryLevelDidChange', { batteryLevel });\n}\n\nasync function getBatteryManagerAsync(): Promise<BatteryManager | null> {\n if (Platform.isDOMAvailable === false) return null;\n if ('getBattery' in navigator) {\n // @ts-ignore\n return await navigator.getBattery();\n } else {\n // @ts-ignore\n return await navigator.battery;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-battery",
3
- "version": "7.7.1",
3
+ "version": "8.0.0",
4
4
  "description": "Provides battery information for the physical device, as well as corresponding event listeners.",
5
5
  "main": "build/Battery.js",
6
6
  "types": "build/Battery.d.ts",
@@ -36,5 +36,5 @@
36
36
  "peerDependencies": {
37
37
  "expo": "*"
38
38
  },
39
- "gitHead": "6aca7ce098ddc667776a3d7cf612adbb985e264a"
39
+ "gitHead": "4165b8d72e1b9a1889c2767534cc619e21468110"
40
40
  }
@@ -33,10 +33,6 @@ interface BatteryManagerEventTarget extends EventTarget {
33
33
  }
34
34
 
35
35
  export default {
36
- get name(): string {
37
- return 'ExpoBattery';
38
- },
39
-
40
36
  get isSupported(): boolean {
41
37
  // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery#Browser_compatibility
42
38
  return Platform.isDOMAvailable && ('getBattery' in navigator || 'battery' in navigator);