diff --git a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt index f561afb53..809e39c2d 100644 --- a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt +++ b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt @@ -132,7 +132,18 @@ class LongTextNoteEvent( fun summary() = tags.firstNotNullOfOrNull(SummaryTag::parse) - override fun publishedAt() = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + override fun publishedAt(): Long? { + val publishedAt = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + + if (publishedAt == null) return null + + // removes posts in the future. + return if (publishedAt <= createdAt) { + publishedAt + } else { + null + } + } companion object { const val KIND = 30023 diff --git a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip54Wiki/WikiNoteEvent.kt b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip54Wiki/WikiNoteEvent.kt index e35cbafef..a33a6c2ad 100644 --- a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip54Wiki/WikiNoteEvent.kt +++ b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip54Wiki/WikiNoteEvent.kt @@ -46,6 +46,8 @@ import com.vitorpamplona.quartz.nip19Bech32.eventHints import com.vitorpamplona.quartz.nip19Bech32.eventIds import com.vitorpamplona.quartz.nip19Bech32.pubKeyHints import com.vitorpamplona.quartz.nip19Bech32.pubKeys +import com.vitorpamplona.quartz.nip23LongContent.tags.PublishedAtTag +import com.vitorpamplona.quartz.nip23LongContent.tags.PublishedAtTag.Companion.parse import com.vitorpamplona.quartz.nip31Alts.AltTag import com.vitorpamplona.quartz.nip50Search.SearchableEvent import com.vitorpamplona.quartz.utils.TimeUtils @@ -129,12 +131,18 @@ class WikiNoteEvent( fun image() = tags.firstOrNull { it.size > 1 && it[0] == "image" }?.get(1) - override fun publishedAt() = - try { - tags.firstOrNull { it.size > 1 && it[0] == "published_at" }?.get(1)?.toLongOrNull() - } catch (_: Exception) { + override fun publishedAt(): Long? { + val publishedAt = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + + if (publishedAt == null) return null + + // removes posts in the future. + return if (publishedAt <= createdAt) { + publishedAt + } else { null } + } companion object { const val KIND = 30818 diff --git a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip71Video/ReplaceableVideoEvent.kt b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip71Video/ReplaceableVideoEvent.kt index f57e4cc43..645eb87a5 100644 --- a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip71Video/ReplaceableVideoEvent.kt +++ b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip71Video/ReplaceableVideoEvent.kt @@ -53,7 +53,18 @@ abstract class ReplaceableVideoEvent( override fun title() = tags.firstNotNullOfOrNull(TitleTag::parse) - override fun publishedAt() = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + override fun publishedAt(): Long? { + val publishedAt = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + + if (publishedAt == null) return null + + // removes posts in the future. + return if (publishedAt <= createdAt) { + publishedAt + } else { + null + } + } override fun duration() = tags.firstNotNullOfOrNull(DurationTag::parse) diff --git a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip89AppHandlers/definition/AppDefinitionEvent.kt b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip89AppHandlers/definition/AppDefinitionEvent.kt index b6bee3c05..b025dc79a 100644 --- a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip89AppHandlers/definition/AppDefinitionEvent.kt +++ b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip89AppHandlers/definition/AppDefinitionEvent.kt @@ -79,7 +79,18 @@ class AppDefinitionEvent( fun includeKind(kind: Int) = tags.isTaggedKind(kind) - override fun publishedAt() = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + override fun publishedAt(): Long? { + val publishedAt = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + + if (publishedAt == null) return null + + // removes posts in the future. + return if (publishedAt <= createdAt) { + publishedAt + } else { + null + } + } companion object { const val KIND = 31990 diff --git a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt index b0222fca9..6e80ba713 100644 --- a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt +++ b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt @@ -70,7 +70,18 @@ class ClassifiedsEvent( fun location() = tags.firstNotNullOfOrNull(LocationTag::parse) - override fun publishedAt() = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + override fun publishedAt(): Long? { + val publishedAt = tags.firstNotNullOfOrNull(PublishedAtTag::parse) + + if (publishedAt == null) return null + + // removes posts in the future. + return if (publishedAt <= createdAt) { + publishedAt + } else { + null + } + } fun categories() = tags.hashtags()