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 collection: HashSet<Note> = hashSetOf()
var collection: MutableSet<Note> = 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<Note> = hashSetOf()
val collection: MutableSet<Note> = 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()
}
}

View File

@@ -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) {