Avoids breaking urls and invoices when cutting an expandable content

pull/287/head
Vitor Pamplona 2023-03-15 13:13:41 -04:00
rodzic 4fa7aa54a8
commit a53bb53c12
1 zmienionych plików z 6 dodań i 8 usunięć

Wyświetl plik

@ -26,7 +26,6 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.navigation.NavController import androidx.navigation.NavController
import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.service.lnurl.LnInvoiceUtil
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
const val SHORT_TEXT_LENGTH = 350 const val SHORT_TEXT_LENGTH = 350
@ -43,15 +42,14 @@ fun ExpandableRichTextViewer(
) { ) {
var showFullText by remember { mutableStateOf(false) } var showFullText by remember { mutableStateOf(false) }
// Cuts the text in the first space after 350
val firstSpaceAfterCut = content.indexOf(' ', SHORT_TEXT_LENGTH)
val whereToCut = if (firstSpaceAfterCut < 0) SHORT_TEXT_LENGTH else firstSpaceAfterCut
val text = if (showFullText) { val text = if (showFullText) {
content content
} else { } else {
val (lnStart, lnEnd) = LnInvoiceUtil.locateInvoice(content) content.take(whereToCut)
if (lnStart < SHORT_TEXT_LENGTH && lnEnd > 0) {
content.take(lnEnd)
} else {
content.take(SHORT_TEXT_LENGTH)
}
} }
Box(contentAlignment = Alignment.BottomCenter) { Box(contentAlignment = Alignment.BottomCenter) {
@ -67,7 +65,7 @@ fun ExpandableRichTextViewer(
) )
// } // }
if (content.length > 350 && !showFullText) { if (content.length > whereToCut && !showFullText) {
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center, horizontalArrangement = Arrangement.Center,