kopia lustrzana https://github.com/vitorpamplona/amethyst
61 wiersze
1.9 KiB
Kotlin
61 wiersze
1.9 KiB
Kotlin
package com.vitorpamplona.amethyst.service
|
|
|
|
import com.vitorpamplona.amethyst.model.Account
|
|
import com.vitorpamplona.amethyst.model.LocalCache
|
|
import com.vitorpamplona.amethyst.model.User
|
|
import com.vitorpamplona.amethyst.service.model.PrivateDmEvent
|
|
import com.vitorpamplona.amethyst.service.relays.FeedType
|
|
import com.vitorpamplona.amethyst.service.relays.JsonFilter
|
|
import com.vitorpamplona.amethyst.service.relays.TypedFilter
|
|
|
|
object NostrChatroomDataSource : NostrDataSource("ChatroomFeed") {
|
|
lateinit var account: Account
|
|
var withUser: User? = null
|
|
|
|
fun loadMessagesBetween(accountIn: Account, userId: String) {
|
|
account = accountIn
|
|
withUser = LocalCache.users[userId]
|
|
resetFilters()
|
|
}
|
|
|
|
fun createMessagesToMeFilter(): TypedFilter? {
|
|
val myPeer = withUser
|
|
|
|
return if (myPeer != null) {
|
|
TypedFilter(
|
|
types = setOf(FeedType.PRIVATE_DMS),
|
|
filter = JsonFilter(
|
|
kinds = listOf(PrivateDmEvent.kind),
|
|
authors = listOf(myPeer.pubkeyHex),
|
|
tags = mapOf("p" to listOf(account.userProfile().pubkeyHex))
|
|
)
|
|
)
|
|
} else {
|
|
null
|
|
}
|
|
}
|
|
|
|
fun createMessagesFromMeFilter(): TypedFilter? {
|
|
val myPeer = withUser
|
|
|
|
return if (myPeer != null) {
|
|
TypedFilter(
|
|
types = setOf(FeedType.PRIVATE_DMS),
|
|
filter = JsonFilter(
|
|
kinds = listOf(PrivateDmEvent.kind),
|
|
authors = listOf(account.userProfile().pubkeyHex),
|
|
tags = mapOf("p" to listOf(myPeer.pubkeyHex))
|
|
)
|
|
)
|
|
} else {
|
|
null
|
|
}
|
|
}
|
|
|
|
val inandoutChannel = requestNewChannel()
|
|
|
|
override fun updateChannelFilters() {
|
|
inandoutChannel.typedFilters = listOfNotNull(createMessagesToMeFilter(), createMessagesFromMeFilter()).ifEmpty { null }
|
|
}
|
|
}
|