mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-06-29 23:10:39 +02:00
Tracks where notes are coming from
This commit is contained in:
@ -19,6 +19,7 @@ import java.time.ZoneId
|
|||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
import java.util.Collections
|
import java.util.Collections
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
import com.vitorpamplona.amethyst.service.relays.Relay
|
||||||
import nostr.postr.events.ContactListEvent
|
import nostr.postr.events.ContactListEvent
|
||||||
import nostr.postr.events.DeletionEvent
|
import nostr.postr.events.DeletionEvent
|
||||||
import nostr.postr.events.Event
|
import nostr.postr.events.Event
|
||||||
@ -94,9 +95,12 @@ object LocalCache {
|
|||||||
.format(DateTimeFormatter.ofPattern("uuuu MMM d hh:mm a"))
|
.format(DateTimeFormatter.ofPattern("uuuu MMM d hh:mm a"))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun consume(event: TextNoteEvent) {
|
fun consume(event: TextNoteEvent, relay: Relay? = null) {
|
||||||
val note = getOrCreateNote(event.id.toHex())
|
val note = getOrCreateNote(event.id.toHex())
|
||||||
|
|
||||||
|
if (relay != null)
|
||||||
|
note.addRelay(relay)
|
||||||
|
|
||||||
// Already processed this event.
|
// Already processed this event.
|
||||||
if (note.event != null) return
|
if (note.event != null) return
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ import kotlinx.coroutines.Dispatchers
|
|||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import com.vitorpamplona.amethyst.service.relays.Relay
|
||||||
import nostr.postr.events.Event
|
import nostr.postr.events.Event
|
||||||
|
|
||||||
class Note(val idHex: String) {
|
class Note(val idHex: String) {
|
||||||
@ -39,6 +40,8 @@ class Note(val idHex: String) {
|
|||||||
|
|
||||||
var channel: Channel? = null
|
var channel: Channel? = null
|
||||||
|
|
||||||
|
val relays = Collections.synchronizedSet(mutableSetOf<Relay>())
|
||||||
|
|
||||||
fun loadEvent(event: Event, author: User, mentions: List<User>, replyTo: MutableList<Note>) {
|
fun loadEvent(event: Event, author: User, mentions: List<User>, replyTo: MutableList<Note>) {
|
||||||
this.event = event
|
this.event = event
|
||||||
this.author = author
|
this.author = author
|
||||||
@ -90,6 +93,11 @@ class Note(val idHex: String) {
|
|||||||
invalidateData(liveReactions)
|
invalidateData(liveReactions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun addRelay(relay: Relay) {
|
||||||
|
if (relays.add(relay))
|
||||||
|
invalidateData(liveRelays)
|
||||||
|
}
|
||||||
|
|
||||||
fun addReport(note: Note) {
|
fun addReport(note: Note) {
|
||||||
if (reports.add(note))
|
if (reports.add(note))
|
||||||
invalidateData(liveReports)
|
invalidateData(liveReports)
|
||||||
@ -126,6 +134,7 @@ class Note(val idHex: String) {
|
|||||||
val liveBoosts: NoteLiveData = NoteLiveData(this)
|
val liveBoosts: NoteLiveData = NoteLiveData(this)
|
||||||
val liveReplies: NoteLiveData = NoteLiveData(this)
|
val liveReplies: NoteLiveData = NoteLiveData(this)
|
||||||
val liveReports: NoteLiveData = NoteLiveData(this)
|
val liveReports: NoteLiveData = NoteLiveData(this)
|
||||||
|
val liveRelays: NoteLiveData = NoteLiveData(this)
|
||||||
|
|
||||||
// Refreshes observers in batches.
|
// Refreshes observers in batches.
|
||||||
var handlerWaiting = false
|
var handlerWaiting = false
|
||||||
|
@ -57,7 +57,7 @@ abstract class NostrDataSource<T>(val debugName: String) {
|
|||||||
try {
|
try {
|
||||||
when (event) {
|
when (event) {
|
||||||
is MetadataEvent -> LocalCache.consume(event)
|
is MetadataEvent -> LocalCache.consume(event)
|
||||||
is TextNoteEvent -> LocalCache.consume(event)
|
is TextNoteEvent -> LocalCache.consume(event, relay)
|
||||||
is RecommendRelayEvent -> LocalCache.consume(event)
|
is RecommendRelayEvent -> LocalCache.consume(event)
|
||||||
is ContactListEvent -> LocalCache.consume(event)
|
is ContactListEvent -> LocalCache.consume(event)
|
||||||
is PrivateDmEvent -> LocalCache.consume(event)
|
is PrivateDmEvent -> LocalCache.consume(event)
|
||||||
|
@ -259,10 +259,7 @@ fun NoteCompose(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//if (note.event !is ChannelMessageEvent) {
|
|
||||||
ReactionsRow(note, accountViewModel)
|
ReactionsRow(note, accountViewModel)
|
||||||
//}
|
|
||||||
|
|
||||||
Divider(
|
Divider(
|
||||||
modifier = Modifier.padding(top = 10.dp),
|
modifier = Modifier.padding(top = 10.dp),
|
||||||
|
Reference in New Issue
Block a user