From 1cd5845960943e81921c4a0460f7b1dc6fc06e35 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 23 May 2024 16:59:51 -0400 Subject: [PATCH] Fixes the rendering of replies on wikipages. --- .../amethyst/model/LocalCache.kt | 2 + .../service/NostrGeohashDataSource.kt | 2 + .../service/NostrHashtagDataSource.kt | 2 + .../amethyst/service/NostrHomeDataSource.kt | 5 + .../NostrSearchEventOrUserDataSource.kt | 2 + .../service/NostrUserProfileDataSource.kt | 2 + .../amethyst/ui/dal/GeoHashFeedFilter.kt | 2 + .../amethyst/ui/dal/HashtagFeedFilter.kt | 2 + .../ui/dal/HomeNewThreadFeedFilter.kt | 2 + .../ui/dal/UserProfileNewThreadFeedFilter.kt | 2 + .../amethyst/ui/note/types/Emoji.kt | 100 ------------- .../amethyst/ui/note/types/Wiki.kt | 135 ++++++++++++++++++ .../quartz/events/BaseTextNoteEvent.kt | 3 +- 13 files changed, 160 insertions(+), 101 deletions(-) create mode 100644 app/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Wiki.kt diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 19a4366b8..f3b370992 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -707,6 +707,8 @@ object LocalCache { val replyTo = computeReplyTo(event) + println("AABBCC new Wiki ${replyTo.size}") + if (event.createdAt > (note.createdAt() ?: 0)) { note.loadEvent(event, author, replyTo) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrGeohashDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrGeohashDataSource.kt index bba1e8c59..70e505287 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrGeohashDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrGeohashDataSource.kt @@ -32,6 +32,7 @@ import com.vitorpamplona.quartz.events.LiveActivitiesChatMessageEvent import com.vitorpamplona.quartz.events.LongTextNoteEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent object NostrGeohashDataSource : NostrDataSource("SingleGeoHashFeed") { private var geohashToWatch: String? = null @@ -61,6 +62,7 @@ object NostrGeohashDataSource : NostrDataSource("SingleGeoHashFeed") { HighlightEvent.KIND, AudioTrackEvent.KIND, AudioHeaderEvent.KIND, + WikiNoteEvent.KIND, ), limit = 200, ), diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHashtagDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHashtagDataSource.kt index 49f245d6a..cea761f7e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHashtagDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHashtagDataSource.kt @@ -32,6 +32,7 @@ import com.vitorpamplona.quartz.events.LiveActivitiesChatMessageEvent import com.vitorpamplona.quartz.events.LongTextNoteEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent object NostrHashtagDataSource : NostrDataSource("SingleHashtagFeed") { private var hashtagToWatch: String? = null @@ -64,6 +65,7 @@ object NostrHashtagDataSource : NostrDataSource("SingleHashtagFeed") { HighlightEvent.KIND, AudioTrackEvent.KIND, AudioHeaderEvent.KIND, + WikiNoteEvent.KIND, ), limit = 200, ), diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHomeDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHomeDataSource.kt index 82e8f08e4..21449d9a6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHomeDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHomeDataSource.kt @@ -39,6 +39,7 @@ import com.vitorpamplona.quartz.events.PinListEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.RepostEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch @@ -94,6 +95,7 @@ object NostrHomeDataSource : NostrDataSource("HomeFeed") { PinListEvent.KIND, LiveActivitiesChatMessageEvent.KIND, LiveActivitiesEvent.KIND, + WikiNoteEvent.KIND, ), authors = followSet, limit = 400, @@ -124,6 +126,7 @@ object NostrHomeDataSource : NostrDataSource("HomeFeed") { AudioHeaderEvent.KIND, AudioTrackEvent.KIND, PinListEvent.KIND, + WikiNoteEvent.KIND, ), tags = mapOf( @@ -160,6 +163,7 @@ object NostrHomeDataSource : NostrDataSource("HomeFeed") { AudioHeaderEvent.KIND, AudioTrackEvent.KIND, PinListEvent.KIND, + WikiNoteEvent.KIND, ), tags = mapOf( @@ -196,6 +200,7 @@ object NostrHomeDataSource : NostrDataSource("HomeFeed") { AudioHeaderEvent.KIND, AudioTrackEvent.KIND, PinListEvent.KIND, + WikiNoteEvent.KIND, CommunityPostApprovalEvent.KIND, ), tags = diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSearchEventOrUserDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSearchEventOrUserDataSource.kt index e7c2d66da..8d6e80fc4 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSearchEventOrUserDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSearchEventOrUserDataSource.kt @@ -49,6 +49,7 @@ import com.vitorpamplona.quartz.events.PeopleListEvent import com.vitorpamplona.quartz.events.PinListEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent import kotlin.coroutines.cancellation.CancellationException object NostrSearchEventOrUserDataSource : NostrDataSource("SearchEventFeed") { @@ -175,6 +176,7 @@ object NostrSearchEventOrUserDataSource : NostrDataSource("SearchEventFeed") { LiveActivitiesEvent.KIND, PollNoteEvent.KIND, NNSEvent.KIND, + WikiNoteEvent.KIND, ), search = mySearchString, limit = 100, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrUserProfileDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrUserProfileDataSource.kt index 2104df183..9c2db5c65 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrUserProfileDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrUserProfileDataSource.kt @@ -41,6 +41,7 @@ import com.vitorpamplona.quartz.events.PinListEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.RepostEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent object NostrUserProfileDataSource : NostrDataSource("UserProfileFeed") { var user: User? = null @@ -79,6 +80,7 @@ object NostrUserProfileDataSource : NostrDataSource("UserProfileFeed") { PinListEvent.KIND, PollNoteEvent.KIND, HighlightEvent.KIND, + WikiNoteEvent.KIND, ), authors = listOf(it.pubkeyHex), limit = 200, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/GeoHashFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/GeoHashFeedFilter.kt index a80e2d0be..e2fa72fe6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/GeoHashFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/GeoHashFeedFilter.kt @@ -29,6 +29,7 @@ import com.vitorpamplona.quartz.events.LongTextNoteEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.PrivateDmEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent class GeoHashFeedFilter(val tag: String, val account: Account) : AdditiveFeedFilter() { override fun feedKey(): String { @@ -59,6 +60,7 @@ class GeoHashFeedFilter(val tag: String, val account: Account) : AdditiveFeedFil return ( it.event is TextNoteEvent || it.event is LongTextNoteEvent || + it.event is WikiNoteEvent || it.event is ChannelMessageEvent || it.event is PrivateDmEvent || it.event is PollNoteEvent || diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HashtagFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HashtagFeedFilter.kt index 125a4c1c8..f20938fa5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HashtagFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HashtagFeedFilter.kt @@ -29,6 +29,7 @@ import com.vitorpamplona.quartz.events.LongTextNoteEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.PrivateDmEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent class HashtagFeedFilter(val tag: String, val account: Account) : AdditiveFeedFilter() { override fun feedKey(): String { @@ -59,6 +60,7 @@ class HashtagFeedFilter(val tag: String, val account: Account) : AdditiveFeedFil return ( it.event is TextNoteEvent || it.event is LongTextNoteEvent || + it.event is WikiNoteEvent || it.event is ChannelMessageEvent || it.event is PrivateDmEvent || it.event is PollNoteEvent || diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeNewThreadFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeNewThreadFeedFilter.kt index 2b67163ff..6e1f9df7e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeNewThreadFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeNewThreadFeedFilter.kt @@ -34,6 +34,7 @@ import com.vitorpamplona.quartz.events.PeopleListEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.RepostEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent class HomeNewThreadFeedFilter(val account: Account) : AdditiveFeedFilter() { override fun feedKey(): String { @@ -98,6 +99,7 @@ class HomeNewThreadFeedFilter(val account: Account) : AdditiveFeedFilter() noteEvent is RepostEvent || noteEvent is GenericRepostEvent || noteEvent is LongTextNoteEvent || + noteEvent is WikiNoteEvent || noteEvent is PollNoteEvent || noteEvent is HighlightEvent || noteEvent is AudioTrackEvent || diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt index 629cfa1ed..94dd77128 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt @@ -35,6 +35,7 @@ import com.vitorpamplona.quartz.events.LongTextNoteEvent import com.vitorpamplona.quartz.events.PollNoteEvent import com.vitorpamplona.quartz.events.RepostEvent import com.vitorpamplona.quartz.events.TextNoteEvent +import com.vitorpamplona.quartz.events.WikiNoteEvent class UserProfileNewThreadFeedFilter(val user: User, val account: Account) : AdditiveFeedFilter() { @@ -72,6 +73,7 @@ class UserProfileNewThreadFeedFilter(val user: User, val account: Account) : it.event is RepostEvent || it.event is GenericRepostEvent || it.event is LongTextNoteEvent || + it.event is WikiNoteEvent || it.event is PollNoteEvent || it.event is HighlightEvent || it.event is AudioTrackEvent || diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Emoji.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Emoji.kt index 6f4d32154..6c5a29d04 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Emoji.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Emoji.kt @@ -22,18 +22,14 @@ package com.vitorpamplona.amethyst.ui.note.types import androidx.compose.animation.Crossfade import androidx.compose.foundation.background -import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState @@ -44,10 +40,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow @@ -55,111 +48,18 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.distinctUntilChanged import androidx.lifecycle.map import coil.compose.AsyncImage -import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.components.ShowMoreButton import com.vitorpamplona.amethyst.ui.note.LoadAddressableNote import com.vitorpamplona.amethyst.ui.note.elements.AddButton -import com.vitorpamplona.amethyst.ui.note.elements.DefaultImageHeader import com.vitorpamplona.amethyst.ui.note.elements.RemoveButton import com.vitorpamplona.amethyst.ui.note.getGradient import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel -import com.vitorpamplona.amethyst.ui.theme.QuoteBorder import com.vitorpamplona.amethyst.ui.theme.Size35Modifier -import com.vitorpamplona.amethyst.ui.theme.Size5dp -import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer -import com.vitorpamplona.amethyst.ui.theme.subtleBorder import com.vitorpamplona.quartz.encoders.ATag import com.vitorpamplona.quartz.events.EmojiPackEvent import com.vitorpamplona.quartz.events.EmojiPackSelectionEvent import com.vitorpamplona.quartz.events.EmojiUrl -import com.vitorpamplona.quartz.events.WikiNoteEvent - -@Composable -fun RenderWikiContent( - note: Note, - accountViewModel: AccountViewModel, - nav: (String) -> Unit, -) { - val noteEvent = note.event as? WikiNoteEvent ?: return - - WikiNoteHeader(noteEvent, note, accountViewModel, nav) -} - -@Composable -private fun WikiNoteHeader( - noteEvent: WikiNoteEvent, - note: Note, - accountViewModel: AccountViewModel, - nav: (String) -> Unit, -) { - val title = remember(noteEvent) { noteEvent.title() } - val summary = - remember(noteEvent) { - noteEvent.summary()?.ifBlank { null } ?: noteEvent.content.take(200).ifBlank { null } - } - val image = remember(noteEvent) { noteEvent.image() } - - Row( - modifier = - Modifier - .padding(top = Size5dp) - .clip(shape = QuoteBorder) - .border( - 1.dp, - MaterialTheme.colorScheme.subtleBorder, - QuoteBorder, - ), - ) { - Column { - val automaticallyShowUrlPreview = - remember { accountViewModel.settings.showUrlPreview.value } - - if (automaticallyShowUrlPreview) { - image?.let { - AsyncImage( - model = it, - contentDescription = - stringResource( - R.string.preview_card_image_for, - it, - ), - contentScale = ContentScale.FillWidth, - modifier = Modifier.fillMaxWidth(), - ) - } ?: run { - DefaultImageHeader(note, accountViewModel) - } - } - - title?.let { - Text( - text = it, - style = MaterialTheme.typography.bodyLarge, - modifier = - Modifier - .fillMaxWidth() - .padding(start = 10.dp, end = 10.dp, top = 10.dp), - ) - } - - summary?.let { - Spacer(modifier = StdVertSpacer) - Text( - text = it, - style = MaterialTheme.typography.bodySmall, - modifier = - Modifier - .fillMaxWidth() - .padding(start = 10.dp, end = 10.dp, bottom = 10.dp), - color = Color.Gray, - maxLines = 3, - overflow = TextOverflow.Ellipsis, - ) - } - } - } -} @Composable public fun RenderEmojiPack( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Wiki.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Wiki.kt new file mode 100644 index 000000000..b40c18193 --- /dev/null +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Wiki.kt @@ -0,0 +1,135 @@ +/** + * Copyright (c) 2024 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.ui.note.types + +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import coil.compose.AsyncImage +import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.model.Note +import com.vitorpamplona.amethyst.ui.note.elements.DefaultImageHeader +import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel +import com.vitorpamplona.amethyst.ui.theme.QuoteBorder +import com.vitorpamplona.amethyst.ui.theme.Size5dp +import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer +import com.vitorpamplona.amethyst.ui.theme.subtleBorder +import com.vitorpamplona.quartz.events.WikiNoteEvent + +@Composable +fun RenderWikiContent( + note: Note, + accountViewModel: AccountViewModel, + nav: (String) -> Unit, +) { + val noteEvent = note.event as? WikiNoteEvent ?: return + + WikiNoteHeader(noteEvent, note, accountViewModel, nav) +} + +@Composable +private fun WikiNoteHeader( + noteEvent: WikiNoteEvent, + note: Note, + accountViewModel: AccountViewModel, + nav: (String) -> Unit, +) { + val title = remember(noteEvent) { noteEvent.title() } + val summary = + remember(noteEvent) { + noteEvent.summary()?.ifBlank { null } ?: noteEvent.content.take(200).ifBlank { null } + } + val image = remember(noteEvent) { noteEvent.image() } + + Row( + modifier = + Modifier + .padding(top = Size5dp) + .clip(shape = QuoteBorder) + .border( + 1.dp, + MaterialTheme.colorScheme.subtleBorder, + QuoteBorder, + ), + ) { + Column { + val automaticallyShowUrlPreview = + remember { accountViewModel.settings.showUrlPreview.value } + + if (automaticallyShowUrlPreview) { + image?.let { + AsyncImage( + model = it, + contentDescription = + stringResource( + R.string.preview_card_image_for, + it, + ), + contentScale = ContentScale.FillWidth, + modifier = Modifier.fillMaxWidth(), + ) + } ?: run { + DefaultImageHeader(note, accountViewModel) + } + } + + title?.let { + Text( + text = it, + style = MaterialTheme.typography.bodyLarge, + modifier = + Modifier + .fillMaxWidth() + .padding(start = 10.dp, end = 10.dp, top = 10.dp), + ) + } + + summary?.let { + Spacer(modifier = StdVertSpacer) + Text( + text = it, + style = MaterialTheme.typography.bodySmall, + modifier = + Modifier + .fillMaxWidth() + .padding(start = 10.dp, end = 10.dp, bottom = 10.dp), + color = Color.Gray, + maxLines = 3, + overflow = TextOverflow.Ellipsis, + ) + } + } + } +} diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/BaseTextNoteEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/BaseTextNoteEvent.kt index 33d1fa0f9..7d297eb9b 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/BaseTextNoteEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/BaseTextNoteEvent.kt @@ -194,7 +194,8 @@ open class BaseTextNoteEvent( val tagAddresses = taggedAddresses().filter { it.kind != CommunityDefinitionEvent.KIND && - it.kind != WikiNoteEvent.KIND + (kind != WikiNoteEvent.KIND || it.kind != WikiNoteEvent.KIND) + // removes forks from itself. }.map { it.toTag() } if (repliesTo.isEmpty() && tagAddresses.isEmpty()) return emptyList()