Merge pull request #860 from believethehype/NIP90-ContentDiscovery

Fix order of events, use proper event content parsing
This commit is contained in:
Vitor Pamplona
2024-05-16 08:58:54 -04:00
committed by GitHub
2 changed files with 32 additions and 36 deletions

View File

@@ -63,14 +63,12 @@ open class NIP90ContentDiscoveryFilter(
var eventContent = note.event?.content() var eventContent = note.event?.content()
var collection: HashSet<Note> = hashSetOf() var collection: MutableSet<Note> = mutableSetOf()
val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
var json = mapper.readValue(eventContent, Array::class.java) var etags = mapper.readValue(eventContent, List::class.java)
for (element in json) { for (element in etags) {
// var test = mapper.readValue(element.toString(), Array::class.java) var tag = mapper.readValue(mapper.writeValueAsString(element), Array::class.java)
// TODO. This is ugly. how to Kotlin? val note = LocalCache.checkGetOrCreateNote(tag[1].toString())
var id = element.toString().trimStart('[').trimStart('e').trimStart(',').trimEnd(']').trimStart().trimEnd()
var note = LocalCache.checkGetOrCreateNote(id)
if (note != null) { if (note != null) {
collection.add(note) collection.add(note)
} }
@@ -78,7 +76,7 @@ open class NIP90ContentDiscoveryFilter(
return collection.toList() return collection.toList()
} else { } else {
return sort(notes) return listOf()
} }
} }
@@ -110,24 +108,21 @@ open class NIP90ContentDiscoveryFilter(
var note = sorted.first() var note = sorted.first()
var eventContent = note.event?.content() var eventContent = note.event?.content()
println(eventContent) // println(eventContent)
val collection: HashSet<Note> = hashSetOf() val collection: MutableSet<Note> = mutableSetOf()
val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
var json = mapper.readValue(eventContent, Array::class.java) var etags = mapper.readValue(eventContent, Array::class.java)
for (element in json) { for (element in etags) {
// var test = mapper.readValue(element.toString(), Array::class.java) var tag = mapper.readValue(mapper.writeValueAsString(element), Array::class.java)
// TODO. This is ugly. how to Kotlin? val note = LocalCache.checkGetOrCreateNote(tag[1].toString())
var id = element.toString().trimStart('[').trimStart('e').trimStart(',').trimEnd(']').trimStart().trimEnd()
val note = LocalCache.checkGetOrCreateNote(id)
if (note != null) { if (note != null) {
collection.add(note) collection.add(note)
} }
} }
return collection return collection
} else { } else {
return notes return hashSetOf()
} }
} }

View File

@@ -122,26 +122,27 @@ fun RenderNostrNIP90ContentDiscoveryScreen(
thread.join() thread.join()
} }
// TODO 2 Get the latest event from the statusFeedViewModel // TODO this shows the status but there might be a better way
// 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
var dvmStatus = "DVM is processing..." 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()) { thread.start()
statusFeedViewModel.localFilter.feed()[0].event?.let { Text(text = it.content()) } thread.join()
} else {
Text(text = "Nah")
}
DVMStatusView(
statusFeedViewModel,
null,
enablePullRefresh = false,
accountViewModel = accountViewModel,
nav = nav,
)*/
// Text(text = dvminfo)
HorizontalPager(state = pagerState) { HorizontalPager(state = pagerState) {
RefresheableBox(resultFeedViewModel, false) { RefresheableBox(resultFeedViewModel, false) {