From 89638ff261c7fccb9c409c49d6efb40fc1c4c922 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 9 Aug 2024 14:35:00 -0400 Subject: [PATCH] Deletes all events in maximum chunks of 200 elements to avoid the 65KB stringified JSON limit of many relays. --- .../com/vitorpamplona/amethyst/model/Account.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index ad8e1faf6..0939c2956 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -1149,13 +1149,14 @@ class Account( fun delete(notes: List) { if (!isWriteable()) return - val myEvents = notes.filter { it.author == userProfile() } - val myNoteVersions = myEvents.mapNotNull { it.event as? Event } - + val myNoteVersions = notes.filter { it.author == userProfile() }.mapNotNull { it.event as? Event } if (myNoteVersions.isNotEmpty()) { - DeletionEvent.create(myNoteVersions, signer) { - Client.send(it) - LocalCache.justConsume(it, null) + // chunks in 200 elements to avoid going over the 65KB limit for events. + myNoteVersions.chunked(200).forEach { chunkedList -> + DeletionEvent.create(chunkedList, signer) { deletionEvent -> + Client.send(deletionEvent) + LocalCache.justConsume(deletionEvent, null) + } } } }