diff --git a/app/build.gradle.kts b/app/build.gradle.kts index abbd8a2..1e7d191 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -18,8 +18,8 @@ android { applicationId = "co.adityarajput.notifilter" minSdk = 29 targetSdk = 36 - versionCode = 16 - versionName = "4.1.0" + versionCode = 17 + versionName = "4.1.1" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/co/adityarajput/notifilter/data/models/Action.kt b/app/src/main/java/co/adityarajput/notifilter/data/models/Action.kt index e218e3c..e3ec27d 100644 --- a/app/src/main/java/co/adityarajput/notifilter/data/models/Action.kt +++ b/app/src/main/java/co/adityarajput/notifilter/data/models/Action.kt @@ -51,7 +51,7 @@ sealed class Action { fun isOfType(it: Action) = this::class == it::class companion object { - val entries = listOf(DISMISS, TAP_NOTIFICATION, TAP_BUTTON(""), BATCH(3), DELAY) + val entries by lazy { listOf(DISMISS, TAP_NOTIFICATION, TAP_BUTTON(""), BATCH(3), DELAY) } fun fromString(value: String) = when { value == "DISMISS" -> DISMISS diff --git a/app/src/main/java/co/adityarajput/notifilter/services/NotificationListener.kt b/app/src/main/java/co/adityarajput/notifilter/services/NotificationListener.kt index c81a9b4..9f0a82f 100644 --- a/app/src/main/java/co/adityarajput/notifilter/services/NotificationListener.kt +++ b/app/src/main/java/co/adityarajput/notifilter/services/NotificationListener.kt @@ -107,11 +107,15 @@ class NotificationListener : NotificationListenerService() { if (sbn.notification.flags and FLAG_GROUP_SUMMARY != 0) { Logger.d( "NotificationListener.onNotificationPosted", - "Ignoring group summary notification", + "Ignoring group summary notification $sbn", ) return } + Logger.d( + "NotificationListener.onNotificationPosted", + "Received $sbn with extras ${sbn.notification.extras}", + ) val notification = Notification(sbn) Logger.d("NotificationListener.onNotificationPosted", "Received $notification") @@ -127,7 +131,15 @@ class NotificationListener : NotificationListenerService() { when (filter.action) { is Action.DISMISS -> if (sbn.isClearable) { - cancelNotification(sbn.key) + try { + cancelNotification(sbn.key) + } catch (e: Throwable) { + Logger.e( + "NotificationListener.onNotificationPosted", + "Failed to dismiss notification", + e, + ) + } } else { Logger.d("NotificationListener.onNotificationPosted", "Is unclearable") snoozeNotification(sbn.key, 5 * 60 * 60 * 1000L) diff --git a/app/src/main/java/co/adityarajput/notifilter/views/screens/UpsertFilterScreen.kt b/app/src/main/java/co/adityarajput/notifilter/views/screens/UpsertFilterScreen.kt index f8e73c9..ee961bc 100644 --- a/app/src/main/java/co/adityarajput/notifilter/views/screens/UpsertFilterScreen.kt +++ b/app/src/main/java/co/adityarajput/notifilter/views/screens/UpsertFilterScreen.kt @@ -36,6 +36,7 @@ import androidx.compose.ui.text.style.TextDecoration import androidx.lifecycle.viewmodel.compose.viewModel import co.adityarajput.notifilter.R import co.adityarajput.notifilter.data.models.* +import co.adityarajput.notifilter.utils.Logger import co.adityarajput.notifilter.utils.filterFirst import co.adityarajput.notifilter.utils.getFirst import co.adityarajput.notifilter.utils.hasAccessibilityServicePermission @@ -542,7 +543,17 @@ private fun ActionPage(viewModel: UpsertFilterViewModel) { ) { ErrorText(R.string.accessibility_service_description) Button( - { context.startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)) }, + { + try { + context.startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)) + } catch (e: Exception) { + Logger.e( + "UpsertFilterScreen", + "Error opening accessibility settings", + e, + ) + } + }, Modifier.align(Alignment.CenterHorizontally), colors = ButtonDefaults.buttonColors(contentColor = MaterialTheme.colorScheme.onPrimaryContainer), ) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b30a5ee..c201890 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,7 +1,7 @@ NotiFilter NotiFilter - 4.1.0 + 4.1.1 No filters added.\nTap + to get started. "on weekdays " diff --git a/metadata/en-US/changelogs/17.txt b/metadata/en-US/changelogs/17.txt new file mode 100644 index 0000000..52a9594 --- /dev/null +++ b/metadata/en-US/changelogs/17.txt @@ -0,0 +1 @@ +• fix: Untangle cyclical initialization of Action