Add settings module for android
This commit is contained in:
parent
1b9d35d71e
commit
be4098962e
|
@ -22,6 +22,8 @@ import Switch from './Switch'
|
|||
import {toast} from './toast'
|
||||
import {useTheme} from './use-theme'
|
||||
|
||||
const defaultFormats = ['P', 'Pp', 'ccc p', 'p']
|
||||
|
||||
export default function SettingsPage() {
|
||||
const [battery, setBattery] = useState(false)
|
||||
const [ignoring, setIgnoring] = useState(false)
|
||||
|
@ -37,12 +39,7 @@ export default function SettingsPage() {
|
|||
const {theme, setTheme, color, setColor} = useTheme()
|
||||
const [showDate, setShowDate] = useState(false)
|
||||
const [noSound, setNoSound] = useState(false)
|
||||
const [formatOptions, setFormatOptions] = useState<string[]>([
|
||||
'P',
|
||||
'Pp',
|
||||
'ccc p',
|
||||
'p',
|
||||
])
|
||||
const [formatOptions, setFormatOptions] = useState<string[]>(defaultFormats)
|
||||
const today = new Date()
|
||||
|
||||
useFocusEffect(
|
||||
|
@ -60,7 +57,12 @@ export default function SettingsPage() {
|
|||
setNoSound(settings.noSound)
|
||||
})
|
||||
if (Platform.OS !== 'android') return
|
||||
NativeModules.AlarmModule.ignoringBattery(setIgnoring)
|
||||
NativeModules.SettingsModule.ignoringBattery(setIgnoring)
|
||||
NativeModules.SettingsModule.is24().then((is24: boolean) => {
|
||||
console.log(`${SettingsPage.name}.focus:`, {is24})
|
||||
if (is24) setFormatOptions(['P', 'P, k:m', 'ccc k:m', 'k:m'])
|
||||
else setFormatOptions(defaultFormats)
|
||||
})
|
||||
}, []),
|
||||
)
|
||||
|
||||
|
@ -267,7 +269,7 @@ export default function SettingsPage() {
|
|||
show={battery}
|
||||
setShow={setBattery}
|
||||
onOk={() => {
|
||||
NativeModules.AlarmModule.ignoreBattery()
|
||||
NativeModules.SettingsModule.ignoreBattery()
|
||||
setBattery(false)
|
||||
}}>
|
||||
Disable battery optimizations for Massive to use rest timers.
|
||||
|
|
|
@ -51,7 +51,6 @@ class AlarmModule constructor(context: ReactApplicationContext?) :
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
init {
|
||||
reactApplicationContext.registerReceiver(stopReceiver, IntentFilter(STOP_BROADCAST))
|
||||
reactApplicationContext.registerReceiver(addReceiver, IntentFilter(ADD_BROADCAST))
|
||||
|
@ -123,36 +122,6 @@ class AlarmModule constructor(context: ReactApplicationContext?) :
|
|||
running = true
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.M)
|
||||
@ReactMethod
|
||||
fun ignoringBattery(callback: Callback) {
|
||||
val packageName = reactApplicationContext.packageName
|
||||
val pm = reactApplicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
callback.invoke(pm.isIgnoringBatteryOptimizations(packageName))
|
||||
} else {
|
||||
callback.invoke(true)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("BatteryLife")
|
||||
@RequiresApi(Build.VERSION_CODES.M)
|
||||
@ReactMethod
|
||||
fun ignoreBattery() {
|
||||
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
|
||||
intent.data = Uri.parse("package:" + reactApplicationContext.packageName)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
try {
|
||||
reactApplicationContext.startActivity(intent)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
Toast.makeText(
|
||||
reactApplicationContext,
|
||||
"Requests to ignore battery optimizations are disabled on your device.",
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.M)
|
||||
private fun getTimer(
|
||||
endMs: Int,
|
||||
|
|
|
@ -4,7 +4,6 @@ import com.facebook.react.ReactPackage
|
|||
import com.facebook.react.bridge.NativeModule
|
||||
import com.facebook.react.bridge.ReactApplicationContext
|
||||
import com.facebook.react.uimanager.ViewManager
|
||||
import com.massive.AlarmModule
|
||||
import java.util.ArrayList
|
||||
|
||||
class MassivePackage : ReactPackage {
|
||||
|
@ -18,6 +17,7 @@ class MassivePackage : ReactPackage {
|
|||
val modules: MutableList<NativeModule> = ArrayList()
|
||||
modules.add(AlarmModule(reactContext))
|
||||
modules.add(DownloadModule(reactContext))
|
||||
modules.add(SettingsModule(reactContext))
|
||||
return modules
|
||||
}
|
||||
}
|
||||
|
|
59
android/app/src/main/java/com/massive/SettingsModule.kt
Normal file
59
android/app/src/main/java/com/massive/SettingsModule.kt
Normal file
|
@ -0,0 +1,59 @@
|
|||
package com.massive
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.PowerManager
|
||||
import android.provider.Settings
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import com.facebook.react.bridge.*
|
||||
import java.text.DateFormat
|
||||
|
||||
class SettingsModule constructor(context: ReactApplicationContext?) :
|
||||
ReactContextBaseJavaModule(context) {
|
||||
override fun getName(): String {
|
||||
return "SettingsModule"
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.M)
|
||||
@ReactMethod
|
||||
fun ignoringBattery(callback: Callback) {
|
||||
val packageName = reactApplicationContext.packageName
|
||||
val pm = reactApplicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
callback.invoke(pm.isIgnoringBatteryOptimizations(packageName))
|
||||
} else {
|
||||
callback.invoke(true)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("BatteryLife")
|
||||
@RequiresApi(Build.VERSION_CODES.M)
|
||||
@ReactMethod
|
||||
fun ignoreBattery() {
|
||||
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
|
||||
intent.data = Uri.parse("package:" + reactApplicationContext.packageName)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
try {
|
||||
reactApplicationContext.startActivity(intent)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
Toast.makeText(
|
||||
reactApplicationContext,
|
||||
"Requests to ignore battery optimizations are disabled on your device.",
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun is24(promise: Promise) {
|
||||
val is24 = android.text.format.DateFormat.is24HourFormat(reactApplicationContext)
|
||||
Log.d("SettingsModule", "is24=$is24")
|
||||
promise.resolve(is24)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user