From dffed6e78f04770b0ad48167ac7a661641a114ee Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 14 Jul 2023 18:52:11 -0400 Subject: [PATCH] Moves synchronized Zap allocation to after checking if the zap already exists for this user. --- .../com/vitorpamplona/amethyst/model/Note.kt | 52 +++++++++++++++---- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt index 786e68353..33d4d2734 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt @@ -212,26 +212,58 @@ open class Note(val idHex: String) { } @Synchronized + private fun innerAddZap(zapRequest: Note, zap: Note?): Boolean { + if (zapRequest !in zaps.keys) { + zaps = zaps + Pair(zapRequest, zap) + return true + } else if (zaps[zapRequest] == null) { + zaps = zaps + Pair(zapRequest, zap) + return true + } + + return false + } + fun addZap(zapRequest: Note, zap: Note?) { checkNotInMainThread() if (zapRequest !in zaps.keys) { - zaps = zaps + Pair(zapRequest, zap) - liveSet?.zaps?.invalidateData() - } else if (zapRequest in zaps.keys && zaps[zapRequest] == null) { - zaps = zaps + Pair(zapRequest, zap) - liveSet?.zaps?.invalidateData() + val inserted = innerAddZap(zapRequest, zap) + if (inserted) { + liveSet?.zaps?.invalidateData() + } + } else if (zaps[zapRequest] == null) { + val inserted = innerAddZap(zapRequest, zap) + if (inserted) { + liveSet?.zaps?.invalidateData() + } } } @Synchronized + private fun innerAddZapPayment(zapPaymentRequest: Note, zapPayment: Note?): Boolean { + if (zapPaymentRequest !in zapPayments.keys) { + zapPayments = zapPayments + Pair(zapPaymentRequest, zapPayment) + return true + } else if (zapPayments[zapPaymentRequest] == null) { + zapPayments = zapPayments + Pair(zapPaymentRequest, zapPayment) + return true + } + + return false + } + fun addZapPayment(zapPaymentRequest: Note, zapPayment: Note?) { checkNotInMainThread() if (zapPaymentRequest !in zapPayments.keys) { - zapPayments = zapPayments + Pair(zapPaymentRequest, zapPayment) - liveSet?.zaps?.invalidateData() - } else if (zapPaymentRequest in zapPayments.keys && zapPayments[zapPaymentRequest] == null) { - zapPayments = zapPayments + Pair(zapPaymentRequest, zapPayment) - liveSet?.zaps?.invalidateData() + val inserted = innerAddZapPayment(zapPaymentRequest, zapPayment) + if (inserted) { + liveSet?.zaps?.invalidateData() + } + } else if (zapPayments[zapPaymentRequest] == null) { + val inserted = innerAddZapPayment(zapPaymentRequest, zapPayment) + if (inserted) { + liveSet?.zaps?.invalidateData() + } } }