diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt index 47de281e7..5dfa266f6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt @@ -7,6 +7,7 @@ import com.vitorpamplona.amethyst.service.relays.JsonFilter import com.vitorpamplona.amethyst.service.relays.TypedFilter import com.vitorpamplona.quartz.events.MetadataEvent import com.vitorpamplona.quartz.events.ReportEvent +import com.vitorpamplona.quartz.events.StatusEvent object NostrSingleUserDataSource : NostrDataSource("SingleUserFeed") { var usersToWatch = setOf() @@ -26,6 +27,21 @@ object NostrSingleUserDataSource : NostrDataSource("SingleUserFeed") { } } + fun createUserStatusFilter(): List? { + if (usersToWatch.isEmpty()) return null + + return usersToWatch.map { + TypedFilter( + types = COMMON_FEED_TYPES, + filter = JsonFilter( + kinds = listOf(StatusEvent.kind), + authors = listOf(it.pubkeyHex), + since = it.latestEOSEs + ) + ) + } + } + fun createUserReportFilter(): List? { if (usersToWatch.isEmpty()) return null @@ -59,8 +75,8 @@ object NostrSingleUserDataSource : NostrDataSource("SingleUserFeed") { val userChannelOnce = requestNewChannel() override fun updateChannelFilters() { - userChannel.typedFilters = listOfNotNull(createUserFilter()).flatten().ifEmpty { null } - userChannelOnce.typedFilters = listOfNotNull(createUserReportFilter()).flatten().ifEmpty { null } + userChannel.typedFilters = listOfNotNull(createUserReportFilter(), createUserStatusFilter()).flatten().ifEmpty { null } + userChannelOnce.typedFilters = listOfNotNull(createUserFilter()).flatten().ifEmpty { null } } fun add(user: User) {