fix: community and user stats info (#467)

* fix: show count instead of score in PersonAggregates on Lemmy 0.19

* fix: community stats loading

* enhancement: improve info screens layout

closes #464
This commit is contained in:
Diego Beraldin 2024-01-21 09:16:31 +01:00 committed by GitHub
parent dfb0a8504f
commit 4e4c5103ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 45 additions and 49 deletions

View File

@ -160,8 +160,8 @@ internal fun PersonView.toModel() = person.toModel().copy(
)
internal fun PersonAggregates.toModel() = UserScoreModel(
postScore = postScore ?: 0,
commentScore = commentScore ?: 0,
postScore = postScore ?: postCount,
commentScore = commentScore ?: commentCount,
)
internal fun PostView.toModel() = post.toModel().copy(

View File

@ -23,7 +23,6 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
@ -73,43 +72,40 @@ class CommunityInfoScreen(
modifier = Modifier
.background(MaterialTheme.colorScheme.background)
.padding(
top = Spacing.s,
top = Spacing.m,
start = Spacing.s,
end = Spacing.s,
bottom = Spacing.m,
)
.fillMaxHeight(0.9f)
.fillMaxWidth(),
verticalArrangement = Arrangement.spacedBy(Spacing.s),
) {
BottomSheetHandle(modifier = Modifier.align(Alignment.CenterHorizontally))
Scaffold(
topBar = {
TopAppBar(
title = {
Row {
Spacer(modifier = Modifier.weight(1f))
Text(
text = buildString {
append(uiState.community.name)
if (uiState.community.host.isNotEmpty()) {
append("@${uiState.community.host}")
}
},
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.onBackground,
)
Spacer(modifier = Modifier.weight(1f))
}
})
},
Row(
modifier = Modifier.padding(top = Spacing.s),
) {
Spacer(modifier = Modifier.weight(1f))
Text(
text = buildString {
append(uiState.community.name)
if (uiState.community.host.isNotEmpty()) {
append("@${uiState.community.host}")
}
},
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.onBackground,
)
Spacer(modifier = Modifier.weight(1f))
}
}
) { paddingValues ->
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
.padding(top = Spacing.m),
.padding(top = Spacing.xs, start = Spacing.m, end = Spacing.m),
verticalArrangement = Arrangement.spacedBy(Spacing.s),
horizontalAlignment = Alignment.CenterHorizontally,
) {

View File

@ -32,8 +32,12 @@ class CommunityInfoViewModel(
}.launchIn(this)
if (uiState.value.moderators.isEmpty()) {
val community = communityRepository.get(id = communityId)
if (community != null) {
mvi.updateState { it.copy(community = community) }
}
val moderators = communityRepository.getModerators(
id = communityId
id = communityId,
)
mvi.updateState { it.copy(moderators = moderators) }
}

View File

@ -170,7 +170,7 @@ class InstanceInfoScreen(
.pullRefresh(pullRefreshState),
) {
LazyColumn(
modifier = Modifier.padding(top = Spacing.m),
modifier = Modifier.padding(top = Spacing.xs, start = Spacing.m, end = Spacing.m),
state = listState,
verticalArrangement = Arrangement.spacedBy(Spacing.xs),
) {

View File

@ -21,7 +21,6 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
@ -82,36 +81,33 @@ class UserInfoScreen(
)
.fillMaxHeight(0.9f)
.fillMaxWidth(),
verticalArrangement = Arrangement.spacedBy(Spacing.s),
) {
BottomSheetHandle(modifier = Modifier.align(Alignment.CenterHorizontally))
Scaffold(
topBar = {
TopAppBar(
title = {
Row {
Spacer(modifier = Modifier.weight(1f))
Text(
text = buildString {
append(uiState.user.name)
if (uiState.user.host.isNotEmpty()) {
append("@${uiState.user.host}")
}
},
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.onBackground,
)
Spacer(modifier = Modifier.weight(1f))
}
})
},
Row(
modifier = Modifier.padding(top = Spacing.s),
) {
Spacer(modifier = Modifier.weight(1f))
Text(
text = buildString {
append(uiState.user.name)
if (uiState.user.host.isNotEmpty()) {
append("@${uiState.user.host}")
}
},
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.onBackground,
)
Spacer(modifier = Modifier.weight(1f))
}
}
) { paddingValues ->
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
.padding(top = Spacing.m, start = Spacing.m, end = Spacing.m),
.padding(top = Spacing.xs, start = Spacing.m, end = Spacing.m),
verticalArrangement = Arrangement.spacedBy(Spacing.s),
) {
item {