2023-03-15 21:02:49 +00:00
|
|
|
package com.vitorpamplona.amethyst.service
|
|
|
|
|
2023-04-24 22:51:57 +00:00
|
|
|
import com.vitorpamplona.amethyst.service.relays.COMMON_FEED_TYPES
|
2023-03-15 21:02:49 +00:00
|
|
|
import com.vitorpamplona.amethyst.service.relays.JsonFilter
|
|
|
|
import com.vitorpamplona.amethyst.service.relays.TypedFilter
|
2023-08-16 21:58:25 +00:00
|
|
|
import com.vitorpamplona.quartz.events.AudioTrackEvent
|
|
|
|
import com.vitorpamplona.quartz.events.ChannelMessageEvent
|
|
|
|
import com.vitorpamplona.quartz.events.ClassifiedsEvent
|
|
|
|
import com.vitorpamplona.quartz.events.HighlightEvent
|
|
|
|
import com.vitorpamplona.quartz.events.LiveActivitiesChatMessageEvent
|
|
|
|
import com.vitorpamplona.quartz.events.LongTextNoteEvent
|
|
|
|
import com.vitorpamplona.quartz.events.PollNoteEvent
|
|
|
|
import com.vitorpamplona.quartz.events.TextNoteEvent
|
2023-03-15 21:02:49 +00:00
|
|
|
|
|
|
|
object NostrHashtagDataSource : NostrDataSource("SingleHashtagFeed") {
|
|
|
|
private var hashtagToWatch: String? = null
|
|
|
|
|
|
|
|
fun createLoadHashtagFilter(): TypedFilter? {
|
|
|
|
val hashToLoad = hashtagToWatch ?: return null
|
|
|
|
|
|
|
|
return TypedFilter(
|
2023-04-24 22:51:57 +00:00
|
|
|
types = COMMON_FEED_TYPES,
|
2023-03-15 21:02:49 +00:00
|
|
|
filter = JsonFilter(
|
2023-04-20 14:54:35 +00:00
|
|
|
tags = mapOf(
|
|
|
|
"t" to listOf(
|
|
|
|
hashToLoad,
|
|
|
|
hashToLoad.lowercase(),
|
|
|
|
hashToLoad.uppercase(),
|
|
|
|
hashToLoad.capitalize()
|
|
|
|
)
|
|
|
|
),
|
2023-07-30 20:39:12 +00:00
|
|
|
kinds = listOf(TextNoteEvent.kind, ChannelMessageEvent.kind, LongTextNoteEvent.kind, PollNoteEvent.kind, LiveActivitiesChatMessageEvent.kind, ClassifiedsEvent.kind, HighlightEvent.kind, AudioTrackEvent.kind),
|
2023-03-15 21:02:49 +00:00
|
|
|
limit = 200
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
val loadHashtagChannel = requestNewChannel()
|
|
|
|
|
|
|
|
override fun updateChannelFilters() {
|
|
|
|
loadHashtagChannel.typedFilters = listOfNotNull(createLoadHashtagFilter()).ifEmpty { null }
|
|
|
|
}
|
|
|
|
|
|
|
|
fun loadHashtag(tag: String?) {
|
|
|
|
hashtagToWatch = tag
|
|
|
|
|
|
|
|
invalidateFilters()
|
|
|
|
}
|
|
|
|
}
|