From 712063f5d273060af8999f72f2be49f3766a671f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 4 Apr 2024 23:05:58 -0400 Subject: [PATCH] Avoids double notifications. --- .../amethyst/model/LocalCache.kt | 4 ++++ .../EventNotificationConsumer.kt | 20 ++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 313b0936e..399974ce7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -2306,6 +2306,10 @@ object LocalCache { e.printStackTrace() } } + + fun hasConsumed(notificationEvent: Event): Boolean { + return notes.containsKey(notificationEvent.id) + } } @Stable diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt index 2a273d1c7..8739fedfd 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt @@ -64,15 +64,17 @@ class EventNotificationConsumer(private val applicationContext: Context) { account: Account, ) { pushWrappedEvent.cachedGift(account.signer) { notificationEvent -> - LocalCache.justConsume(notificationEvent, null) - - unwrapAndConsume(notificationEvent, account) { innerEvent -> - if (innerEvent is PrivateDmEvent) { - notify(innerEvent, account) - } else if (innerEvent is LnZapEvent) { - notify(innerEvent, account) - } else if (innerEvent is ChatMessageEvent) { - notify(innerEvent, account) + if (!LocalCache.hasConsumed(notificationEvent) && LocalCache.justVerify(notificationEvent)) { + unwrapAndConsume(notificationEvent, account) { innerEvent -> + if (!LocalCache.hasConsumed(innerEvent)) { + if (innerEvent is PrivateDmEvent) { + notify(innerEvent, account) + } else if (innerEvent is LnZapEvent) { + notify(innerEvent, account) + } else if (innerEvent is ChatMessageEvent) { + notify(innerEvent, account) + } + } } } }