mirror of
https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy.git
synced 2025-02-09 07:48:44 +01:00
refactor: remove ResultTypeBottomSheet (#45)
This commit is contained in:
parent
5fcf303a50
commit
ff09f089d7
@ -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,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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,
|
||||
|
@ -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,
|
||||
),
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user