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(
val id: Int,
val blogId: Int,
val authorId: Int,
val enableComments: Boolean,
val numComments: Int,
@ -287,6 +288,7 @@ suspend fun getBlogposts(): ArrayList<Post> {
out.add(
Post(
id = el.getString("ID").toInt(),
blogId = el.getString("BLOG_ID").toInt(),
authorId = el.getString("AUTHOR_ID").toInt(),
enableComments = el.getString("ENABLE_COMMENTS") == "Y",
numComments = el.getString("NUM_COMMENTS").toInt(),
@ -339,4 +341,8 @@ 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.util.Log
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@ -23,6 +24,7 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.NonRestartableComposable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
@ -83,6 +85,7 @@ val defUser = User(
@Composable
fun Blogposts(viewModel: PostViewModel = viewModel()) {
val posts by viewModel.posts.collectAsState()
var extended by remember { mutableIntStateOf(0) }
LaunchedEffect(Unit) {
viewModel.loadPosts()
@ -96,8 +99,12 @@ fun Blogposts(viewModel: PostViewModel = viewModel()) {
Modifier
.padding(8.dp)
.clip(RoundedCornerShape(16.dp))
.background(MaterialTheme.colorScheme.secondaryContainer),
post = it
.background(MaterialTheme.colorScheme.secondaryContainer)
.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
@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) }
val processor = remember { BBProcessorFactory.getInstance().create() }
var html: String by remember { mutableStateOf("") }
@ -193,7 +200,7 @@ fun PostItem(modifier: Modifier = Modifier, post: Post) {
}
},
update = {
it.maxLines = 25
it.maxLines = if (extended) Int.MAX_VALUE else 5
it.text = HtmlCompat.fromHtml(html, 0)
}
)
@ -242,6 +249,7 @@ fun UserItemPreview() {
fun PostItemPreview() {
val post = Post(
id = 154923,
blogId = 121212,
authorId = 165945,
enableComments = true,
numComments = 0,