fix: instance info screen community list (#709)

This commit is contained in:
Diego Beraldin 2024-04-21 09:50:43 +02:00 committed by GitHub
parent f14eeaefb9
commit 35e60cac79
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 16 deletions

View File

@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
@ -166,14 +165,13 @@ class InstanceInfoScreen(
.pullRefresh(pullRefreshState),
) {
LazyColumn(
modifier = Modifier.padding(top = Spacing.xs, start = Spacing.m, end = Spacing.m),
modifier = Modifier.padding(top = Spacing.xs, start = Spacing.s, end = Spacing.s),
state = listState,
verticalArrangement = Arrangement.spacedBy(Spacing.xs),
verticalArrangement = Arrangement.spacedBy(Spacing.s),
) {
item {
CustomizedContent(ContentFontClass.Title) {
Column(
modifier = Modifier.padding(horizontal = Spacing.s),
verticalArrangement = Arrangement.spacedBy(Spacing.s),
horizontalAlignment = Alignment.CenterHorizontally,
) {
@ -191,21 +189,25 @@ class InstanceInfoScreen(
color = MaterialTheme.colorScheme.onBackground,
)
}
Spacer(modifier = Modifier.height(Spacing.xxxs))
Text(
modifier = Modifier.fillMaxWidth(),
text = LocalXmlStrings.current.instanceDetailCommunities,
style = MaterialTheme.typography.titleMedium,
color = MaterialTheme.colorScheme.onBackground,
)
}
}
}
item {
Text(
modifier = Modifier.fillMaxWidth(),
text = LocalXmlStrings.current.instanceDetailCommunities,
style = MaterialTheme.typography.titleMedium,
color = MaterialTheme.colorScheme.onBackground,
)
}
if (uiState.communities.isEmpty()) {
items(5) {
CommunityItemPlaceholder()
}
}
items(uiState.communities) { community ->
CommunityItem(
modifier = Modifier.onClick(
@ -217,8 +219,10 @@ class InstanceInfoScreen(
autoLoadImages = uiState.autoLoadImages,
preferNicknames = uiState.preferNicknames,
showSubscribers = true,
noPadding = true,
)
}
item {
if (!uiState.loading && !uiState.refreshing && uiState.canFetchMore) {
model.reduce(InstanceInfoMviModel.Intent.LoadNextPage)

View File

@ -5,7 +5,6 @@ import com.github.diegoberaldin.raccoonforlemmy.core.architecture.DefaultMviMode
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenter
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterEvent
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SearchResult
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.CommunityRepository
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.GetSortTypesUseCase
@ -99,13 +98,13 @@ class InstanceInfoViewModel(
page = currentPage,
sortType = currentState.sortType,
limit = 50,
).filterIsInstance<SearchResult.Community>().let {
).let {
if (refreshing) {
it
} else {
// prevents accidental duplication
it.filter { c1 ->
currentState.communities.none { c2 -> c1.model.id == c2.id }
currentState.communities.none { c2 -> c1.id == c2.id }
}
}
}
@ -113,8 +112,8 @@ class InstanceInfoViewModel(
currentPage++
}
val itemsToAdd = itemList.filter { e ->
e.model.instanceUrl == url
}.map { it.model }
e.instanceUrl == url
}
updateState {
it.copy(
communities = if (refreshing) {