Avoids decrypting existing Nostr events just to add the relay into the relay list.
This commit is contained in:
@@ -1607,7 +1607,7 @@ object LocalCache {
|
|||||||
refreshObservers(note)
|
refreshObservers(note)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun consume(
|
fun consume(
|
||||||
event: SealedGossipEvent,
|
event: SealedGossipEvent,
|
||||||
relay: Relay?,
|
relay: Relay?,
|
||||||
) {
|
) {
|
||||||
@@ -2114,7 +2114,7 @@ object LocalCache {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun consume(
|
fun consume(
|
||||||
event: DraftEvent,
|
event: DraftEvent,
|
||||||
relay: Relay?,
|
relay: Relay?,
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -268,49 +268,70 @@ object NostrAccountDataSource : NostrDataSource("AccountData") {
|
|||||||
// Avoid decrypting over and over again if the event already exist.
|
// Avoid decrypting over and over again if the event already exist.
|
||||||
|
|
||||||
if (!event.isDeleted()) {
|
if (!event.isDeleted()) {
|
||||||
val note = LocalCache.getNoteIfExists(event.id)
|
val note = LocalCache.getAddressableNoteIfExists(event.addressTag())
|
||||||
if (note?.event != null && relay.brief in note.relays) return
|
val noteEvent = note?.event
|
||||||
|
if (noteEvent != null) {
|
||||||
|
if (event.createdAt > noteEvent.createdAt() || relay.brief !in note.relays) {
|
||||||
|
LocalCache.consume(event, relay)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// decrypts
|
||||||
|
event.cachedDraft(account.signer) {}
|
||||||
|
|
||||||
// decrypts
|
LocalCache.justConsume(event, relay)
|
||||||
event.cachedDraft(account.signer) {}
|
}
|
||||||
|
|
||||||
LocalCache.justConsume(event, relay)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is GiftWrapEvent -> {
|
is GiftWrapEvent -> {
|
||||||
// Avoid decrypting over and over again if the event already exist.
|
// Avoid decrypting over and over again if the event already exist.
|
||||||
val note = LocalCache.getNoteIfExists(event.id)
|
val note = LocalCache.getNoteIfExists(event.id)
|
||||||
if (note?.event != null && relay.brief in note.relays) return
|
val noteEvent = note?.event as? GiftWrapEvent
|
||||||
|
if (noteEvent != null) {
|
||||||
event.cachedGift(account.signer) { this.consume(it, relay) }
|
if (relay.brief !in note.relays) {
|
||||||
|
LocalCache.justConsume(noteEvent, relay)
|
||||||
LocalCache.justConsume(event, relay)
|
noteEvent.cachedGift(account.signer) {
|
||||||
|
this.consume(it, relay)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// new event
|
||||||
|
event.cachedGift(account.signer) { this.consume(it, relay) }
|
||||||
|
LocalCache.justConsume(event, relay)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is SealedGossipEvent -> {
|
is SealedGossipEvent -> {
|
||||||
// Avoid decrypting over and over again if the event already exist.
|
// Avoid decrypting over and over again if the event already exist.
|
||||||
val note = LocalCache.getNoteIfExists(event.id)
|
val note = LocalCache.getNoteIfExists(event.id)
|
||||||
if (note?.event != null && relay.brief in note.relays) return
|
val noteEvent = note?.event as? SealedGossipEvent
|
||||||
|
if (noteEvent != null) {
|
||||||
event.cachedGossip(account.signer) { LocalCache.justConsume(it, relay) }
|
if (relay.brief !in note.relays) {
|
||||||
|
// adds the relay to seal and inner chat
|
||||||
LocalCache.justConsume(event, relay)
|
LocalCache.consume(noteEvent, relay)
|
||||||
|
noteEvent.cachedGossip(account.signer) {
|
||||||
|
LocalCache.justConsume(it, relay)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// new event
|
||||||
|
event.cachedGossip(account.signer) { LocalCache.justConsume(it, relay) }
|
||||||
|
LocalCache.justConsume(event, relay)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is LnZapEvent -> {
|
is LnZapEvent -> {
|
||||||
// Avoid decrypting over and over again if the event already exist.
|
// Avoid decrypting over and over again if the event already exist.
|
||||||
val note = LocalCache.getNoteIfExists(event.id)
|
val note = LocalCache.getNoteIfExists(event.id)
|
||||||
|
if (note?.event == null) {
|
||||||
if (note?.event != null && relay.brief in note.relays) return
|
event.zapRequest?.let {
|
||||||
|
if (it.isPrivateZap()) {
|
||||||
event.zapRequest?.let {
|
it.decryptPrivateZap(account.signer) {}
|
||||||
if (it.isPrivateZap()) {
|
}
|
||||||
it.decryptPrivateZap(account.signer) {}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
LocalCache.justConsume(event, relay)
|
LocalCache.justConsume(event, relay)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user