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 19030c9a9..a92fa6138 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -1822,17 +1822,41 @@ class Account( if (!isWriteable()) return val oldList = oldBookmarkState.getBookmarkList() ?: return - val publicBookmarks = oldList.publicBookmarks() - val privateBookmarks = oldList.privateBookmarks(signer) ?: emptyList() + val oldPublic = oldList.publicBookmarks() + val oldPrivate = oldList.privateBookmarks(signer) ?: emptyList() - if (publicBookmarks.isEmpty() && privateBookmarks.isEmpty()) return + if (oldPublic.isEmpty() && oldPrivate.isEmpty()) return + + val existingNewList = bookmarkState.getBookmarkList() val newEvent = - BookmarkListEvent.create( - publicBookmarks = publicBookmarks, - privateBookmarks = privateBookmarks, - signer = signer, - ) + if (existingNewList != null) { + val existingPublic = existingNewList.publicBookmarks() + val existingPrivate = existingNewList.privateBookmarks(signer) ?: emptyList() + + val existingPublicIds = existingPublic.map { it.toTagIdOnly().toList() }.toSet() + val existingPrivateIds = existingPrivate.map { it.toTagIdOnly().toList() }.toSet() + + val newPublic = oldPublic.filter { it.toTagIdOnly().toList() !in existingPublicIds } + val newPrivate = oldPrivate.filter { it.toTagIdOnly().toList() !in existingPrivateIds } + + if (newPublic.isEmpty() && newPrivate.isEmpty()) return + + val mergedPublic = existingPublic + newPublic + val mergedPrivate = existingPrivate + newPrivate + + BookmarkListEvent.create( + publicBookmarks = mergedPublic, + privateBookmarks = mergedPrivate, + signer = signer, + ) + } else { + BookmarkListEvent.create( + publicBookmarks = oldPublic, + privateBookmarks = oldPrivate, + signer = signer, + ) + } sendMyPublicAndPrivateOutbox(newEvent) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index fa616af96..b948f67cb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -581,7 +581,6 @@ object LocalCache : ILocalCache, ICacheProvider { return false } - fun consumeRegularEvent( event: Event, relay: NormalizedRelayUrl?,