diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/HashtagIcon.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/HashtagIcon.kt new file mode 100644 index 000000000..e63e6843c --- /dev/null +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/HashtagIcon.kt @@ -0,0 +1,15 @@ +package com.vitorpamplona.amethyst.model + +import androidx.compose.ui.graphics.Color +import com.vitorpamplona.amethyst.R +fun checkForHashtagWithIcon(tag: String): HashtagIcon? { + if (tag.lowercase() == "bitcoin" || tag.lowercase() == "btc") { + return HashtagIcon(R.drawable.ht_btc, "Bitcoin", Color(0xFFf2A900)) + } + return null +} +class HashtagIcon( + val icon: Int, + val description: String, + val color: Color +) 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 29681a8a6..345cb6afa 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 @@ -1,39 +1,49 @@ package com.vitorpamplona.amethyst.ui.components import android.util.Patterns +import androidx.compose.animation.VectorConverter import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.ClickableText +import androidx.compose.material.Icon import androidx.compose.material.LocalTextStyle import androidx.compose.material.MaterialTheme import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Image +import androidx.compose.material.icons.filled.MoreVert import androidx.compose.runtime.Composable import androidx.compose.runtime.livedata.observeAsState +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.graphics.compositeOver +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.style.TextDirection +import androidx.compose.ui.text.toLowerCase import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController +import coil.ImageLoader import com.google.accompanist.flowlayout.FlowRow import com.halilibo.richtext.markdown.Markdown import com.halilibo.richtext.markdown.MarkdownParseOptions import com.halilibo.richtext.ui.RichTextStyle import com.halilibo.richtext.ui.material.MaterialRichText import com.halilibo.richtext.ui.resolveDefaults +import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.LocalCache +import com.vitorpamplona.amethyst.model.checkForHashtagWithIcon import com.vitorpamplona.amethyst.service.lnurl.LnInvoiceUtil import com.vitorpamplona.amethyst.service.nip19.Nip19 import com.vitorpamplona.amethyst.ui.note.NoteCompose @@ -230,12 +240,27 @@ fun HashTag(word: String, accountViewModel: AccountViewModel, navController: Nav null } + if (tag != null) { + var txt = AnnotatedString("#$tag ") + val HashtagIcon = checkForHashtagWithIcon(tag) + if(HashtagIcon != null){ + txt = AnnotatedString("#$tag") + } ClickableText( - text = AnnotatedString("#$tag "), + text = txt, onClick = { navController.navigate("Hashtag/$tag") }, style = LocalTextStyle.current.copy(color = MaterialTheme.colors.primary) ) + if(HashtagIcon != null){ + Icon( + painter = painterResource(HashtagIcon.icon), + HashtagIcon.description, + tint = HashtagIcon.color, + modifier = Modifier.size(20.dp).padding(0.dp,5.dp,0.dp,0.dp) + + ) + } } else { Text(text = "$word ") } diff --git a/app/src/main/res/drawable-hdpi/ht_btc.png b/app/src/main/res/drawable-hdpi/ht_btc.png new file mode 100644 index 000000000..3c9b974d8 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ht_btc.png differ diff --git a/app/src/main/res/drawable-xhdpi/ht_btc.png b/app/src/main/res/drawable-xhdpi/ht_btc.png new file mode 100644 index 000000000..3c9b974d8 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ht_btc.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ht_btc.png b/app/src/main/res/drawable-xxhdpi/ht_btc.png new file mode 100644 index 000000000..3c9b974d8 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ht_btc.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ht_btc.png b/app/src/main/res/drawable-xxxhdpi/ht_btc.png new file mode 100644 index 000000000..3c9b974d8 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ht_btc.png differ