diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/NIP90ContentDiscoveryFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/NIP90ContentDiscoveryFilter.kt index 82398916b..0fc4cc2a9 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/NIP90ContentDiscoveryFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/NIP90ContentDiscoveryFilter.kt @@ -63,14 +63,12 @@ open class NIP90ContentDiscoveryFilter( var eventContent = note.event?.content() - var collection: HashSet = hashSetOf() + var collection: MutableSet = mutableSetOf() val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - var json = mapper.readValue(eventContent, Array::class.java) - for (element in json) { - // var test = mapper.readValue(element.toString(), Array::class.java) - // TODO. This is ugly. how to Kotlin? - var id = element.toString().trimStart('[').trimStart('e').trimStart(',').trimEnd(']').trimStart().trimEnd() - var note = LocalCache.checkGetOrCreateNote(id) + var etags = mapper.readValue(eventContent, List::class.java) + for (element in etags) { + var tag = mapper.readValue(mapper.writeValueAsString(element), Array::class.java) + val note = LocalCache.checkGetOrCreateNote(tag[1].toString()) if (note != null) { collection.add(note) } @@ -78,7 +76,7 @@ open class NIP90ContentDiscoveryFilter( return collection.toList() } else { - return sort(notes) + return listOf() } } @@ -110,24 +108,21 @@ open class NIP90ContentDiscoveryFilter( var note = sorted.first() var eventContent = note.event?.content() - println(eventContent) + // println(eventContent) - val collection: HashSet = hashSetOf() + val collection: MutableSet = mutableSetOf() val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - var json = mapper.readValue(eventContent, Array::class.java) - for (element in json) { - // var test = mapper.readValue(element.toString(), Array::class.java) - // TODO. This is ugly. how to Kotlin? - var id = element.toString().trimStart('[').trimStart('e').trimStart(',').trimEnd(']').trimStart().trimEnd() - - val note = LocalCache.checkGetOrCreateNote(id) + var etags = mapper.readValue(eventContent, Array::class.java) + for (element in etags) { + var tag = mapper.readValue(mapper.writeValueAsString(element), Array::class.java) + val note = LocalCache.checkGetOrCreateNote(tag[1].toString()) if (note != null) { collection.add(note) } } return collection } else { - return notes + return hashSetOf() } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt index 66a40016f..d2b42e677 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt @@ -122,26 +122,27 @@ fun RenderNostrNIP90ContentDiscoveryScreen( thread.join() } - // TODO 2 Get the latest event from the statusFeedViewModel - // TODO How do we extract the latest event.content (or event.status) from statusFeedViewModel - // TODO We want to update dvmStatus with the content of the latest Status event + // TODO this shows the status but there might be a better way var dvmStatus = "DVM is processing..." + val thread = + Thread { + println(dvmStatus) + while (resultFeedViewModel.localFilter.feed().isEmpty()) { + try { + if (statusFeedViewModel.localFilter.feed().isNotEmpty()) { + statusFeedViewModel.localFilter.feed()[0].event?.let { dvmStatus = it.content() } + println(dvmStatus) + break + } else { + } + } catch (e: Exception) { + e.printStackTrace() + } + } + } - /* if (statusFeedViewModel.localFilter.feed().isNotEmpty()) { - statusFeedViewModel.localFilter.feed()[0].event?.let { Text(text = it.content()) } - } else { - Text(text = "Nah") - } - - DVMStatusView( - statusFeedViewModel, - null, - enablePullRefresh = false, - accountViewModel = accountViewModel, - nav = nav, - )*/ - - // Text(text = dvminfo) + thread.start() + thread.join() HorizontalPager(state = pagerState) { RefresheableBox(resultFeedViewModel, false) {