From bd7a4a83728c5efb724ba1d415293e5c51079509 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 25 Jan 2023 19:09:18 -0300 Subject: [PATCH] Concurrent modification exception bugfix --- .../amethyst/service/NostrThreadDataSource.kt | 11 ++++++++--- .../amethyst/ui/screen/loggedIn/HomeScreen.kt | 2 -- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrThreadDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrThreadDataSource.kt index 81cd6bb03..5447b7458 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrThreadDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrThreadDataSource.kt @@ -25,8 +25,11 @@ object NostrThreadDataSource: NostrDataSource("SingleThreadFeed") { } fun createLoadEventsIfNotLoadedFilter(): JsonFilter? { - val eventsToLoad = eventsToWatch - .map { LocalCache.notes[it] } + val nodes = synchronized(eventsToWatch) { + eventsToWatch.map { LocalCache.notes[it] } + } + + val eventsToLoad = nodes .filterNotNull() .filter { it.event == null } .map { it.idHex.substring(0, 8) } @@ -85,7 +88,9 @@ object NostrThreadDataSource: NostrDataSource("SingleThreadFeed") { thread.add(note) threadSet.add(note) - note.replies.forEach { + synchronized(note.replies) { + note.replies.toList() + }.forEach { loadDown(it, thread, threadSet) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt index 632a3fcb2..4401126c2 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt @@ -79,8 +79,6 @@ fun HomeScreen(accountViewModel: AccountViewModel, navController: NavController) 1 -> FeedView(feedViewModelReplies, accountViewModel, navController) } } - - } } } \ No newline at end of file