refactor: remove ResultTypeBottomSheet (#45)

This commit is contained in:
akesi seli 2024-10-26 18:57:19 +02:00 committed by GitHub
parent 5fcf303a50
commit ff09f089d7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 88 additions and 123 deletions

View File

@ -1,110 +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.Spacer
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.Icon
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
import com.livefast.eattrash.raccoonforlemmy.core.utils.safeImePadding
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.SearchResultType
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.toIcon
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.toReadableName
class ResultTypeBottomSheet(
val values: List<SearchResultType> =
listOf(
SearchResultType.Posts,
SearchResultType.Communities,
SearchResultType.Comments,
SearchResultType.Users,
SearchResultType.Urls,
),
val screenKey: String,
) : 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,
).safeImePadding(),
verticalArrangement = Arrangement.spacedBy(Spacing.s),
) {
BottomSheetHeader(LocalStrings.current.exploreResultTypeTitle)
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.ChangeSearchResultType(
value = value,
screenKey = screenKey,
),
)
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,
)
Spacer(modifier = Modifier.weight(1f))
Icon(
imageVector = value.toIcon(),
contentDescription = null,
tint = MaterialTheme.colorScheme.onBackground,
)
}
}
}
}
}
}
}

View File

@ -54,7 +54,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.ResultTypeBottomSheet
import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.SelectLanguageDialog
import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.SelectNumberBottomSheet
import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.SelectNumberBottomSheetType
@ -71,6 +70,7 @@ import com.livefast.eattrash.raccoonforlemmy.core.utils.datetime.getPrettyDurati
import com.livefast.eattrash.raccoonforlemmy.core.utils.fs.getFileSystemManager
import com.livefast.eattrash.raccoonforlemmy.core.utils.toLocalDp
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.ListingType
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.SearchResultType
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.toIcon
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.toReadableName
import com.livefast.eattrash.raccoonforlemmy.unit.configurenavbar.ConfigureNavBarScreen
@ -111,7 +111,8 @@ class AdvancedSettingsScreen : Screen {
var zombieModeDurationBottomSheetOpened by remember { mutableStateOf(false) }
var inboxCheckDurationBottomSheetOpened by remember { mutableStateOf(false) }
var inboxTypeBottomSheetOpened by remember { mutableStateOf(false) }
var exploreListingTypeBottomSheet by remember { mutableStateOf(false) }
var exploreListingTypeBottomSheetOpened by remember { mutableStateOf(false) }
var exploreResultTypeBottomSheetOpened by remember { mutableStateOf(false) }
LaunchedEffect(model) {
model.effects
@ -268,11 +269,7 @@ class AdvancedSettingsScreen : Screen {
title = LocalStrings.current.settingsDefaultExploreResultType,
value = uiState.defaultExploreResultType.toReadableName(),
onTap = {
val sheet =
ResultTypeBottomSheet(
screenKey = "advancedSettings",
)
navigationCoordinator.showBottomSheet(sheet)
exploreResultTypeBottomSheetOpened = true
},
)
@ -281,7 +278,7 @@ class AdvancedSettingsScreen : Screen {
title = LocalStrings.current.settingsDefaultExploreType,
value = uiState.defaultExploreType.toReadableName(),
onTap = {
exploreListingTypeBottomSheet = true
exploreListingTypeBottomSheetOpened = true
},
)
if (uiState.isLogged) {
@ -790,7 +787,7 @@ class AdvancedSettingsScreen : Screen {
)
}
if (exploreListingTypeBottomSheet) {
if (exploreListingTypeBottomSheetOpened) {
val values =
buildList {
if (uiState.isLogged) {
@ -816,7 +813,7 @@ class AdvancedSettingsScreen : Screen {
)
},
onSelected = { index ->
exploreListingTypeBottomSheet = false
exploreListingTypeBottomSheetOpened = false
if (index != null) {
notificationCenter.send(
NotificationCenterEvent.ChangeFeedType(
@ -829,6 +826,45 @@ class AdvancedSettingsScreen : Screen {
)
}
if (exploreResultTypeBottomSheetOpened) {
val values =
listOf(
SearchResultType.Posts,
SearchResultType.Communities,
SearchResultType.Comments,
SearchResultType.Users,
SearchResultType.Urls,
)
CustomModalBottomSheet(
title = LocalStrings.current.inboxListingTypeTitle,
items =
values.map { value ->
CustomModalBottomSheetItem(
label = value.toReadableName(),
trailingContent = {
Icon(
modifier = Modifier.size(IconSize.m),
imageVector = value.toIcon(),
contentDescription = null,
tint = MaterialTheme.colorScheme.onBackground,
)
},
)
},
onSelected = { index ->
exploreResultTypeBottomSheetOpened = false
if (index != null) {
notificationCenter.send(
NotificationCenterEvent.ChangeSearchResultType(
value = values[index],
screenKey = "advancedSettings",
),
)
}
},
)
}
settingsContent?.also { content ->
fileSystemManager.writeToFile(
mimeType = SETTINGS_MIME_TYPE,

View File

@ -67,7 +67,6 @@ import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.PostCardPlace
import com.livefast.eattrash.raccoonforlemmy.core.commonui.lemmyui.UserItem
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.ResultTypeBottomSheet
import com.livefast.eattrash.raccoonforlemmy.core.commonui.modals.SortBottomSheet
import com.livefast.eattrash.raccoonforlemmy.core.l10n.messages.LocalStrings
import com.livefast.eattrash.raccoonforlemmy.core.navigation.TabNavigationSection
@ -82,6 +81,7 @@ import com.livefast.eattrash.raccoonforlemmy.core.utils.compose.onClick
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.ListingType
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.PostModel
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.SearchResult
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.SearchResultType
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.readableHandle
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.toIcon
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.toInt
@ -153,6 +153,7 @@ class ExploreScreen(
}
val searchFocusRequester = remember { FocusRequester() }
var listingTypeBottomSheetOpened by remember { mutableStateOf(false) }
var resultTypeBottomSheetOpened by remember { mutableStateOf(false) }
LaunchedEffect(navigationCoordinator) {
navigationCoordinator.onDoubleTabSelection
@ -214,8 +215,7 @@ class ExploreScreen(
navigationCoordinator.showBottomSheet(sheet)
},
onSelectResultTypeType = {
val sheet = ResultTypeBottomSheet(screenKey = notificationEventKey)
navigationCoordinator.showBottomSheet(sheet)
resultTypeBottomSheetOpened = true
},
onHamburgerTapped = {
scope.launch {
@ -802,5 +802,44 @@ class ExploreScreen(
},
)
}
if (resultTypeBottomSheetOpened) {
val values =
listOf(
SearchResultType.Posts,
SearchResultType.Communities,
SearchResultType.Comments,
SearchResultType.Users,
SearchResultType.Urls,
)
CustomModalBottomSheet(
title = LocalStrings.current.inboxListingTypeTitle,
items =
values.map { value ->
CustomModalBottomSheetItem(
label = value.toReadableName(),
trailingContent = {
Icon(
modifier = Modifier.size(IconSize.m),
imageVector = value.toIcon(),
contentDescription = null,
tint = MaterialTheme.colorScheme.onBackground,
)
},
)
},
onSelected = { index ->
resultTypeBottomSheetOpened = false
if (index != null) {
notificationCenter.send(
NotificationCenterEvent.ChangeSearchResultType(
value = values[index],
screenKey = notificationEventKey,
),
)
}
},
)
}
}
}