diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt
index 32686d261..4d840d959 100644
--- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt
+++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt
@@ -28,7 +28,9 @@ import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar
import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.app.ShareCompat
@@ -86,6 +88,7 @@ import org.tasks.activities.TagSettingsActivity
import org.tasks.analytics.Firebase
import org.tasks.billing.PurchaseActivity
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity
+import org.tasks.compose.AlarmsDisabledBanner
import org.tasks.compose.FilterSelectionActivity.Companion.launch
import org.tasks.compose.FilterSelectionActivity.Companion.registerForListPickerResult
import org.tasks.compose.NotificationsDisabledBanner
@@ -107,7 +110,6 @@ import org.tasks.dialogs.DateTimePicker.Companion.newDateTimePicker
import org.tasks.dialogs.DialogBuilder
import org.tasks.dialogs.PriorityPicker.Companion.newPriorityPicker
import org.tasks.dialogs.SortSettingsActivity
-import org.tasks.extensions.Context.canScheduleExactAlarms
import org.tasks.extensions.Context.is24HourFormat
import org.tasks.extensions.Context.openAppNotificationSettings
import org.tasks.extensions.Context.openReminderSettings
@@ -376,16 +378,14 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
} else {
null
}
- val showNotificationBanner = state.warnNotificationsDisabled &&
- (!hasRemindersPermission || notificationPermissions?.status is PermissionStatus.Denied)
- val showSubscriptionNag = !showNotificationBanner && state.begForSubscription
- val showQuietHoursWarning = !showNotificationBanner && !showSubscriptionNag && state.warnQuietHoursEnabled
+ val showNotificationBanner = state.warnNotificationsDisabled && notificationPermissions?.status is PermissionStatus.Denied
+ val showAlarmsBanner = !showNotificationBanner && state.warnNotificationsDisabled && !hasRemindersPermission
+ val showSubscriptionNag = !showNotificationBanner && !showAlarmsBanner && state.begForSubscription
+ val showQuietHoursWarning = !showNotificationBanner && !showAlarmsBanner && !showSubscriptionNag && state.warnQuietHoursEnabled
NotificationsDisabledBanner(
visible = showNotificationBanner,
settings = {
- if (!context.canScheduleExactAlarms()) {
- context.openReminderSettings()
- } else if (notificationPermissions?.status?.shouldShowRationale == true) {
+ if (notificationPermissions?.status?.shouldShowRationale == true) {
context.openAppNotificationSettings()
} else {
notificationPermissions?.launchPermissionRequest()
@@ -393,6 +393,11 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
},
dismiss = { listViewModel.dismissNotificationBanner() },
)
+ AlarmsDisabledBanner(
+ visible = showAlarmsBanner,
+ settings = { context.openReminderSettings() },
+ dismiss = { listViewModel.dismissNotificationBanner() },
+ )
SubscriptionNagBanner(
visible = showSubscriptionNag,
subscribe = {
diff --git a/app/src/main/java/org/tasks/compose/Banner.kt b/app/src/main/java/org/tasks/compose/Banner.kt
index 7aed3cf5c..d3665fe8b 100644
--- a/app/src/main/java/org/tasks/compose/Banner.kt
+++ b/app/src/main/java/org/tasks/compose/Banner.kt
@@ -28,6 +28,25 @@ fun NotificationsDisabledBanner(
)
}
+@OptIn(ExperimentalAnimationApi::class)
+@Composable
+fun AlarmsDisabledBanner(
+ visible: Boolean,
+ settings: () -> Unit,
+ dismiss: () -> Unit,
+) {
+ AnimatedBanner(
+ visible = visible,
+ title = stringResource(id = R.string.enable_alarms),
+ body = stringResource(id = R.string.enable_alarms_description),
+ dismissText = stringResource(id = R.string.dismiss),
+ onDismiss = dismiss,
+ action = stringResource(id = R.string.TLA_menu_settings),
+ onAction = settings,
+ )
+
+}
+
@ExperimentalAnimationApi
@Composable
fun SubscriptionNagBanner(
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4fa516eed..9cc8a8498 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -731,6 +731,8 @@ File %1$s contained %2$s.\n\n
You can customize this screen by rearranging or removing fields
Enable reminders
Reminders are disabled in Android Settings
+ Get notified at the right time
+ To make sure you\'re notified at the right time, grant permission to set alarms and reminders in Settings
Sign in
Agree
Not now