From 655a563f61233874da7210b0632db7087b77589a Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 21 Aug 2023 16:09:22 -0400 Subject: [PATCH] Moves community description and rules to a single Translateable text --- .../amethyst/ui/navigation/AppTopBar.kt | 8 ++- .../amethyst/ui/note/NoteCompose.kt | 55 ++++++++++--------- app/src/main/res/values/strings.xml | 1 + 3 files changed, 36 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt index 6691b02ea..b2976ada3 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt @@ -15,6 +15,8 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.AppBarDefaults import androidx.compose.material.ContentAlpha import androidx.compose.material.Divider @@ -108,6 +110,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.ShowVideoStreaming import com.vitorpamplona.amethyst.ui.screen.loggedIn.SpinnerSelectionDialog import com.vitorpamplona.amethyst.ui.theme.BottomTopHeight import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer +import com.vitorpamplona.amethyst.ui.theme.HalfVertSpacer import com.vitorpamplona.amethyst.ui.theme.HeaderPictureModifier import com.vitorpamplona.amethyst.ui.theme.Size22Modifier import com.vitorpamplona.amethyst.ui.theme.Size34dp @@ -231,7 +234,9 @@ private fun CommunityTopBar( ShortCommunityHeader(baseNote, fontWeight = FontWeight.Medium, accountViewModel, nav) }, extendableRow = { - LongCommunityHeader(baseNote = baseNote, accountViewModel = accountViewModel, nav = nav) + Column(Modifier.verticalScroll(rememberScrollState())) { + LongCommunityHeader(baseNote = baseNote, accountViewModel = accountViewModel, nav = nav) + } }, popBack = navPopBack ) @@ -698,6 +703,7 @@ fun FlexibleTopBarWithBackButton( }, actions = {} ) + Spacer(modifier = HalfVertSpacer) Divider(thickness = 0.25.dp) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 6ef5f5c5d..aca280ee8 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -23,9 +23,11 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CutCornerShape import androidx.compose.foundation.text.ClickableText +import androidx.compose.foundation.verticalScroll import androidx.compose.material.Button import androidx.compose.material.ButtonDefaults import androidx.compose.material.Divider @@ -536,7 +538,14 @@ fun CommunityHeader( ) if (expanded.value) { - LongCommunityHeader(baseNote = baseNote, lineModifier = modifier, accountViewModel = accountViewModel, nav = nav) + Column(Modifier.verticalScroll(rememberScrollState())) { + LongCommunityHeader( + baseNote = baseNote, + lineModifier = modifier, + accountViewModel = accountViewModel, + nav = nav + ) + } } } @@ -561,8 +570,25 @@ fun LongCommunityHeader( Row( lineModifier ) { + val rulesLabel = stringResource(id = R.string.rules) val summary = remember(noteState) { - noteEvent.description()?.ifBlank { null } + val subject = noteEvent.subject()?.ifEmpty { null } + val body = noteEvent.description()?.ifBlank { null } + val rules = noteEvent.rules()?.ifBlank { null } + + if (!subject.isNullOrBlank() && body?.split("\n")?.get(0)?.contains(subject) == false) { + if (rules == null) { + "## $subject\n$body" + } else { + "## $subject\n$body\n\n## $rulesLabel\n\n$rules" + } + } else { + if (rules == null) { + body + } else { + "$body\n\n$rulesLabel\n$rules" + } + } } Column( @@ -596,31 +622,6 @@ fun LongCommunityHeader( } } - val rules = remember(noteState) { - noteEvent.rules()?.ifBlank { null } - } - - rules?.let { - Row( - lineModifier - ) { - val defaultBackground = MaterialTheme.colors.background - val background = remember { - mutableStateOf(defaultBackground) - } - val tags = remember(noteEvent) { noteEvent.tags().toImmutableListOfLists() } - - TranslatableRichTextViewer( - content = it, - canPreview = false, - tags = tags, - backgroundColor = background, - accountViewModel = accountViewModel, - nav = nav - ) - } - } - Row( lineModifier, verticalAlignment = Alignment.CenterVertically diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 834c4a682..9d1c8d733 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -548,4 +548,5 @@ Copy Note ID to clipboard Created at + Rules