diff --git a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/modals/SortBottomSheet.kt b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/modals/SortBottomSheet.kt index 9f70a28d7..a6b71e304 100644 --- a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/modals/SortBottomSheet.kt +++ b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/modals/SortBottomSheet.kt @@ -206,6 +206,12 @@ internal class SortBottomSheetTop( style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onBackground, ) + Spacer(modifier = Modifier.weight(1f)) + Image( + imageVector = value.toIcon(), + contentDescription = null, + colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onBackground), + ) } } } diff --git a/domain-lemmy/data/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/domain/lemmy/data/ListingType.kt b/domain-lemmy/data/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/domain/lemmy/data/ListingType.kt index 0735c3896..282d6b12c 100644 --- a/domain-lemmy/data/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/domain/lemmy/data/ListingType.kt +++ b/domain-lemmy/data/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/domain/lemmy/data/ListingType.kt @@ -1,8 +1,8 @@ package com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Domain -import androidx.compose.material.icons.filled.Newspaper +import androidx.compose.material.icons.filled.CardMembership +import androidx.compose.material.icons.filled.Cottage import androidx.compose.material.icons.filled.Public import androidx.compose.runtime.Composable import com.github.diegoberaldin.raccoonforlemmy.resources.MR @@ -27,8 +27,8 @@ fun Int.toListingType() = when (this) { } fun ListingType.toIcon() = when (this) { - ListingType.Local -> Icons.Default.Domain - ListingType.Subscribed -> Icons.Default.Newspaper + ListingType.Local -> Icons.Default.Cottage + ListingType.Subscribed -> Icons.Default.CardMembership else -> Icons.Default.Public } diff --git a/domain-lemmy/data/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/domain/lemmy/data/SortType.kt b/domain-lemmy/data/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/domain/lemmy/data/SortType.kt index 012b13ab1..22ac9702d 100644 --- a/domain-lemmy/data/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/domain/lemmy/data/SortType.kt +++ b/domain-lemmy/data/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/domain/lemmy/data/SortType.kt @@ -1,12 +1,12 @@ package com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddComment -import androidx.compose.material.icons.filled.History -import androidx.compose.material.icons.filled.LocalActivity +import androidx.compose.material.icons.filled.ElderlyWoman +import androidx.compose.material.icons.filled.Forum import androidx.compose.material.icons.filled.LocalFireDepartment +import androidx.compose.material.icons.filled.MarkUnreadChatAlt import androidx.compose.material.icons.filled.MilitaryTech -import androidx.compose.material.icons.filled.Reviews +import androidx.compose.material.icons.filled.NewReleases import androidx.compose.material.icons.filled.Rocket import androidx.compose.material.icons.filled.Thunderstorm import androidx.compose.runtime.Composable @@ -74,10 +74,10 @@ fun Int.toSortType() = when (this) { fun SortType.toIcon(): ImageVector = when (this) { SortType.Active -> Icons.Default.Rocket SortType.Hot -> Icons.Default.LocalFireDepartment - SortType.MostComments -> Icons.Default.AddComment - SortType.New -> Icons.Default.LocalActivity - SortType.NewComments -> Icons.Default.Reviews - SortType.Old -> Icons.Default.History + SortType.MostComments -> Icons.Default.Forum + SortType.New -> Icons.Default.NewReleases + SortType.NewComments -> Icons.Default.MarkUnreadChatAlt + SortType.Old -> Icons.Default.ElderlyWoman SortType.Controversial -> Icons.Default.Thunderstorm else -> Icons.Default.MilitaryTech } diff --git a/feature-home/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/feature/home/postlist/PostListViewModel.kt b/feature-home/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/feature/home/postlist/PostListViewModel.kt index b36066038..9dbc392b6 100644 --- a/feature-home/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/feature/home/postlist/PostListViewModel.kt +++ b/feature-home/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/feature/home/postlist/PostListViewModel.kt @@ -21,6 +21,7 @@ import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.PostRepo import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.SiteRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO +import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach @@ -92,6 +93,29 @@ class PostListViewModel( ) } }.launchIn(this) + + settingsRepository.currentSettings + .map { it.defaultListingType } + .distinctUntilChanged() + .onEach { listingType -> + mvi.updateState { + it.copy( + listingType = listingType.toListingType(), + ) + } + refresh() + }.launchIn(this) + settingsRepository.currentSettings + .map { it.defaultPostSortType } + .distinctUntilChanged() + .onEach { sortType -> + mvi.updateState { + it.copy( + sortType = sortType.toSortType(), + ) + } + refresh() + }.launchIn(this) } mvi.scope?.launch(Dispatchers.IO) { diff --git a/feature-search/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/feature/search/main/ExploreViewModel.kt b/feature-search/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/feature/search/main/ExploreViewModel.kt index 946bdcdf1..f5c1ef6f5 100644 --- a/feature-search/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/feature/search/main/ExploreViewModel.kt +++ b/feature-search/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/feature/search/main/ExploreViewModel.kt @@ -26,6 +26,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO import kotlinx.coroutines.Job import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach @@ -83,6 +84,28 @@ class ExploreViewModel( ) } }.launchIn(this) + settingsRepository.currentSettings + .map { it.defaultListingType } + .distinctUntilChanged() + .onEach { listingType -> + mvi.updateState { + it.copy( + listingType = listingType.toListingType(), + ) + } + refresh() + }.launchIn(this) + settingsRepository.currentSettings + .map { it.defaultPostSortType } + .distinctUntilChanged() + .onEach { sortType -> + mvi.updateState { + it.copy( + sortType = sortType.toSortType(), + ) + } + refresh() + }.launchIn(this) } if (mvi.uiState.value.results.isEmpty()) {