From 0574a29a097b4318fa4c9e02e898815dec174771 Mon Sep 17 00:00:00 2001 From: frankpreel Date: Wed, 28 May 2025 12:07:13 +0200 Subject: [PATCH 1/2] fix: Reboot or Re-activate is needed to unnsure midnight events are well tahke in care REF: https://gitlab.e.foundation/e/os/backlog/-/issues/3348 --- .../e/parentalcontrol/MainActivity.kt | 4 ++++ .../e/parentalcontrol/utils/AlarmUtils.kt | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt b/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt index 9d9579f..59c3daf 100644 --- a/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt +++ b/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt @@ -127,6 +127,7 @@ import foundation.e.parentalcontrol.ui.view.SelectManageTypeApp import foundation.e.parentalcontrol.ui.view.selectedAge import foundation.e.parentalcontrol.ui.view.selectedAllowedScreenTime import foundation.e.parentalcontrol.ui.view.selectedTypeAppManagement +import foundation.e.parentalcontrol.utils.AlarmUtils import foundation.e.parentalcontrol.utils.Constants import foundation.e.parentalcontrol.utils.Constants.DELAY_CONFIRM_PASSWORD import foundation.e.parentalcontrol.utils.Constants.DELAY_DISABLE_FMD @@ -420,6 +421,7 @@ class MainActivity : ComponentActivity() { onSetAllowedApps() val stats = UsageStatsManager() stats.activeAlarm(mActivity, 0, false) + AlarmUtils.scheduleMidnightTrigger(context) if (!isAdminActive()) { setAdmin(true) @@ -669,6 +671,7 @@ class MainActivity : ComponentActivity() { PrefsUtils.clearAllExcept(Constants.PARENTAL_CONTROL_STATUS_LIST) if (isAdminActive()) { setAdmin(false) + AlarmUtils.cancelScheduleMidnightTrigger(mActivity) } coroutineScope.launch { delay(200) @@ -1423,6 +1426,7 @@ class MainActivity : ComponentActivity() { selectedAllowedScreenTime = 0 selectedTypeAppManagement = null setAdmin(false) + AlarmUtils.cancelScheduleMidnightTrigger(mActivity) onStartUp() }, onBackPressed = { onStartUp() } diff --git a/app/src/main/java/foundation/e/parentalcontrol/utils/AlarmUtils.kt b/app/src/main/java/foundation/e/parentalcontrol/utils/AlarmUtils.kt index a5767ba..7cebd05 100644 --- a/app/src/main/java/foundation/e/parentalcontrol/utils/AlarmUtils.kt +++ b/app/src/main/java/foundation/e/parentalcontrol/utils/AlarmUtils.kt @@ -21,6 +21,7 @@ import android.app.AlarmManager import android.app.PendingIntent import android.content.Context import android.content.Intent +import foundation.e.parentalcontrol.AlarmReceiver import foundation.e.parentalcontrol.MidnightTriggerReceiver import java.util.Calendar @@ -51,4 +52,24 @@ object AlarmUtils { pendingIntent ) } + + fun cancelScheduleMidnightTrigger(context: Context) { + val alarmManager: AlarmManager = + context.getSystemService(Context.ALARM_SERVICE) as AlarmManager + + val pendingIntent = getScheduleMidnightTriggerPendingIntent(context) + alarmManager.cancel(pendingIntent) + } + + private fun getScheduleMidnightTriggerPendingIntent( + context: Context, + ): PendingIntent { + val intent = Intent(context, AlarmReceiver::class.java) + return PendingIntent.getBroadcast( + context, + 0, + intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT + ) + } } -- GitLab From 719311d82d1b53c236430174f585273f93c713b2 Mon Sep 17 00:00:00 2001 From: frankpreel Date: Wed, 28 May 2025 12:12:57 +0200 Subject: [PATCH 2/2] fix: Case when PaCo is activated (update from 2x to 3) REF: N/A --- .../main/java/foundation/e/parentalcontrol/UsageStatsManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/parentalcontrol/UsageStatsManager.kt b/app/src/main/java/foundation/e/parentalcontrol/UsageStatsManager.kt index da9d39f..52889cd 100644 --- a/app/src/main/java/foundation/e/parentalcontrol/UsageStatsManager.kt +++ b/app/src/main/java/foundation/e/parentalcontrol/UsageStatsManager.kt @@ -170,7 +170,7 @@ class UsageStatsManager { // case when PACO has been activated before today if (elementsForToday.isEmpty()) { if (statusList.isEmpty()) { - return false + return true } val lastStatus = statusList.last() if (!lastStatus.activated) { -- GitLab