fix: create comment screen field (#805)

This commit is contained in:
Diego Beraldin 2024-05-08 13:56:55 +02:00 committed by GitHub
parent 685599807e
commit e0f28b4ae9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,16 +1,18 @@
package com.github.diegoberaldin.raccoonforlemmy.unit.createcomment package com.github.diegoberaldin.raccoonforlemmy.unit.createcomment
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
@ -38,6 +40,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
@ -88,7 +91,7 @@ class CreateCommentScreen(
private val editedCommentId: Long? = null, private val editedCommentId: Long? = null,
private val initialText: String? = null, private val initialText: String? = null,
) : Screen { ) : Screen {
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class)
@Composable @Composable
override fun Content() { override fun Content() {
val model = getScreenModel<CreateCommentMviModel> { val model = getScreenModel<CreateCommentMviModel> {
@ -218,9 +221,89 @@ class CreateCommentScreen(
} }
) )
}, },
bottomBar = { ) { padding ->
Box(
modifier = Modifier
.padding(padding)
.consumeWindowInsets(padding)
.imePadding()
.navigationBarsPadding()
.fillMaxSize(),
) {
// reference post or comment
Box(
modifier = Modifier
.align(Alignment.TopCenter)
.fillMaxWidth()
.verticalScroll(rememberScrollState())
) {
val referenceModifier = Modifier.padding(
horizontal = Spacing.s,
vertical = Spacing.xxs,
)
val originalComment = uiState.originalComment
val originalPost = uiState.originalPost
if (originalComment != null) {
CommentCard(
modifier = referenceModifier,
comment = originalComment,
preferNicknames = uiState.preferNicknames,
hideIndent = true,
voteFormat = uiState.voteFormat,
autoLoadImages = uiState.autoLoadImages,
showScores = uiState.showScores,
options = buildList {
add(
Option(
OptionId.SeeRaw,
LocalXmlStrings.current.postActionSeeRaw
)
)
},
onOptionSelected = {
rawContent = originalComment
},
)
HorizontalDivider(modifier = Modifier.padding(vertical = Spacing.interItem))
} else if (originalPost != null) {
PostCard(
modifier = referenceModifier,
postLayout = if (uiState.postLayout == PostLayout.Card) {
uiState.postLayout
} else {
PostLayout.Full
},
fullHeightImage = uiState.fullHeightImages,
fullWidthImage = uiState.fullWidthImages,
post = originalPost,
blurNsfw = false,
includeFullBody = true,
voteFormat = uiState.voteFormat,
autoLoadImages = uiState.autoLoadImages,
preferNicknames = uiState.preferNicknames,
showScores = uiState.showScores,
options = buildList {
add(
Option(
OptionId.SeeRaw,
LocalXmlStrings.current.postActionSeeRaw
)
)
},
onOptionSelected = {
rawContent = originalPost
},
)
}
}
// form fields
Column( Column(
verticalArrangement = Arrangement.spacedBy(Spacing.xs) modifier = Modifier
.align(Alignment.BottomCenter)
.background(MaterialTheme.colorScheme.background)
.fillMaxWidth(),
verticalArrangement = Arrangement.spacedBy(Spacing.xs),
) { ) {
SectionSelector( SectionSelector(
titles = listOf( titles = listOf(
@ -317,7 +400,11 @@ class CreateCommentScreen(
Text( Text(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(horizontal = Spacing.m), .padding(
start = Spacing.m,
end = Spacing.m,
bottom = Spacing.s,
),
text = buildString { text = buildString {
append(LocalXmlStrings.current.postReplySourceAccount) append(LocalXmlStrings.current.postReplySourceAccount)
append(" ") append(" ")
@ -334,76 +421,6 @@ class CreateCommentScreen(
) )
} }
} }
},
) { padding ->
val referenceModifier = Modifier.padding(
horizontal = Spacing.s,
vertical = Spacing.xxs,
)
LazyColumn(
modifier = Modifier
.padding(padding)
.consumeWindowInsets(padding)
.imePadding()
.navigationBarsPadding(),
) {
item {
val originalComment = uiState.originalComment
val originalPost = uiState.originalPost
if (originalComment != null) {
CommentCard(
modifier = referenceModifier,
comment = originalComment,
preferNicknames = uiState.preferNicknames,
hideIndent = true,
voteFormat = uiState.voteFormat,
autoLoadImages = uiState.autoLoadImages,
showScores = uiState.showScores,
options = buildList {
add(
Option(
OptionId.SeeRaw,
LocalXmlStrings.current.postActionSeeRaw
)
)
},
onOptionSelected = {
rawContent = originalComment
},
)
HorizontalDivider(modifier = Modifier.padding(vertical = Spacing.interItem))
} else if (originalPost != null) {
PostCard(
modifier = referenceModifier,
postLayout = if (uiState.postLayout == PostLayout.Card) {
uiState.postLayout
} else {
PostLayout.Full
},
fullHeightImage = uiState.fullHeightImages,
fullWidthImage = uiState.fullWidthImages,
post = originalPost,
blurNsfw = false,
includeFullBody = true,
voteFormat = uiState.voteFormat,
autoLoadImages = uiState.autoLoadImages,
preferNicknames = uiState.preferNicknames,
showScores = uiState.showScores,
options = buildList {
add(
Option(
OptionId.SeeRaw,
LocalXmlStrings.current.postActionSeeRaw
)
)
},
onOptionSelected = {
rawContent = originalPost
},
)
}
}
}
} }
if (uiState.loading) { if (uiState.loading) {
@ -464,3 +481,4 @@ class CreateCommentScreen(
} }
} }
} }
}