mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
Address review feedback: keep the incrementally-maintained, created_at-sorted structure (a feed must stay sorted like a relay) instead of re-sorting a hash map on every emission. The root cause is unchanged: there is one Note instance per id/address (LocalCache owns creation), but a note's sort key is mutable — a newer replaceable event swaps the event on the SAME AddressableNote instance, changing created_at in place. A sorted set ordered on that live value corrupts: the moved node leaves the add()/remove() search path, so the same instance is inserted twice and the emitted list carries a duplicate idHex, crashing the App Recommendations LazyColumn (keyed on idHex). Fix: snapshot the sort key into an immutable Entry when the note first enters, order a ConcurrentSkipListSet on that snapshot (never read live again), and index entries by the stable idHex (ConcurrentHashMap + putIfAbsent) so membership stays unique and removal is reliable regardless of later created_at changes. Ordering and "new versions do not update the list" are preserved. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ah1aCniyjnzc27x4pwq2Df