diff --git a/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/LikedTypeSheet.kt b/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/LikedTypeSheet.kt deleted file mode 100644 index 279ef2a15..000000000 --- a/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/LikedTypeSheet.kt +++ /dev/null @@ -1,106 +0,0 @@ -package com.livefast.eattrash.raccoonforlemmy.core.commonui.modals - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import cafe.adriel.voyager.core.screen.Screen -import com.livefast.eattrash.raccoonforlemmy.core.appearance.theme.CornerSize -import com.livefast.eattrash.raccoonforlemmy.core.appearance.theme.Spacing -import com.livefast.eattrash.raccoonforlemmy.core.commonui.components.BottomSheetHeader -import com.livefast.eattrash.raccoonforlemmy.core.l10n.messages.LocalStrings -import com.livefast.eattrash.raccoonforlemmy.core.navigation.di.getNavigationCoordinator -import com.livefast.eattrash.raccoonforlemmy.core.notifications.NotificationCenterEvent -import com.livefast.eattrash.raccoonforlemmy.core.notifications.di.getNotificationCenter -import com.livefast.eattrash.raccoonforlemmy.core.utils.compose.onClick - -class LikedTypeSheet : Screen { - @Composable - override fun Content() { - val navigationCoordinator = remember { getNavigationCoordinator() } - val notificationCenter = remember { getNotificationCenter() } - - Surface { - Column( - modifier = - Modifier - .windowInsetsPadding(WindowInsets.navigationBars) - .padding( - top = Spacing.s, - start = Spacing.s, - end = Spacing.s, - bottom = Spacing.m, - ), - verticalArrangement = Arrangement.spacedBy(Spacing.s), - ) { - BottomSheetHeader(LocalStrings.current.filteredContentsType) - Column( - modifier = Modifier.fillMaxWidth().verticalScroll(rememberScrollState()), - verticalArrangement = Arrangement.spacedBy(Spacing.xxs), - ) { - Row( - modifier = - Modifier - .clip(RoundedCornerShape(CornerSize.xxl)) - .onClick( - onClick = { - notificationCenter.send( - NotificationCenterEvent.ChangedLikedType(true), - ) - navigationCoordinator.hideBottomSheet() - }, - ).padding( - horizontal = Spacing.s, - vertical = Spacing.s, - ).fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = LocalStrings.current.actionUpvote, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onBackground, - ) - } - Row( - modifier = - Modifier - .fillMaxWidth() - .padding( - horizontal = Spacing.s, - vertical = Spacing.s, - ).onClick( - onClick = { - notificationCenter.send( - NotificationCenterEvent.ChangedLikedType(false), - ) - navigationCoordinator.hideBottomSheet() - }, - ), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = LocalStrings.current.actionDownvote, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onBackground, - ) - } - } - } - } - } -} diff --git a/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/PostLayoutBottomSheet.kt b/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/PostLayoutBottomSheet.kt deleted file mode 100644 index 9a6bfb072..000000000 --- a/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/PostLayoutBottomSheet.kt +++ /dev/null @@ -1,93 +0,0 @@ -package com.livefast.eattrash.raccoonforlemmy.core.commonui.modals - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import cafe.adriel.voyager.core.screen.Screen -import com.livefast.eattrash.raccoonforlemmy.core.appearance.data.PostLayout -import com.livefast.eattrash.raccoonforlemmy.core.appearance.data.toReadableName -import com.livefast.eattrash.raccoonforlemmy.core.appearance.theme.CornerSize -import com.livefast.eattrash.raccoonforlemmy.core.appearance.theme.Spacing -import com.livefast.eattrash.raccoonforlemmy.core.commonui.components.BottomSheetHeader -import com.livefast.eattrash.raccoonforlemmy.core.l10n.messages.LocalStrings -import com.livefast.eattrash.raccoonforlemmy.core.navigation.di.getNavigationCoordinator -import com.livefast.eattrash.raccoonforlemmy.core.notifications.NotificationCenterEvent -import com.livefast.eattrash.raccoonforlemmy.core.notifications.di.getNotificationCenter -import com.livefast.eattrash.raccoonforlemmy.core.utils.compose.onClick - -class PostLayoutBottomSheet : Screen { - @Composable - override fun Content() { - val navigationCoordinator = remember { getNavigationCoordinator() } - val notificationCenter = remember { getNotificationCenter() } - - Surface { - Column( - modifier = - Modifier - .windowInsetsPadding(WindowInsets.navigationBars) - .padding( - top = Spacing.s, - start = Spacing.s, - end = Spacing.s, - bottom = Spacing.m, - ), - verticalArrangement = Arrangement.spacedBy(Spacing.s), - ) { - BottomSheetHeader(LocalStrings.current.settingsPostLayout) - val values = - listOf( - PostLayout.Card, - PostLayout.Compact, - PostLayout.Full, - ) - Column( - modifier = Modifier.fillMaxWidth().verticalScroll(rememberScrollState()), - verticalArrangement = Arrangement.spacedBy(Spacing.xxs), - ) { - for (value in values) { - Row( - modifier = - Modifier - .clip(RoundedCornerShape(CornerSize.xxl)) - .onClick( - onClick = { - notificationCenter.send( - NotificationCenterEvent.ChangePostLayout(value), - ) - navigationCoordinator.hideBottomSheet() - }, - ).padding( - horizontal = Spacing.s, - vertical = Spacing.s, - ).fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = value.toReadableName(), - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onBackground, - ) - } - } - } - } - } - } -} diff --git a/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/ReportListTypeSheet.kt b/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/ReportListTypeSheet.kt deleted file mode 100644 index 7bcd9ffa8..000000000 --- a/core/commonui/modals/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/modals/ReportListTypeSheet.kt +++ /dev/null @@ -1,107 +0,0 @@ -package com.livefast.eattrash.raccoonforlemmy.core.commonui.modals - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.windowInsetsPadding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import cafe.adriel.voyager.core.screen.Screen -import com.livefast.eattrash.raccoonforlemmy.core.appearance.theme.CornerSize -import com.livefast.eattrash.raccoonforlemmy.core.appearance.theme.Spacing -import com.livefast.eattrash.raccoonforlemmy.core.commonui.components.BottomSheetHeader -import com.livefast.eattrash.raccoonforlemmy.core.l10n.messages.LocalStrings -import com.livefast.eattrash.raccoonforlemmy.core.navigation.di.getNavigationCoordinator -import com.livefast.eattrash.raccoonforlemmy.core.notifications.NotificationCenterEvent -import com.livefast.eattrash.raccoonforlemmy.core.notifications.di.getNotificationCenter -import com.livefast.eattrash.raccoonforlemmy.core.utils.compose.onClick - -class ReportListTypeSheet : Screen { - @Composable - override fun Content() { - val navigationCoordinator = remember { getNavigationCoordinator() } - val notificationCenter = remember { getNotificationCenter() } - - Surface { - Column( - modifier = - Modifier - .windowInsetsPadding(WindowInsets.navigationBars) - .padding( - top = Spacing.s, - start = Spacing.s, - end = Spacing.s, - bottom = Spacing.m, - ), - verticalArrangement = Arrangement.spacedBy(Spacing.s), - ) { - BottomSheetHeader(LocalStrings.current.reportListTypeTitle) - Column( - modifier = Modifier.fillMaxWidth().verticalScroll(rememberScrollState()), - verticalArrangement = Arrangement.spacedBy(Spacing.xxs), - ) { - Row( - modifier = - Modifier - .padding( - horizontal = Spacing.s, - vertical = Spacing.s, - ).fillMaxWidth() - .onClick( - onClick = { - notificationCenter.send( - NotificationCenterEvent.ChangeReportListType(true), - ) - navigationCoordinator.hideBottomSheet() - }, - ), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = LocalStrings.current.reportListTypeUnresolved, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onBackground, - ) - } - Row( - modifier = - Modifier - .clip(RoundedCornerShape(CornerSize.xxl)) - .onClick( - onClick = { - notificationCenter.send( - NotificationCenterEvent.ChangeReportListType(false), - ) - navigationCoordinator.hideBottomSheet() - }, - ).fillMaxWidth() - .padding( - horizontal = Spacing.s, - vertical = Spacing.s, - ), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = LocalStrings.current.reportListTypeAll, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onBackground, - ) - } - } - } - } - } -} diff --git a/unit/configurecontentview/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/configurecontentview/ConfigureContentViewScreen.kt b/unit/configurecontentview/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/configurecontentview/ConfigureContentViewScreen.kt index 502345484..6dfda545d 100644 --- a/unit/configurecontentview/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/configurecontentview/ConfigureContentViewScreen.kt +++ b/unit/configurecontentview/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/configurecontentview/ConfigureContentViewScreen.kt @@ -46,7 +46,6 @@ import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.SettingsRow import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.SettingsSwitchRow import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.CustomModalBottomSheet import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.CustomModalBottomSheetItem -import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.PostLayoutBottomSheet import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.SelectNumberBottomSheet import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.SelectNumberBottomSheetType import com.livefast.eattrash.raccoonforlemmy.core.l10n.messages.LocalStrings @@ -68,6 +67,7 @@ class ConfigureContentViewScreen : Screen { val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(topAppBarState) val scrollState = rememberScrollState() var voteFormatBottomSheetOpened by remember { mutableStateOf(false) } + var postLayoutBottomSheetOpened by remember { mutableStateOf(false) } Scaffold( modifier = @@ -185,8 +185,7 @@ class ConfigureContentViewScreen : Screen { title = LocalStrings.current.settingsPostLayout, value = uiState.postLayout.toReadableName(), onTap = { - val sheet = PostLayoutBottomSheet() - navigationCoordinator.showBottomSheet(sheet) + postLayoutBottomSheetOpened = true }, ) @@ -309,7 +308,7 @@ class ConfigureContentViewScreen : Screen { VoteFormat.Hidden, ) CustomModalBottomSheet( - title = LocalStrings.current.inboxListingTypeTitle, + title = LocalStrings.current.settingsVoteFormat, items = values.map { value -> CustomModalBottomSheetItem(label = value.toReadableName()) @@ -324,5 +323,29 @@ class ConfigureContentViewScreen : Screen { }, ) } + + if (postLayoutBottomSheetOpened) { + val values = + listOf( + PostLayout.Card, + PostLayout.Compact, + PostLayout.Full, + ) + CustomModalBottomSheet( + title = LocalStrings.current.settingsPostLayout, + items = + values.map { value -> + CustomModalBottomSheetItem(label = value.toReadableName()) + }, + onSelected = { index -> + postLayoutBottomSheetOpened = false + if (index != null) { + notificationCenter.send( + NotificationCenterEvent.ChangePostLayout(value = values[index]), + ) + } + }, + ) + } } } diff --git a/unit/filteredcontents/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/filteredcontents/FilteredContentsScreen.kt b/unit/filteredcontents/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/filteredcontents/FilteredContentsScreen.kt index ffd25da6b..6c10a71a3 100644 --- a/unit/filteredcontents/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/filteredcontents/FilteredContentsScreen.kt +++ b/unit/filteredcontents/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/filteredcontents/FilteredContentsScreen.kt @@ -74,10 +74,13 @@ import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.OptionId import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.PostCard import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.PostCardPlaceholder import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.di.getFabNestedScrollConnection -import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.LikedTypeSheet +import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.CustomModalBottomSheet +import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.CustomModalBottomSheetItem import com.livefast.eattrash.raccoonforlemmy.core.l10n.messages.LocalStrings import com.livefast.eattrash.raccoonforlemmy.core.navigation.di.getDrawerCoordinator import com.livefast.eattrash.raccoonforlemmy.core.navigation.di.getNavigationCoordinator +import com.livefast.eattrash.raccoonforlemmy.core.notifications.NotificationCenterEvent +import com.livefast.eattrash.raccoonforlemmy.core.notifications.di.getNotificationCenter import com.livefast.eattrash.raccoonforlemmy.core.persistence.data.ActionOnSwipe import com.livefast.eattrash.raccoonforlemmy.core.persistence.di.getSettingsRepository import com.livefast.eattrash.raccoonforlemmy.core.utils.compose.onClick @@ -118,6 +121,7 @@ class FilteredContentsScreen( val settings by settingsRepository.currentSettings.collectAsState() val lazyListState = rememberLazyListState() val detailOpener = remember { getDetailOpener() } + val notificationCenter = remember { getNotificationCenter() } var rawContent by remember { mutableStateOf(null) } val themeRepository = remember { getThemeRepository() } val upVoteColor by themeRepository.upVoteColor.collectAsState() @@ -142,6 +146,7 @@ class FilteredContentsScreen( with(LocalDensity.current) { WindowInsets.navigationBars.getBottom(this).toDp() } + var likedTypeBottomSheetOpened by remember { mutableStateOf(false) } LaunchedEffect(model) { model.effects @@ -232,7 +237,7 @@ class FilteredContentsScreen( modifier = Modifier.onClick( onClick = { - navigationCoordinator.showBottomSheet(LikedTypeSheet()) + likedTypeBottomSheetOpened = true }, ), text = text, @@ -991,67 +996,90 @@ class FilteredContentsScreen( } } } + } - if (rawContent != null) { - when (val content = rawContent) { - is PostModel -> { - RawContentDialog( - title = content.title, - publishDate = content.publishDate, - updateDate = content.updateDate, - url = content.originalUrl, - text = content.text, - upVotes = content.upvotes, - downVotes = content.downvotes, - onDismiss = { - rawContent = null - }, - onQuote = { quotation -> - rawContent = null - if (quotation != null) { - detailOpener.openReply( - originalPost = content, - initialText = - buildString { - append("> ") - append(quotation) - append("\n\n") - }, - ) - } - }, - ) - } + if (rawContent != null) { + when (val content = rawContent) { + is PostModel -> { + RawContentDialog( + title = content.title, + publishDate = content.publishDate, + updateDate = content.updateDate, + url = content.originalUrl, + text = content.text, + upVotes = content.upvotes, + downVotes = content.downvotes, + onDismiss = { + rawContent = null + }, + onQuote = { quotation -> + rawContent = null + if (quotation != null) { + detailOpener.openReply( + originalPost = content, + initialText = + buildString { + append("> ") + append(quotation) + append("\n\n") + }, + ) + } + }, + ) + } - is CommentModel -> { - RawContentDialog( - publishDate = content.publishDate, - updateDate = content.updateDate, - text = content.text, - upVotes = content.upvotes, - downVotes = content.downvotes, - onDismiss = { - rawContent = null - }, - onQuote = { quotation -> - rawContent = null - if (quotation != null) { - detailOpener.openReply( - originalPost = PostModel(id = content.postId), - originalComment = content, - initialText = - buildString { - append("> ") - append(quotation) - append("\n\n") - }, - ) - } - }, - ) - } + is CommentModel -> { + RawContentDialog( + publishDate = content.publishDate, + updateDate = content.updateDate, + text = content.text, + upVotes = content.upvotes, + downVotes = content.downvotes, + onDismiss = { + rawContent = null + }, + onQuote = { quotation -> + rawContent = null + if (quotation != null) { + detailOpener.openReply( + originalPost = PostModel(id = content.postId), + originalComment = content, + initialText = + buildString { + append("> ") + append(quotation) + append("\n\n") + }, + ) + } + }, + ) } } } + + if (likedTypeBottomSheetOpened) { + val values = + listOf( + LocalStrings.current.actionUpvote, + LocalStrings.current.actionDownvote, + ) + CustomModalBottomSheet( + title = LocalStrings.current.inboxListingTypeTitle, + items = + values.map { value -> + CustomModalBottomSheetItem(label = value) + }, + onSelected = { index -> + likedTypeBottomSheetOpened = false + if (index != null) { + notificationCenter.send( + NotificationCenterEvent.ChangedLikedType(value = index == 0), + ) + } + }, + ) + } } } diff --git a/unit/reportlist/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/reportlist/ReportListScreen.kt b/unit/reportlist/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/reportlist/ReportListScreen.kt index 86b06d0f0..4624810c5 100644 --- a/unit/reportlist/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/reportlist/ReportListScreen.kt +++ b/unit/reportlist/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/unit/reportlist/ReportListScreen.kt @@ -54,9 +54,12 @@ import com.livefast.eattrash.raccoonforlemmy.core.commonui.components.SwipeActio import com.livefast.eattrash.raccoonforlemmy.core.commonui.detailopener.api.getDetailOpener import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.Option import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.OptionId -import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.ReportListTypeSheet +import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.CustomModalBottomSheet +import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.CustomModalBottomSheetItem import com.livefast.eattrash.raccoonforlemmy.core.l10n.messages.LocalStrings import com.livefast.eattrash.raccoonforlemmy.core.navigation.di.getNavigationCoordinator +import com.livefast.eattrash.raccoonforlemmy.core.notifications.NotificationCenterEvent +import com.livefast.eattrash.raccoonforlemmy.core.notifications.di.getNotificationCenter import com.livefast.eattrash.raccoonforlemmy.core.persistence.di.getSettingsRepository import com.livefast.eattrash.raccoonforlemmy.core.utils.compose.onClick import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.CommentReportModel @@ -81,12 +84,14 @@ class ReportListScreen( val topAppBarState = rememberTopAppBarState() val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(topAppBarState) val navigationCoordinator = remember { getNavigationCoordinator() } + val notificationCenter = remember { getNotificationCenter() } var rawContent by remember { mutableStateOf(null) } val settingsRepository = remember { getSettingsRepository() } val settings by settingsRepository.currentSettings.collectAsState() val lazyListState = rememberLazyListState() val detailOpener = remember { getDetailOpener() } val defaultResolveColor = MaterialTheme.colorScheme.secondary + var reportTypeBottomSheetOpened by remember { mutableStateOf(false) } LaunchedEffect(model) { model.effects @@ -137,8 +142,7 @@ class ReportListScreen( modifier = Modifier.onClick( onClick = { - val sheet = ReportListTypeSheet() - navigationCoordinator.showBottomSheet(sheet) + reportTypeBottomSheetOpened = true }, ), text = text, @@ -489,5 +493,28 @@ class ReportListScreen( } } } + + if (reportTypeBottomSheetOpened) { + val values = + listOf( + LocalStrings.current.reportListTypeUnresolved, + LocalStrings.current.reportListTypeAll, + ) + CustomModalBottomSheet( + title = LocalStrings.current.reportListTypeTitle, + items = + values.map { value -> + CustomModalBottomSheetItem(label = value) + }, + onSelected = { index -> + reportTypeBottomSheetOpened = false + if (index != null) { + notificationCenter.send( + NotificationCenterEvent.ChangeReportListType(unresolvedOnly = index == 0), + ) + } + }, + ) + } } }