mirror of
https://codeberg.org/timelimit/timelimit-android.git
synced 2025-10-03 09:49:25 +02:00
Check permissions twice before updating the device status
This commit is contained in:
parent
f315d2640a
commit
70f9a3df24
1 changed files with 82 additions and 55 deletions
|
@ -828,7 +828,7 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
||||||
|
|
||||||
fun syncDeviceStatusAsync() {
|
fun syncDeviceStatusAsync() {
|
||||||
runAsync {
|
runAsync {
|
||||||
syncDeviceStatus()
|
syncDeviceStatusFast()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -836,7 +836,7 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
||||||
while (true) {
|
while (true) {
|
||||||
appLogic.deviceEntryIfEnabled.waitUntilValueMatches { it != null }
|
appLogic.deviceEntryIfEnabled.waitUntilValueMatches { it != null }
|
||||||
|
|
||||||
syncDeviceStatus()
|
syncDeviceStatusSlow()
|
||||||
|
|
||||||
appLogic.timeApi.sleep(CHECK_PERMISSION_INTERVAL)
|
appLogic.timeApi.sleep(CHECK_PERMISSION_INTERVAL)
|
||||||
}
|
}
|
||||||
|
@ -860,10 +860,11 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun syncDeviceStatus() {
|
private suspend fun getUpdateDeviceStatusAction(): UpdateDeviceStatusAction {
|
||||||
syncDeviceStatusLock.withLock {
|
|
||||||
val deviceEntry = appLogic.deviceEntry.waitForNullableValue()
|
val deviceEntry = appLogic.deviceEntry.waitForNullableValue()
|
||||||
|
|
||||||
|
var changes = UpdateDeviceStatusAction.empty
|
||||||
|
|
||||||
if (deviceEntry != null) {
|
if (deviceEntry != null) {
|
||||||
val protectionLevel = appLogic.platformIntegration.getCurrentProtectionLevel()
|
val protectionLevel = appLogic.platformIntegration.getCurrentProtectionLevel()
|
||||||
val usageStatsPermission = appLogic.platformIntegration.getForegroundAppPermissionStatus()
|
val usageStatsPermission = appLogic.platformIntegration.getForegroundAppPermissionStatus()
|
||||||
|
@ -872,8 +873,6 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
||||||
val accessibilityService = appLogic.platformIntegration.isAccessibilityServiceEnabled()
|
val accessibilityService = appLogic.platformIntegration.isAccessibilityServiceEnabled()
|
||||||
val qOrLater = AndroidVersion.qOrLater
|
val qOrLater = AndroidVersion.qOrLater
|
||||||
|
|
||||||
var changes = UpdateDeviceStatusAction.empty
|
|
||||||
|
|
||||||
if (protectionLevel != deviceEntry.currentProtectionLevel) {
|
if (protectionLevel != deviceEntry.currentProtectionLevel) {
|
||||||
changes = changes.copy(
|
changes = changes.copy(
|
||||||
newProtectionLevel = protectionLevel
|
newProtectionLevel = protectionLevel
|
||||||
|
@ -911,6 +910,14 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
||||||
if (qOrLater && !deviceEntry.qOrLater) {
|
if (qOrLater && !deviceEntry.qOrLater) {
|
||||||
changes = changes.copy(isQOrLaterNow = true)
|
changes = changes.copy(isQOrLaterNow = true)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return changes
|
||||||
|
}
|
||||||
|
|
||||||
|
private suspend fun syncDeviceStatusFast() {
|
||||||
|
syncDeviceStatusLock.withLock {
|
||||||
|
val changes = getUpdateDeviceStatusAction()
|
||||||
|
|
||||||
if (changes != UpdateDeviceStatusAction.empty) {
|
if (changes != UpdateDeviceStatusAction.empty) {
|
||||||
ApplyActionUtil.applyAppLogicAction(
|
ApplyActionUtil.applyAppLogicAction(
|
||||||
|
@ -921,6 +928,26 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private suspend fun syncDeviceStatusSlow() {
|
||||||
|
syncDeviceStatusLock.withLock {
|
||||||
|
val changesOne = getUpdateDeviceStatusAction()
|
||||||
|
|
||||||
|
delay(2000)
|
||||||
|
|
||||||
|
val changesTwo = getUpdateDeviceStatusAction()
|
||||||
|
|
||||||
|
if (
|
||||||
|
changesOne != UpdateDeviceStatusAction.empty &&
|
||||||
|
changesOne == changesTwo
|
||||||
|
) {
|
||||||
|
ApplyActionUtil.applyAppLogicAction(
|
||||||
|
action = changesOne,
|
||||||
|
appLogic = appLogic,
|
||||||
|
ignoreIfDeviceIsNotConfigured = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun resetTemporarilyAllowedApps() {
|
suspend fun resetTemporarilyAllowedApps() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue