diff --git a/app/src/main/java/se/ajpanton/notificationlog/capture/NotificationCaptureService.kt b/app/src/main/java/se/ajpanton/notificationlog/capture/NotificationCaptureService.kt index 17b8093..1c36d8c 100644 --- a/app/src/main/java/se/ajpanton/notificationlog/capture/NotificationCaptureService.kt +++ b/app/src/main/java/se/ajpanton/notificationlog/capture/NotificationCaptureService.kt @@ -45,7 +45,8 @@ class NotificationCaptureService : NotificationListenerService() { val previous = activeNotifications.put(snapshot.key, snapshot) when { previous == null -> record(snapshot, NotificationAction.APPEARED, LoggingType.APPEARING, includeContents = true) - previous.textContents != snapshot.textContents || previous.hasImage != snapshot.hasImage -> + (previous.textContents != snapshot.textContents || previous.hasImage != snapshot.hasImage) && + !(snapshot.isRoutine && ruleStore.ruleFor(LoggingType.EDITS).ignoreRoutineUpdates) -> record(snapshot, NotificationAction.EDITED, LoggingType.EDITS, includeContents = true) } } diff --git a/app/src/main/java/se/ajpanton/notificationlog/capture/NotificationSnapshot.kt b/app/src/main/java/se/ajpanton/notificationlog/capture/NotificationSnapshot.kt index 54165fb..f7f4a39 100644 --- a/app/src/main/java/se/ajpanton/notificationlog/capture/NotificationSnapshot.kt +++ b/app/src/main/java/se/ajpanton/notificationlog/capture/NotificationSnapshot.kt @@ -9,6 +9,7 @@ data class NotificationSnapshot( val packageName: String, val textContents: String?, val hasImage: Boolean, + val isRoutine: Boolean, ) object NotificationContents { @@ -36,6 +37,8 @@ object NotificationContents { hasImage = sbn.notification.extras?.let { it.containsKey(Notification.EXTRA_PICTURE) || it.containsKey(Notification.EXTRA_PICTURE_ICON) } == true, + isRoutine = sbn.notification.extras?.getBoolean(Notification.EXTRA_SHOW_CHRONOMETER, false) == true || + sbn.notification.extras?.containsKey(Notification.EXTRA_PROGRESS) == true, ) private fun CharSequence.addTo(parts: MutableSet) { diff --git a/app/src/main/java/se/ajpanton/notificationlog/settings/LoggingRuleStore.kt b/app/src/main/java/se/ajpanton/notificationlog/settings/LoggingRuleStore.kt index fb72eeb..9ad8ce7 100644 --- a/app/src/main/java/se/ajpanton/notificationlog/settings/LoggingRuleStore.kt +++ b/app/src/main/java/se/ajpanton/notificationlog/settings/LoggingRuleStore.kt @@ -31,6 +31,11 @@ class LoggingRuleStore(context: Context) { } } + fun copy(from: LoggingType, targets: Set) { + val source = ruleFor(from) + targets.filterNot { it == from }.forEach { save(it, source.copy(selectedPackages = source.selectedPackages.toSet())) } + } + private fun key(type: LoggingType, suffix: String) = "${type.name.lowercase()}.$suffix" private companion object { diff --git a/app/src/test/java/se/ajpanton/notificationlog/settings/LoggingRuleTest.kt b/app/src/test/java/se/ajpanton/notificationlog/settings/LoggingRuleTest.kt new file mode 100644 index 0000000..d8a9033 --- /dev/null +++ b/app/src/test/java/se/ajpanton/notificationlog/settings/LoggingRuleTest.kt @@ -0,0 +1,10 @@ +package se.ajpanton.notificationlog.settings + +import org.junit.Assert.assertTrue +import org.junit.Test + +class LoggingRuleTest { + @Test fun `routine updates default to ignored`() { + assertTrue(LoggingRule().ignoreRoutineUpdates) + } +}