feat(blogs): Extended items

This commit is contained in:
sweetbread 2024-03-25 23:26:52 +03:00
parent 83759f5a37
commit 9e1e64f3fc
2 changed files with 18 additions and 4 deletions

View File

@ -99,6 +99,7 @@ class User(
class Post( class Post(
val id: Int, val id: Int,
val blogId: Int,
val authorId: Int, val authorId: Int,
val enableComments: Boolean, val enableComments: Boolean,
val numComments: Int, val numComments: Int,
@ -287,6 +288,7 @@ suspend fun getBlogposts(): ArrayList<Post> {
out.add( out.add(
Post( Post(
id = el.getString("ID").toInt(), id = el.getString("ID").toInt(),
blogId = el.getString("BLOG_ID").toInt(),
authorId = el.getString("AUTHOR_ID").toInt(), authorId = el.getString("AUTHOR_ID").toInt(),
enableComments = el.getString("ENABLE_COMMENTS") == "Y", enableComments = el.getString("ENABLE_COMMENTS") == "Y",
numComments = el.getString("NUM_COMMENTS").toInt(), numComments = el.getString("NUM_COMMENTS").toInt(),
@ -340,3 +342,7 @@ suspend fun getUser(id: Int): User {
} }
) )
} }
fun getComments(id: Int) {
}

View File

@ -3,6 +3,7 @@ package ru.sweetbread.unn.ui.composes
import android.text.util.Linkify import android.text.util.Linkify
import android.util.Log import android.util.Log
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
@ -23,6 +24,7 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.NonRestartableComposable import androidx.compose.runtime.NonRestartableComposable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
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
@ -83,6 +85,7 @@ val defUser = User(
@Composable @Composable
fun Blogposts(viewModel: PostViewModel = viewModel()) { fun Blogposts(viewModel: PostViewModel = viewModel()) {
val posts by viewModel.posts.collectAsState() val posts by viewModel.posts.collectAsState()
var extended by remember { mutableIntStateOf(0) }
LaunchedEffect(Unit) { LaunchedEffect(Unit) {
viewModel.loadPosts() viewModel.loadPosts()
@ -96,8 +99,12 @@ fun Blogposts(viewModel: PostViewModel = viewModel()) {
Modifier Modifier
.padding(8.dp) .padding(8.dp)
.clip(RoundedCornerShape(16.dp)) .clip(RoundedCornerShape(16.dp))
.background(MaterialTheme.colorScheme.secondaryContainer), .background(MaterialTheme.colorScheme.secondaryContainer)
post = it .clickable {
extended = if (extended == it.id) 0 else it.id
},
post = it,
extended == it.id
) )
} }
} }
@ -161,7 +168,7 @@ fun UserItem(modifier: Modifier = Modifier, user: User, info: String? = null) {
@Composable @Composable
@NonRestartableComposable @NonRestartableComposable
fun PostItem(modifier: Modifier = Modifier, post: Post) { fun PostItem(modifier: Modifier = Modifier, post: Post, extended: Boolean = false) {
var user: User? by remember { mutableStateOf(null) } var user: User? by remember { mutableStateOf(null) }
val processor = remember { BBProcessorFactory.getInstance().create() } val processor = remember { BBProcessorFactory.getInstance().create() }
var html: String by remember { mutableStateOf("") } var html: String by remember { mutableStateOf("") }
@ -193,7 +200,7 @@ fun PostItem(modifier: Modifier = Modifier, post: Post) {
} }
}, },
update = { update = {
it.maxLines = 25 it.maxLines = if (extended) Int.MAX_VALUE else 5
it.text = HtmlCompat.fromHtml(html, 0) it.text = HtmlCompat.fromHtml(html, 0)
} }
) )
@ -242,6 +249,7 @@ fun UserItemPreview() {
fun PostItemPreview() { fun PostItemPreview() {
val post = Post( val post = Post(
id = 154923, id = 154923,
blogId = 121212,
authorId = 165945, authorId = 165945,
enableComments = true, enableComments = true,
numComments = 0, numComments = 0,