From 817c5172b6fc479b436e5100c8a6f003f7b86215 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 20 Apr 2023 10:54:35 -0400 Subject: [PATCH] Clearing some warnings up --- .../vitorpamplona/amethyst/model/Account.kt | 4 +-- .../amethyst/model/LocalCache.kt | 5 ---- .../service/NostrHashtagDataSource.kt | 9 +++++- .../service/NostrSingleEventDataSource.kt | 5 ---- .../amethyst/service/NostrThreadDataSource.kt | 2 +- .../amethyst/ui/actions/NewMessageTagger.kt | 8 +++--- .../amethyst/ui/actions/NewPollOption.kt | 10 ------- .../amethyst/ui/actions/NewPollView.kt | 4 +-- .../amethyst/ui/actions/NewPostView.kt | 4 +-- .../amethyst/ui/components/RichTextViewer.kt | 28 ++++++++++++++----- .../amethyst/ui/components/UrlPreviewCard.kt | 8 +++--- 11 files changed, 44 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index 5a36d7297..8a0a85a82 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -728,11 +728,11 @@ class Account( fun isHidden(userHex: String) = userHex in hiddenUsers || userHex in transientHiddenUsers fun followingKeySet(): Set { - return userProfile().cachedFollowingKeySet() ?: emptySet() + return userProfile().cachedFollowingKeySet() } fun followingTagSet(): Set { - return userProfile().cachedFollowingTagSet() ?: emptySet() + return userProfile().cachedFollowingTagSet() } fun isAcceptable(user: User): Boolean { 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 ee4636288..41539afa1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -700,11 +700,6 @@ object LocalCache { notes.remove(it.idHex) // Doesn't need to clean up the replies and mentions.. Too small to matter. - // reverts the add - val mentions = - it.event?.tags()?.filter { it.firstOrNull() == "p" }?.mapNotNull { it.getOrNull(1) } - ?.mapNotNull { checkGetOrCreateUser(it) } - // Counts the replies it.replyTo?.forEach { _ -> it.removeReply(it) 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 d3fe1e4ce..81df891f6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHashtagDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrHashtagDataSource.kt @@ -17,7 +17,14 @@ object NostrHashtagDataSource : NostrDataSource("SingleHashtagFeed") { return TypedFilter( types = FeedType.values().toSet(), filter = JsonFilter( - tags = mapOf("t" to listOf(hashToLoad, hashToLoad.lowercase(), hashToLoad.uppercase(), hashToLoad.capitalize())), + tags = mapOf( + "t" to listOf( + hashToLoad, + hashToLoad.lowercase(), + hashToLoad.uppercase(), + hashToLoad.capitalize() + ) + ), kinds = listOf(TextNoteEvent.kind, ChannelMessageEvent.kind, LongTextNoteEvent.kind), limit = 200 ) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt index 29f6cf38c..aa4e87eb5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt @@ -7,7 +7,6 @@ import com.vitorpamplona.amethyst.service.relays.EOSETime import com.vitorpamplona.amethyst.service.relays.FeedType import com.vitorpamplona.amethyst.service.relays.JsonFilter import com.vitorpamplona.amethyst.service.relays.TypedFilter -import java.util.Date object NostrSingleEventDataSource : NostrDataSource("SingleEventFeed") { private var eventsToWatch = setOf() @@ -20,8 +19,6 @@ object NostrSingleEventDataSource : NostrDataSource("SingleEventFeed") { return null } - val now = Date().time / 1000 - return addressesToWatch.mapNotNull { it.address()?.let { aTag -> TypedFilter( @@ -49,8 +46,6 @@ object NostrSingleEventDataSource : NostrDataSource("SingleEventFeed") { return null } - val now = Date().time / 1000 - return addressesToWatch.mapNotNull { it.address()?.let { aTag -> TypedFilter( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrThreadDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrThreadDataSource.kt index f1502a24a..7919354c1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrThreadDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrThreadDataSource.kt @@ -25,7 +25,7 @@ object NostrThreadDataSource : NostrDataSource("SingleThreadFeed") { ) } - val loadEventsChannel = requestNewChannel() { eoseTime, relay -> + val loadEventsChannel = requestNewChannel() { _, _ -> // Many relays operate with limits in the amount of filters. // As information comes, the filters will be rotated to get more data. invalidateFilters() diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewMessageTagger.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewMessageTagger.kt index 516ac6e52..b0d6428f4 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewMessageTagger.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewMessageTagger.kt @@ -9,21 +9,21 @@ import com.vitorpamplona.amethyst.service.nip19.Nip19 class NewMessageTagger(var channel: Channel?, var mentions: List?, var replyTos: List?, var message: String) { - open fun addUserToMentions(user: User) { + fun addUserToMentions(user: User) { mentions = if (mentions?.contains(user) == true) mentions else mentions?.plus(user) ?: listOf(user) } - open fun addNoteToReplyTos(note: Note) { + fun addNoteToReplyTos(note: Note) { note.author?.let { addUserToMentions(it) } replyTos = if (replyTos?.contains(note) == true) replyTos else replyTos?.plus(note) ?: listOf(note) } - open fun tagIndex(user: User): Int { + fun tagIndex(user: User): Int { // Postr Events assembles replies before mentions in the tag order return (if (channel != null) 1 else 0) + (replyTos?.size ?: 0) + (mentions?.indexOf(user) ?: 0) } - open fun tagIndex(note: Note): Int { + fun tagIndex(note: Note): Int { // Postr Events assembles replies before mentions in the tag order return (if (channel != null) 1 else 0) + (replyTos?.indexOf(note) ?: 0) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollOption.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollOption.kt index 876134cff..62c607638 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollOption.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollOption.kt @@ -7,7 +7,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Delete import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.tooling.preview.Preview @@ -15,15 +14,6 @@ import com.vitorpamplona.amethyst.R @Composable fun NewPollOption(pollViewModel: NewPostViewModel, optionIndex: Int) { - val colorInValid = TextFieldDefaults.outlinedTextFieldColors( - focusedBorderColor = MaterialTheme.colors.error, - unfocusedBorderColor = Color.Red - ) - val colorValid = TextFieldDefaults.outlinedTextFieldColors( - focusedBorderColor = MaterialTheme.colors.primary, - unfocusedBorderColor = MaterialTheme.colors.onSurface.copy(alpha = 0.32f) - ) - Row { val deleteIcon: @Composable (() -> Unit) = { IconButton( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollView.kt index 12977d096..a238e1285 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollView.kt @@ -116,7 +116,7 @@ fun NewPollView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n Text(stringResource(R.string.poll_heading_required)) // NewPollRecipientsField(pollViewModel, account) NewPollPrimaryDescription(pollViewModel) - pollViewModel.pollOptions.values.forEachIndexed { index, element -> + pollViewModel.pollOptions.values.forEachIndexed { index, _ -> NewPollOption(pollViewModel, index) } Button( @@ -150,7 +150,7 @@ fun NewPollView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n itemsIndexed( userSuggestions, key = { _, item -> item.pubkeyHex } - ) { index, item -> + ) { _, item -> UserLine(item, account) { pollViewModel.autocompleteWithUser(item) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt index 213573b22..35210be77 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt @@ -167,7 +167,7 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n ) if (postViewModel.wantsPoll) { - postViewModel.pollOptions.values.forEachIndexed { index, element -> + postViewModel.pollOptions.values.forEachIndexed { index, _ -> NewPollOption(postViewModel, index) } @@ -189,7 +189,7 @@ fun NewPostView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n val user = postViewModel.account?.userProfile() val lud16 = user?.info?.lnAddress() - if (lud16 != null && user != null && postViewModel.wantsInvoice) { + if (lud16 != null && postViewModel.wantsInvoice) { Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(vertical = 5.dp)) { InvoiceRequest( lud16, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt index 6a4e24272..a406e9337 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt @@ -180,7 +180,7 @@ fun RichTextViewer( navController ) } else if (hashTagsPattern.matcher(word).matches()) { - HashTag(word, accountViewModel, navController) + HashTag(word, navController) } else { Text( text = "$word ", @@ -193,8 +193,15 @@ fun RichTextViewer( val url = matcher.group(1) // url val additionalChars = matcher.group(4) ?: "" // additional chars - ClickableUrl(url, "https://$url") - Text("$additionalChars ") + if (url != null) { + ClickableUrl(url, "https://$url") + Text("$additionalChars ") + } else { + Text( + text = "$word ", + style = LocalTextStyle.current.copy(textDirection = TextDirection.Content) + ) + } } else { Text( text = "$word ", @@ -237,7 +244,7 @@ fun RichTextViewer( navController ) } else if (hashTagsPattern.matcher(word).matches()) { - HashTag(word, accountViewModel, navController) + HashTag(word, navController) } else { Text( text = "$word ", @@ -250,8 +257,15 @@ fun RichTextViewer( val url = matcher.group(1) // url val additionalChars = matcher.group(4) ?: "" // additional chars - ClickableUrl(url, "https://$url") - Text("$additionalChars ") + if (url != null) { + ClickableUrl(url, "https://$url") + Text("$additionalChars ") + } else { + Text( + text = "$word ", + style = LocalTextStyle.current.copy(textDirection = TextDirection.Content) + ) + } } else { Text( text = "$word ", @@ -328,7 +342,7 @@ fun BechLink(word: String, canPreview: Boolean, backgroundColor: Color, accountV } @Composable -fun HashTag(word: String, accountViewModel: AccountViewModel, navController: NavController) { +fun HashTag(word: String, navController: NavController) { var tagSuffixPair by remember { mutableStateOf?>(null) } LaunchedEffect(key1 = word) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/UrlPreviewCard.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/UrlPreviewCard.kt index e8453aff5..561d86ab3 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/UrlPreviewCard.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/UrlPreviewCard.kt @@ -41,24 +41,24 @@ fun UrlPreviewCard( ) ) { Column { - val url = URL(previewInfo.url) + val validatedUrl = URL(previewInfo.url) // correctly treating relative images val imageUrl = if (previewInfo.image.startsWith("/")) { - URL(url, previewInfo.image).toString() + URL(validatedUrl, previewInfo.image).toString() } else { previewInfo.image } AsyncImage( model = imageUrl, - contentDescription = stringResource(R.string.preview_card_image_for, url), + contentDescription = stringResource(R.string.preview_card_image_for, validatedUrl), contentScale = ContentScale.FillWidth, modifier = Modifier.fillMaxWidth() ) Text( - text = url.host, + text = validatedUrl.host, style = MaterialTheme.typography.caption, modifier = Modifier .fillMaxWidth()